本文介绍了STM32 RTOS计时器中断和线程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在处理一个项目,在该项目中,我需要从Tim中断中执行2段代码。其中一个的优先级略高于另一个,两者都将在两个不同的计时器上运行(当然不是在相同的时间间隔)。由于两个计时器成比例(一个为1 KHz,一个为8 GHz),两个将同时触发。
因为我已经将RTOS中间件用于其他目的(优先级也比这些低得多的线程),所以我想为每个例程创建一个线程。
然而,看看cubeMX是如何生成代码的,我甚至想知道这是否可能。
我可以从任何线程启动/停止这些计时器,但只有一个HAL_TIM_PerodElapsedCallback,您通常会使用如下语句填充它:
if(hTim->;实例==TIM2)
我的假设正确吗?无论计时器从哪个线程启动,TIM回调都将始终发生在RTOS环境的外部?
如果是这样的话,有什么更好的策略来实现接近我所需的东西?
干杯
推荐答案
中断将触发。但请记住:
- 如果要使用任何
...fromISR
RTOS函数,其优先级(不是RTOS优先级,因为它们是无关的)必须低于SVC中断 - 它们不会同时发生(因为您只有一个核心)
这篇关于STM32 RTOS计时器中断和线程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!