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

FreeRTOS进入低功耗STOP2模式

[复制链接]
kylongmu 发布时间:2018-1-31 14:33
本帖最后由 kylongmu 于 2018-1-31 14:36 编辑
# e" L- w- A7 w( J% ~6 i* {. s
8 ~, \- q, F/ `前提条件:0 e" e; S* f8 O: u( P
1.低功耗STOP2模式仅消耗2uA电流,想要电池系统长时间运行必须采用,而STOP2模式又是低功耗中唯一能保存SRAM数据不丢失的最低功耗模式。+ D6 N. d2 X- j5 s9 C4 Y: z: N
2.FreeRTOS能给开发带来极大的便利性,其采用时间片轮询来实现线程切换,当OS进入IDLE态时CPU处于空闲。& u1 m- W' z7 L4 r5 g" z
实现以上两点结合就能在FreeRTOS进入低功耗STOP2模式。
' x& P% C% y% B& j) q- D! ?实现方法(CubeMX):
, p- N9 Q# T5 o! f8 c5 @ freertos1.jpg 6 c, a; n  n2 R) _( f
使能USE_TICKLESS_IDLE: [$ ~/ a' o+ Z3 d0 S
此时软件生成2个函数代码:; u. ?. l9 @5 n( k  M! a% G' y
  1. /* USER CODE BEGIN PREPOSTSLEEP */4 S8 X% V! D. Q; n/ L0 {3 g
  2. __weak void PreSleepProcessing(uint32_t *ulExpectedIdleTime)- \# W$ g- |6 y3 J8 m1 q& _
  3. {
    1 Y+ A' F. M! y: G8 t& x
  4.         /* place for user code */  F9 E/ k- V- s
  5.         *ulExpectedIdleTime = 0;
    * f& z' V+ x) O, ]4 P" F# N
  6.         /*Enter to sleep Mode using the HAL function HAL_PWR_EnterSLEEPMode with WFI instruction*/
    4 s. h+ ]) M  K3 X' ]& d
  7.         HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);  //Enter Stop mode with WFE instruction! I) ^. r/ }2 A* K/ G
  8. }" l+ b, x4 C5 ]8 K8 o5 R
  9. ) }+ ^, X# t9 b" u3 V
  10. __weak void PostSleepProcessing(uint32_t *ulExpectedIdleTime)
    0 O8 L3 Q5 y& B+ ^. n
  11. {, t  e# V& u9 j1 y* O+ T
  12. /* place for user code */
    5 Q- g3 r% ]$ E* J0 x  O1 z
  13.         SystemClock_Config();
    " q! Z! E5 h: m
  14. }
    9 Y2 M: O# |  t' u. B. u8 s
  15. /* USER CODE END PREPOSTSLEEP */
    - z% [& w/ z$ N; g+ b1 x
复制代码
修改为以上,*ulExpectedIdleTime = 0;抑制OS的tick中断,HAL_PWREx_EnterSTOP2Mode进入STOP2模式,SystemClock_Config在退出STOP2模式时重新初始化时钟配置。/ b& U% h: C/ [, u( L: s
----------------------------------以上修改后FreeRTOS即配置好进入STOP2的代码-------------------------
8 q5 Y+ G" L# x. Y0 c进入方法:  ]5 z. Y, V! \7 w5 K$ v
线程中调用OsDelay(100),所有线程都要调用,这样OS才能进入IDLE态,一旦进入IDLE态OS自动调用STOP2模式进入低功耗模式。& K) d3 G/ g2 r( F) c/ p) r* n) A
退出方法:
6 m! _  |' |) m- r6 J: b freertos2.jpg
, }! i3 e; u% V1 g! w* `; i手册中给出的Wake UP source都可以退出STOP2,一般配置RTC用外部LSE时钟能自己控制进入低功耗时间。* k2 ]8 Q" M0 a& v7 ]$ D% L
------------------------------------------------------------------------------------------------------------------------, a4 B2 L5 t( y1 q9 g- O
退出后你的OS依然在欢快的奔跑!SRAM数据依然保持!
2 l& Y  \2 T" B6 T+ B5 n) v: O& V

评分

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

查看全部评分

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

举报

12个回答
zero99 回答时间:2018-1-31 14:53:42
学习了,支持一下已汇总到1月技术原创4 _+ |; C4 ]# Z4 S4 [
https://www.stmcu.org.cn/module/forum/thread-614550-1-1.html) A# N4 P" j( v5 s6 }; U% R" C& D% e
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,有点问题
: t+ s* F3 M- r. ~7 ?3 V- c
Ankky 回答时间:2019-12-12 13:07:15
非常的nice。

所属标签

相似分享

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