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

[复制链接]
 楼主| heweibig 发表于 2021-11-20 21:59 | 显示全部楼层 |阅读模式
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也中断回调,此时这个函数就要重入了,不知道能不能支持
supernan 发表于 2021-11-20 22:06 | 显示全部楼层
如果两个都触发调用的一个,应该当时就在里面执行了吧
dengdc 发表于 2021-11-20 22:08 | 显示全部楼层
在里面可以直接就进入if了,因为触发是 同一个中断源,同一个被调函数,应该不会重新触发
 楼主| heweibig 发表于 2021-11-20 22:10 | 显示全部楼层
比如说我在Systimer++;时,优先级高的tim4中断了,进入了回调函数,执行tim4这块的内容,执行完了还会回到Systimer++继续执行么
 楼主| heweibig 发表于 2021-11-20 22:12 | 显示全部楼层
触发的中断源不一样吧,一个是tim3,一个是tim4
 楼主| heweibig 发表于 2021-11-20 22:16 | 显示全部楼层
触发的中断源不一样吧,一个是tim3,一个是tim4.
tian111 发表于 2021-11-20 22:17 | 显示全部楼层
应该是可以的
yszong 发表于 2021-11-20 22:20 | 显示全部楼层
看中断函数怎么写啊
elife 发表于 2021-11-20 22:21 | 显示全部楼层
当然可以了,只要在if外用的都是局部变量。比如htim。每次进来的都不是同一个。
juventus9554 发表于 2021-11-20 22:22 | 显示全部楼层
看楼主自己怎么处理他们的关系啊
tian111 发表于 2021-11-20 22:25 | 显示全部楼层
为什么不写成两个函数?
supernan 发表于 2021-11-20 22:29 | 显示全部楼层
请问 什么是重入
james03 发表于 2021-11-20 22:30 | 显示全部楼层
可以的
 楼主| heweibig 发表于 2021-11-20 22:31 | 显示全部楼层

嗯,我再好好缕一缕吧,有了好消息及时通知大家
coshi 发表于 2021-12-11 10:50 | 显示全部楼层
是说嵌套调用吗
zljiu 发表于 2021-12-11 10:51 | 显示全部楼层
可以这样做的
wiba 发表于 2021-12-11 10:53 | 显示全部楼层
没有必要写成俩函数吧
tfqi 发表于 2021-12-11 10:55 | 显示全部楼层
会不会弄的中断函数太大了啊
sadicy 发表于 2021-12-13 10:04 | 显示全部楼层
重入的意思是嵌套么
您需要登录后才可以回帖 登录 | 注册

本版积分规则

869

主题

13089

帖子

7

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