[STM32F4]

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

[复制链接]
851|10
手机看帖
扫描二维码
随时随地手机跟帖
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

粉丝