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

FreeRTOS进入低功耗STOP2模式

[复制链接]
kylongmu 发布时间:2018-1-31 14:33
本帖最后由 kylongmu 于 2018-1-31 14:36 编辑
% Q4 M6 n# N$ s$ }
8 k+ V) Z+ U" {. Y" y! v前提条件:
* i  q& m( M, t5 W5 Y! w# U1.低功耗STOP2模式仅消耗2uA电流,想要电池系统长时间运行必须采用,而STOP2模式又是低功耗中唯一能保存SRAM数据不丢失的最低功耗模式。
2 S  K9 i1 L$ O% o) p6 j2.FreeRTOS能给开发带来极大的便利性,其采用时间片轮询来实现线程切换,当OS进入IDLE态时CPU处于空闲。
5 \3 n6 ~: C: k8 C" v; c实现以上两点结合就能在FreeRTOS进入低功耗STOP2模式。& a  d0 k' S9 M( E/ m3 Q/ G
实现方法(CubeMX):: U7 \: O7 G; n9 {+ y# `  H" R
freertos1.jpg
7 E2 b; _  m2 Y8 v使能USE_TICKLESS_IDLE! E/ a, i& D" d+ f$ N
此时软件生成2个函数代码:
- c$ |5 Z* X% D  V
  1. /* USER CODE BEGIN PREPOSTSLEEP */
    + o% Q5 c7 h4 v0 {5 k. A9 A
  2. __weak void PreSleepProcessing(uint32_t *ulExpectedIdleTime)
    . Q9 S7 d8 z1 w# \; z0 D
  3. {% _4 j' a0 s2 ~1 u/ o0 W
  4.         /* place for user code */
    # d) N. t  F  y6 P  {  p: Q
  5.         *ulExpectedIdleTime = 0;
    2 s* A/ B6 X( U# \  D
  6.         /*Enter to sleep Mode using the HAL function HAL_PWR_EnterSLEEPMode with WFI instruction*/. ]3 h" N/ N1 w" w" r/ w$ @
  7.         HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);  //Enter Stop mode with WFE instruction
    - E" c: q1 Y+ ?8 N; Y; h+ E5 Q. z
  8. }3 L" Z& B% y2 X9 D

  9. & R8 u0 T8 d! _& g
  10. __weak void PostSleepProcessing(uint32_t *ulExpectedIdleTime)4 C1 ~3 W" G0 E; Q% P, ?7 p' m
  11. {! |% i- u+ q4 r# L
  12. /* place for user code */3 A7 \" D. R0 Q) F/ V. ?
  13.         SystemClock_Config();. r6 f1 S# d* k/ j& D" T7 H/ @
  14. }
    ' C% Z8 q. p" V, O7 E
  15. /* USER CODE END PREPOSTSLEEP */$ k# Z' n0 H$ O' Q$ F
复制代码
修改为以上,*ulExpectedIdleTime = 0;抑制OS的tick中断,HAL_PWREx_EnterSTOP2Mode进入STOP2模式,SystemClock_Config在退出STOP2模式时重新初始化时钟配置。% B$ y6 \/ b- E  K
----------------------------------以上修改后FreeRTOS即配置好进入STOP2的代码-------------------------" i4 x! A8 m1 D7 T3 p
进入方法:
9 X3 X+ Q8 A" f/ d线程中调用OsDelay(100),所有线程都要调用,这样OS才能进入IDLE态,一旦进入IDLE态OS自动调用STOP2模式进入低功耗模式。
7 ?8 C( \! ]0 F退出方法:
5 e* \6 w- F- \8 E freertos2.jpg , y0 ?. S: |! g) s% x% ~8 I. M" d
手册中给出的Wake UP source都可以退出STOP2,一般配置RTC用外部LSE时钟能自己控制进入低功耗时间。
4 H% ^) O$ [" }. e/ c------------------------------------------------------------------------------------------------------------------------
0 x# N% d9 K* o2 P. I; c退出后你的OS依然在欢快的奔跑!SRAM数据依然保持!
9 v% T' b7 Q4 |( e0 p# P1 x

评分

参与人数 1 ST金币 +2 收起 理由
MrJiu + 2 很给力!

查看全部评分

赞 收藏 7 评论12 发布时间:2018-1-31 14:33

举报

12个回答
zero99 回答时间:2018-1-31 14:53:42
学习了,支持一下已汇总到1月技术原创
6 j  J$ @4 l& a% x; Shttps://www.stmcu.org.cn/module/forum/thread-614550-1-1.html2 A2 x, O: R% o0 u! _; K3 j
creep 回答时间:2018-1-31 15:14:35
学习了,支持一下
STMWoodData 回答时间:2018-1-31 16:39:59
提示: 作者被禁止或删除 内容自动屏蔽
MrJiu 回答时间:2018-2-1 11:24:31
必须收藏!!!
wolfgang 回答时间:2018-2-2 03:51:00
收藏了。
grc521 回答时间:2018-2-7 10:34:14
好东西,支持一个~~~~~~~~~~~
hrbowenvip-3422 回答时间:2018-9-5 11:54:30
你好有源代码吗??
hrbowenvip-3422 回答时间:2018-9-5 11:56:26
可能给我发下工程源代码吗??QQ:382661235
hpdell 回答时间:2018-9-20 14:44:10
学习了
wangzhuqiang 回答时间:2018-11-8 20:43:22
楼主有没有源码工程,学习一下(1227926728@qq.com)
switcc 回答时间:2019-11-13 11:32:20
从stop2出来之后要做软件定时器的修复,这里不用,但是我再自己工程里试了stop,有点问题3 O% q: o. k) Z+ w# b
Ankky 回答时间:2019-12-12 13:07:15
非常的nice。

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版