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

FreeRTOS进入低功耗STOP2模式

[复制链接]
kylongmu 发布时间:2018-1-31 14:33
本帖最后由 kylongmu 于 2018-1-31 14:36 编辑 5 R6 A4 z( n' R1 V4 x
" W& ]! J  L8 F+ P1 h. t
前提条件:
# Q9 G7 i% o' O* W1.低功耗STOP2模式仅消耗2uA电流,想要电池系统长时间运行必须采用,而STOP2模式又是低功耗中唯一能保存SRAM数据不丢失的最低功耗模式。5 P7 d" L6 z+ |( }, b7 f
2.FreeRTOS能给开发带来极大的便利性,其采用时间片轮询来实现线程切换,当OS进入IDLE态时CPU处于空闲。
% l) i4 ]$ ^$ w6 |# G+ C实现以上两点结合就能在FreeRTOS进入低功耗STOP2模式。6 l9 n# i" i& U- e
实现方法(CubeMX):
) p! L" }4 C& {9 R) V6 X. \* r  V  D0 u freertos1.jpg $ U" f' S0 t1 L
使能USE_TICKLESS_IDLE
8 s; ]4 g8 M# D; f& e& u5 Z此时软件生成2个函数代码:
$ E) H$ p) j6 X1 e  R
  1. /* USER CODE BEGIN PREPOSTSLEEP */
    / @2 l3 D1 ~# S$ ^9 y& c, E' i
  2. __weak void PreSleepProcessing(uint32_t *ulExpectedIdleTime)& p4 ^" c( g. O
  3. {. W) @, ~& g$ ^# a& F" o
  4.         /* place for user code */
    1 h1 ?' ~  ]3 [4 @/ A, Z
  5.         *ulExpectedIdleTime = 0;1 a" @, |3 e* [1 u4 F- J1 C8 w( S( d# e
  6.         /*Enter to sleep Mode using the HAL function HAL_PWR_EnterSLEEPMode with WFI instruction*/
    9 J2 ~* k/ a+ A& y% o' ~, g7 F
  7.         HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);  //Enter Stop mode with WFE instruction
    3 D9 V9 Z+ k% N; z+ B
  8. }
    . P% e. m! ~# @4 U6 T$ Y
  9. 6 \6 i4 j9 }; \0 a, }( G8 U
  10. __weak void PostSleepProcessing(uint32_t *ulExpectedIdleTime)  p" c* ^% j; S6 I
  11. {
      z# e9 q" Z: M$ u
  12. /* place for user code */  Y4 v  X3 K' {6 J
  13.         SystemClock_Config();7 O( C0 b% E( z/ s! p# a7 A: l
  14. }
    - U6 s. I8 P3 g
  15. /* USER CODE END PREPOSTSLEEP */
    $ i! E& ]. f$ _
复制代码
修改为以上,*ulExpectedIdleTime = 0;抑制OS的tick中断,HAL_PWREx_EnterSTOP2Mode进入STOP2模式,SystemClock_Config在退出STOP2模式时重新初始化时钟配置。& U+ s6 A- X9 C- \
----------------------------------以上修改后FreeRTOS即配置好进入STOP2的代码-------------------------" F) K0 I, x7 e' V+ K3 M
进入方法:
8 `0 `2 E' Y: j8 P线程中调用OsDelay(100),所有线程都要调用,这样OS才能进入IDLE态,一旦进入IDLE态OS自动调用STOP2模式进入低功耗模式。
3 G, P- z. |" Z; z9 r退出方法:5 q8 r7 g2 J) A4 W3 t% Z- u
freertos2.jpg & M/ t: F" _; |" o8 m1 w) p7 `' {
手册中给出的Wake UP source都可以退出STOP2,一般配置RTC用外部LSE时钟能自己控制进入低功耗时间。* w- Y1 ], c  k# E0 J
------------------------------------------------------------------------------------------------------------------------
9 i) z4 p! O! t' o$ u+ L$ V退出后你的OS依然在欢快的奔跑!SRAM数据依然保持!
# k) K! h  g% F* L

评分

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

查看全部评分

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

举报

12个回答
zero99 回答时间:2018-1-31 14:53:42
学习了,支持一下已汇总到1月技术原创
) }3 v7 N- `. D: j% `https://www.stmcu.org.cn/module/forum/thread-614550-1-1.html8 _; B" p4 C. [. h
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,有点问题5 S& H" {$ J; d! g9 G" V
Ankky 回答时间:2019-12-12 13:07:15
非常的nice。

所属标签

相似分享

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