搜索

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

[复制链接]
545|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 | 显示全部楼层
请问 什么是重入

使用特权

评论回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

本版热帖

本版活跃用户

优质原创写原创,赢大奖

编辑推荐

  • 1 火星国务卿 得到打赏 ¥393.00
  • 2 呐咯密密 得到打赏 ¥365.00
  • 3 kk的回忆 得到打赏 ¥360.01
  • 4 Gavin3389 得到打赏 ¥311.00
  • 5 jinglixixi 得到打赏 ¥220.00
  • 6 神圣雅诗人 得到打赏 ¥200.00
  • 7 小叶三千 得到打赏 ¥200.00
  • 8 xyz549040622 得到打赏 ¥110.00
  • 9 linghz 得到打赏 ¥110.00
  • 10 qjp1988113 得到打赏 ¥106.00
在线客服 快速回复 返回顶部 返回列表