打印
[STM32F1]

STM32F103RE使用FreeRTOS的Tickless低功耗模式的问题

[复制链接]
842|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
caoenq|  楼主 | 2019-12-31 10:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
各位大佬好,STM32F103RE使用FreeRTOS的Tickless低功耗模式(sleep模式)时遇到一个问题:就是每隔1ms单片机就会从sleep模式下唤醒一次。
程序中共有2个任务,第一个任务每隔500ms翻转一次IO口(PB12)电平;第二个任务每隔1000ms唤醒执行一次,2个任务如图1所示。
我的理解正常的逻辑是:单片机进入tickless模式(sleep模式)后,应该500ms左右唤醒一次是正常的,可是试验结果无情的打了我的脸,1ms竟然就唤醒一次,测量波形如图2所示测得的PA2脚电平翻转(PA2的电平在这个PostSleepProcessing(uint32_t *ulExpectedIdleTime)函数内部进行翻转,如图3。这个函数是单品从Sleep模式醒来后就会执行一次)。
程序中没有开启其他外设中断,请各位大佬帮忙分析一下原因,感激不尽。

2个任务.jpg (50.13 KB )

图1:程序中的2个任务

图1:程序中的2个任务

微信图片_20191231095918.jpg (432.62 KB )

图2:测量的PA2脚电平翻转图

图2:测量的PA2脚电平翻转图

微信截图_20191231094653.jpg (38.1 KB )

图3:单片机唤醒后执行的函数

图3:单片机唤醒后执行的函数

使用特权

评论回复
沙发
dalarang| | 2019-12-31 10:20 | 只看该作者
没注意过freeRTOS的低功耗模式,但是freeRTOS默认开启1ms的SysTick中断做时间片基准,你看看是不是这个问题

使用特权

评论回复
板凳
caoenq|  楼主 | 2019-12-31 10:52 | 只看该作者
dalarang 发表于 2019-12-31 10:20
没注意过freeRTOS的低功耗模式,但是freeRTOS默认开启1ms的SysTick中断做时间片基准,你看看是不是这个问题 ...

感谢回复,freertos是默认开启1ms的时基,但是进入sleep模式之前,已经关闭了时基了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

1360

帖子

11

粉丝