FreeRTOS tickless STM32 STOP模式实现可能性
本帖最后由 suozhang 于 2018-11-16 15:38 编辑1、FreeRTOS 源码中已经实现了tickless 模式 STM32配合 sleep 模式实现,功耗在mA级别,具体功耗看下图表格。sleep模式好处是外设功能正常,GPIO/UART/等外设不会受到 FreeRTOS的 tickless模式影响 。
2、在STM32的STOP模式下,保持RAM不变的情况下,利用低功耗模式下的自动唤醒(AWU)(RTC可以在不需要依赖外部中断的情况下唤醒低功耗模式下的微控制器(自动唤醒模式)。RTC提供一个可编程的时间基数,用于周期性从停止或待机模式下唤醒),实现FreeRTOS的tickless模式,功耗在 uA 级别,详细看下表,缺点是,在休眠期间,外设不能正常工作,恢复工作后,需要重新初始化使用的外设。
是否可行,等待万能的网友实现?
---所长,2018年11月9日
2018年11月15日16:07:26,实现RTC 作为 FreeRTOS 时钟源 ,请注意,vTaskDelay( 1024 ); //1024 才是 1S 钟
2018年11月16日14:44:52, 实现 利用 低功耗模式下的自动唤醒(AWU) STOP模式 实现 FreeRTOS tickless 模式,这个 定时有问题 ,因为 外部 32.768K 不稳定,楼下有个内部晶振的 !! 这种情况还不如直接创建个电源管理,tickless模式下用sleep,想stop再进入stop,没必要tickless中实现stop吧, 谢谢楼主分享。 不错,支持下。 本帖最后由 suozhang 于 2018-11-12 14:54 编辑
qq57379550 发表于 2018-11-9 15:33
这种情况还不如直接创建个电源管理,tickless模式下用sleep,想stop再进入stop,没必要tickless中实现stop ...
你这样 就不能很方便的使用FreeRTOS 的定时器 以及 taskdelay了! 我发现 实现 有点问题,就是 ,RTC 没办法精准的实现 1mS 定时 ,预分频 设置 32.768 才是 1ms 定时,如果设置 31 的 话 ,误差……………… suozhang 发表于 2018-11-12 14:53
我发现 实现 有点问题,就是 ,RTC 没办法精准的实现 1mS 定时 ,预分频 设置 32.768 才是 1ms 定时,如果 ...
RTC没弄好,在stm8L实现ms级 唤醒,使用亚秒,stm32应该也是可以, qq57379550 发表于 2018-11-12 17:52
RTC没弄好,在stm8L实现ms级 唤醒,使用亚秒,stm32应该也是可以,
嗯 多谢 可以配置 FreeRTOS 的 tick 为亚秒,即
#define configTICK_RATE_HZ1024
:lol suozhang 发表于 2018-11-13 09:20
嗯 多谢 可以配置 FreeRTOS 的 tick 为亚秒,即
#define configTICK_RATE_HZ1024
。。。。。。 使用低功耗产品还需要每毫秒钟吗?很多都是使用的10ms一次唤醒 在水一方 发表于 2018-11-13 11:51
使用低功耗产品还需要每毫秒钟吗?很多都是使用的10ms一次唤醒
这个1024 不是1mS 唤醒一次!!! 本帖最后由 suozhang 于 2018-11-16 15:10 编辑
我 的 代码是 这样的void vLedTask( void *pvParameters )
{
for(;;)
{
//PC13 LED1
bsp_LedToggle(1);
vTaskDelay( 1024 ); //1024 才是 1S 钟
}
}
应该 是 1S高电流 ,1S 低 电流 ,发现 RTC AWU 唤醒 还是有问题 我得 查下 ,结果 是 高电流 2S ,低电流 1S ,这…………
估计外部32.768K 晶振有问题, 现在 换成 内部晶振 OK……
这个模式下。。实测功耗是多少? shampoo 发表于 2018-11-19 14:32
这个模式下。。实测功耗是多少?
大哥,看13楼的截图啊,没有线程跑的话 ,14uA 楼主厉害,这个应用有时还真会有。 suozhang 发表于 2018-11-16 15:31
估计外部32.768K 晶振有问题, 现在 换成 内部晶振 OK……
这是啥东西测试的 睡眠模式降低系统主频跟停机模式也差不了多少的, One_Zero 发表于 2019-6-5 17:08
这是啥东西测试的
小壁虎 suozhang 发表于 2018-11-12 14:53
我发现 实现 有点问题,就是 ,RTC 没办法精准的实现 1mS 定时 ,预分频 设置 32.768 才是 1ms 定时,如果 ...
很好资料
谢谢分享。。。
页:
[1]