61、运行 FreeRTOS:软件定时器与低功耗管理

运行 FreeRTOS:软件定时器与低功耗管理

1. FreeRTOS 中断优先级管理

在 FreeRTOS 中,某些内核允许基于优先级选择性地屏蔽中断。BASEPRI 寄存器可通过屏蔽所有优先级低于给定值的 IRQ,选择性地禁用 ISR 执行。FreeRTOS 利用此机制,在挂起低优先级中断的同时,允许执行假定不可中断的高优先级中断。

这意味着并非所有 ISR 都能安全调用 FreeRTOS API,只有具有给定(或更低)优先级的 ISR 才能安全调用。我们可通过在 FreeRTOSConfig.h 文件中定义 configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 宏来设置此最大优先级。CubeMX 通常会自动将最大优先级设置为 5。使用 CubeMX 启用 IRQ 时,要确保调用 FreeRTOS 函数的 ISR 优先级等于或低于 configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY

不过,对于 STM32F0/L0 系列 MCU,尽管 CubeMX 生成的项目中定义了该宏,但由于这些系列的 FreeRTOS 端口使用 PRIMASK 寄存器屏蔽所有中断(Cortex - M0/0 + 内核无法选择性禁用 IRQ),该宏会被忽略。

另外,FreeRTOS 要求将滴答中断(与用作内核时基发生器的定时器相关的 IRQ)设置为最低可能的中断,STM32F0/L0 系列为 7,其他 MCU 为 15。 FreeRTOSConfig.h 文件中的 config

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值