打印
[STM32F4]

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

[复制链接]
1045|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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++继续执行么

使用特权

评论回复
5
heweibig|  楼主 | 2021-11-20 22:12 | 只看该作者
触发的中断源不一样吧,一个是tim3,一个是tim4

使用特权

评论回复
6
heweibig|  楼主 | 2021-11-20 22:16 | 只看该作者
触发的中断源不一样吧,一个是tim3,一个是tim4.

使用特权

评论回复
7
tian111| | 2021-11-20 22:17 | 只看该作者
应该是可以的

使用特权

评论回复
8
yszong| | 2021-11-20 22:20 | 只看该作者
看中断函数怎么写啊

使用特权

评论回复
9
elife| | 2021-11-20 22:21 | 只看该作者
当然可以了,只要在if外用的都是局部变量。比如htim。每次进来的都不是同一个。

使用特权

评论回复
10
juventus9554| | 2021-11-20 22:22 | 只看该作者
看楼主自己怎么处理他们的关系啊

使用特权

评论回复
11
tian111| | 2021-11-20 22:25 | 只看该作者
为什么不写成两个函数?

使用特权

评论回复
12
supernan| | 2021-11-20 22:29 | 只看该作者
请问 什么是重入

使用特权

评论回复
13
james03| | 2021-11-20 22:30 | 只看该作者
可以的

使用特权

评论回复
14
heweibig|  楼主 | 2021-11-20 22:31 | 只看该作者

嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

评论回复
15
coshi| | 2021-12-11 10:50 | 只看该作者
是说嵌套调用吗

使用特权

评论回复
16
zljiu| | 2021-12-11 10:51 | 只看该作者
可以这样做的

使用特权

评论回复
17
wiba| | 2021-12-11 10:53 | 只看该作者
没有必要写成俩函数吧

使用特权

评论回复
18
tfqi| | 2021-12-11 10:55 | 只看该作者
会不会弄的中断函数太大了啊

使用特权

评论回复
19
sadicy| | 2021-12-13 10:04 | 只看该作者
重入的意思是嵌套么

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

869

主题

13089

帖子

7

粉丝