你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F4 freeRTOS 停止模式,休眠时间计算问题

[复制链接]
nbh520 提问时间:2017-10-20 16:47 /
目前正在使用STM32F4系列芯片,操作系统选择freeRTOS。

在freeRTOS低功耗休眠时,选择停止模式,降低功耗,停止模式唤醒后,需要计算休眠时间,同步至freeRTOS时间。


现在的问题就是如何计算停止模式期间的休眠时间,由于停止模式下,MCU内核、高速时钟停止,所有MCU的定时器、计数器(时钟源使用的是高速时钟)均无法使用,而芯片的参考手册中表明MCU没有使用低速时钟源的计数器。

想请教,诸位大神有没有高招,指点一下小弟。
收藏 评论4 发布时间:2017-10-20 16:47

举报

4个回答
nbh520 回答时间:2017-10-23 18:11:26

为了实现低速定时器的功能,我想到了一个解决方案:
1、将通用定时器的时钟源配置为外部时钟模式 2:外部触发输入 (ETR)
2、利用MCU的时钟输出功能将LSE时钟输出到MCO引脚
3、将MCO引脚连接至定时器的外部输入ETR

这样做的目的是为了避免在停止模式下,高速时钟关闭的情况下,无法给TIMER提供时钟,这个方法理论上是可行的,解决了定时器计数器的时钟问题。
但是我在测试验证的时候发现,MCU进入停止模式后,计数器也停止了,还是无法使用。

诸位大神看看,有没有什么想法,大家交流交流。
lqh-414236 回答时间:2017-10-24 16:30:54

stm32三种低功耗模式

stm32三种低功耗模式

三种低功耗的模式,你说的是停机模式,很明显HSI和HSE都关闭了!你说的方案根本行不通!
如果用睡眠模式,还以搞定。如果非得用停止,那就必须借助其他外设来计时,比如时钟芯片等。

评分

参与人数 1ST金币 +3 收起 理由
zero99 + 3

查看全部评分

nbh520 回答时间:2017-10-24 18:21:47
lqh-414236 发表于 2017-10-24 16:30
三种低功耗的模式,你说的是停机模式,很明显HSI和HSE都关闭了!你说的方案根本行不通!
如果用睡眠模式, ...

是的,虽然将定时器的时钟切换为外部时钟,但那只是用于提供计数,定时器的硬件框架还是需要高速时钟支持,才能正常使用。
至于说外接时钟芯片来获取停机模式下的休眠时间,也有考虑,只不过市面上的时钟芯片大都数提供RTC时间,具体到毫秒级甚至微秒级的时钟芯片很少,且价格很贵。
再者说,外接一个时钟芯片来做这样的功能,总感觉这样的设计,怎么看,怎么奇葩。
shuihehe 回答时间:2018-8-31 14:54:26
用了rtos 还想低功耗 建议你看看tickless

评分

参与人数 1蝴蝶豆 +1 收起 理由
zero99 + 1

查看全部评分

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版