搜索
查看: 5241|回复: 4

[求助] STM32F4 freeRTOS 停止模式,休眠时间计算问题

[复制链接]

该用户从未签到

6

主题

16

帖子

2

蝴蝶豆

中级会员

最后登录
2018-11-6
发表于 2017-10-20 16:47:02 | 显示全部楼层 |阅读模式
目前正在使用STM32F4系列芯片,操作系统选择freeRTOS。

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


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

想请教,诸位大神有没有高招,指点一下小弟。
回复

使用道具 举报

该用户从未签到

6

主题

16

帖子

2

蝴蝶豆

中级会员

最后登录
2018-11-6
 楼主| 发表于 2017-10-23 18:11:26 | 显示全部楼层

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

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

诸位大神看看,有没有什么想法,大家交流交流。
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

33

帖子

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 2017-10-24 16:30:54 | 显示全部楼层

stm32三种低功耗模式

stm32三种低功耗模式

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

16

帖子

2

蝴蝶豆

中级会员

最后登录
2018-11-6
 楼主| 发表于 2017-10-24 18:21:47 | 显示全部楼层
lqh-414236 发表于 2017-10-24 16:30
三种低功耗的模式,你说的是停机模式,很明显HSI和HSE都关闭了!你说的方案根本行不通!
如果用睡眠模式, ...

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

使用道具 举报

该用户从未签到

8

主题

70

帖子

13

蝴蝶豆

金牌会员

最后登录
2019-9-16
发表于 2018-8-31 14:54:26 | 显示全部楼层
用了rtos 还想低功耗 建议你看看tickless

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-19 21:18 , Processed in 1.188750 second(s), 41 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表