timer - STM32 RTOS定时器中断和线程
问题描述
我正在做一个项目,我需要在 TIM 中断中执行 2 段代码。其中一个的优先级略高于另一个,并且两者都将在 2 个不同的计时器上运行(当然不是在同一时间间隔)。由于两个定时器与另一个定时器成正比(一个是 1KHz,一个是 8Khz),两者都会同时触发。
由于我已经将 RTOS 中间件用于其他目的(优先级也比这些低得多的线程),我正在考虑为每个这些例程创建一个线程。
但是,看看 cubeMX 如何生成代码,我什至想知道这是否可能。
我可以从任何线程启动/停止这些计时器,但只有一个 HAL_TIM_PeriodElapsedCallback,您通常使用如下 if 语句填充:
if (htim->Instance == TIM2)
我是否正确地假设,无论计时器从哪个线程启动,TIM 回调总是发生在 RTOS 环境的“外部”?
如果是这样,实现接近我需要的东西的更好策略是什么?
干杯
解决方案
会触发中断。但要记住:
...fromISR
如果您想使用任何RTOS 功能,它的优先级(不是 RTOS 优先级,因为它们不相关)必须低于 SVC 中断- 它们不会同时发生(因为你只有一个核心)
推荐阅读
- python - Python 3.x 的最低版本 RH
- python - 是否有可能让 python PyDoc 模块返回一个包含内容的字符串而不是仅仅打印它?
- php - 如何在 Codeigniter 中连接 mssql?
- errbit - nil 的未定义方法“each”:errbit 上的 NilClass 错误
- android - Jackson LocalDate 反序列化错误仅在 release-APK
- google-bigquery - 在时间戳字段上查询按天分区的 BigQuery 表
- flutter - 如何在 Flutter WebView 中隐藏键盘
- javascript - 如何将 Jquery 数据获取到谷歌饼图?
- javascript - 无论如何要使用 [Openlayers] 导出地图上的选定区域吗?
- python - AWS IoT Core - AWSIoTExceptions.subscribeTimeoutException