[STM32F4] hal的中断回调函数可以重入吗

[复制链接]
 楼主| jheng 发表于 2019-11-21 13:35 | 显示全部楼层 |阅读模式
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if(htim==(&TIM3_Handler))
    {
               TaskRemarks();
                Systimer++;
                DostartTiming0++;
                DostartTiming1++;
                DostartTiming2++;
                DostartTiming3++;

               
    }
       
        if(htim==(&htim4)){
                Key_Scan();
                ConLight();
        }       
}
当定时器3中断的回调的时候,定时器4也中断回调,此时这个函数就要重入了,不知道能不能支持
dongnanxibei 发表于 2019-11-21 14:11 | 显示全部楼层
如果两个都触发调用的一个,应该当时就在里面执行了吧
dongnanxibei 发表于 2019-11-21 14:12 | 显示全部楼层
在里面可以直接就进入if了,因为触发是 同一个中断源,同一个被调函数,应该不会重新触发,而是直接在里面就可以进行相关的判断。
 楼主| jheng 发表于 2019-11-21 16:57 | 显示全部楼层
dongnanxibei 发表于 2019-11-21 14:12
在里面可以直接就进入if了,因为触发是 同一个中断源,同一个被调函数,应该不会重新触发,而是直接在里面 ...

比如说我在Systimer++;时,优先级高的tim4中断了,进入了回调函数,执行tim4这块的内容,执行完了还会回到Systimer++继续执行么
 楼主| jheng 发表于 2019-11-21 16:58 | 显示全部楼层
dongnanxibei 发表于 2019-11-21 14:12
在里面可以直接就进入if了,因为触发是 同一个中断源,同一个被调函数,应该不会重新触发,而是直接在里面 ...

触发的中断源不一样吧,一个是tim3,一个是tim4
 楼主| jheng 发表于 2019-11-21 16:59 | 显示全部楼层
dongnanxibei 发表于 2019-11-21 14:12
在里面可以直接就进入if了,因为触发是 同一个中断源,同一个被调函数,应该不会重新触发,而是直接在里面 ...

触发的中断源不一样吧,一个是tim3,一个是tim4.
heimaojingzhang 发表于 2019-12-10 14:03 | 显示全部楼层
应该是可以的
guanjiaer 发表于 2019-12-10 14:04 | 显示全部楼层
看中断函数怎么写啊
观海 发表于 2019-12-10 14:09 | 显示全部楼层
看楼主自己怎么处理他们的关系啊
kingkits 发表于 2019-12-10 14:15 | 显示全部楼层
为什么不写成两个函数?
八层楼 发表于 2019-12-10 14:42 | 显示全部楼层
请问 什么是重入
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

98

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部