在STM32上使用FreeRTOS的Tickless(停止模式)

在STM32上使用FreeRTOS的Tickless(停止模式)

RTOS的Tickless功能就是当程序运行在空闲任务中时,就进入低功耗模式,这个低功耗可以是普通的睡眠模式,也可以是停止模式。RTOS在进入空闲任务前,会计算出将要在空闲任务里跑多久,然后进入到空闲任务里就设置多久触发中断的定时器,从设置定时器到定时器产生中断这个时间段就可以进入低功耗模式。这就是RTOS的Tickless原理。

1.打开低功耗定时器LPTIM1,使用默认配置即可,最后打开NVIC中断开关。
在STM32上使用FreeRTOS的Tickless(停止模式)_第1张图片
2.LPTIM1的时钟源选择LSE或LSI,STM32的停止模式下,LSE和LSI还仍在工作。
在STM32上使用FreeRTOS的Tickless(停止模式)_第2张图片
3.勾上FreeRTOS,并在USE_TICKLESS_IDLE中选择用户自定义模式。
在STM32上使用FreeRTOS的Tickless(停止模式)_第3张图片
4.FreeRTOS的时钟节拍由LPTIM1定时器代替SysTick,停止模式下SysTick
是无法工作的。
在STM32上使用FreeRTOS的Tickless(停止模式)_第4张图片
5.初始化时关闭SysTick,并开启LPTIM1以1ms为周期产生中断。
在STM32上使用FreeRTOS的Tickless(停止模式)_第5张图片
6.烧写程序到板子上,因为这个板子上还有其他外设,功耗肯定是大于1mA的,但整个板子是非常凉快没有发热。实际STM32的功耗应该是uA级别的,大约5uA到20uA这样。另外板子运行时的热成像图:可见板子基本和环境温度差不多,而旁边的ST-Link,虽然是STM32F103C8T6,但温度仍高很多。
在STM32上使用FreeRTOS的Tickless(停止模式)_第6张图片

最后留下工程:
链接:https://pan.baidu.com/s/1XRu_ds-sRxSJG_nd-hpszg
提取码:oh4k

你可能感兴趣的:(stm32,单片机,arm)