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

FreeRTOS进入低功耗STOP2模式

[复制链接]
kylongmu 发布时间:2018-1-31 14:33
本帖最后由 kylongmu 于 2018-1-31 14:36 编辑 # L7 s/ `$ a! r% y
9 t7 h0 D$ D* |" @/ Q" d
前提条件:
: s& E& C2 ?# N, B. k1.低功耗STOP2模式仅消耗2uA电流,想要电池系统长时间运行必须采用,而STOP2模式又是低功耗中唯一能保存SRAM数据不丢失的最低功耗模式。
3 F$ S% W" a( x: t) i2.FreeRTOS能给开发带来极大的便利性,其采用时间片轮询来实现线程切换,当OS进入IDLE态时CPU处于空闲。
2 F" f1 _# U9 w9 V6 J% X& v4 f实现以上两点结合就能在FreeRTOS进入低功耗STOP2模式。
1 b: m( ?9 o) j. w# t1 X6 x* u6 \% p实现方法(CubeMX):
. l) K* l3 T7 G) r: r/ U freertos1.jpg / f" X: L+ a' O2 U' q
使能USE_TICKLESS_IDLE
7 [5 p) z' u; F! u( p% f此时软件生成2个函数代码:' g- G, a& n2 j' V: y
  1. /* USER CODE BEGIN PREPOSTSLEEP */9 d$ M# `" q& U' [4 _8 b
  2. __weak void PreSleepProcessing(uint32_t *ulExpectedIdleTime)- K0 m- Z: K# ^/ B( f: D
  3. {
    6 V' L( l2 e- d' s- M; a; |
  4.         /* place for user code */( c$ d: o5 W. T( z1 a, J
  5.         *ulExpectedIdleTime = 0;7 c$ C! p) Y3 Z# L7 i
  6.         /*Enter to sleep Mode using the HAL function HAL_PWR_EnterSLEEPMode with WFI instruction*/* k: Q, e( T) ]" [& r3 r
  7.         HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);  //Enter Stop mode with WFE instruction
    % w9 m& C- T; c/ |( t& i
  8. }
    ; I, w, F3 q, n8 O( i' v

  9. 5 I4 a+ W0 j& G$ }& ?$ Y
  10. __weak void PostSleepProcessing(uint32_t *ulExpectedIdleTime)
    : C9 q( g7 w7 c0 t- R; u
  11. {
    9 Q  N  h0 P# D  }* B5 P. I! m
  12. /* place for user code */
    - u2 j7 k( n7 n% k# r& j
  13.         SystemClock_Config();+ \" a4 a' ^) H1 F2 I
  14. }. P7 R: X3 n% o
  15. /* USER CODE END PREPOSTSLEEP */
    9 c5 P5 N5 N7 Y# x, I, ?+ X
复制代码
修改为以上,*ulExpectedIdleTime = 0;抑制OS的tick中断,HAL_PWREx_EnterSTOP2Mode进入STOP2模式,SystemClock_Config在退出STOP2模式时重新初始化时钟配置。. w  i; }5 F) [" H$ }; A- t' A
----------------------------------以上修改后FreeRTOS即配置好进入STOP2的代码-------------------------7 `/ P! @$ v7 }2 P; a6 i, u
进入方法:! }. o/ R# j+ B8 C9 z. w
线程中调用OsDelay(100),所有线程都要调用,这样OS才能进入IDLE态,一旦进入IDLE态OS自动调用STOP2模式进入低功耗模式。
0 N! t8 x7 i7 G/ a6 F+ |+ u0 ~/ K退出方法:; Q: p9 B; F4 Y8 T' a" N
freertos2.jpg * @# i2 J" _2 V8 b( `
手册中给出的Wake UP source都可以退出STOP2,一般配置RTC用外部LSE时钟能自己控制进入低功耗时间。: h& @+ k9 r6 R8 t3 m- V, o) q  p
------------------------------------------------------------------------------------------------------------------------; M# s1 b  _# S- b
退出后你的OS依然在欢快的奔跑!SRAM数据依然保持!
' ?- ^/ u4 z6 B2 A( C1 K- x' ]* ?4 H

评分

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

查看全部评分

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

举报

12个回答
zero99 回答时间:2018-1-31 14:53:42
学习了,支持一下已汇总到1月技术原创" g2 C( n& Q" o) I7 A
https://www.stmcu.org.cn/module/forum/thread-614550-1-1.html
$ I( z0 n+ r; N
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,有点问题
# f% \9 T& d5 u8 ?$ b3 u
Ankky 回答时间:2019-12-12 13:07:15
非常的nice。

所属标签

相似分享

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