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

FreeRTOS进入低功耗STOP2模式

[复制链接]
kylongmu 发布时间:2018-1-31 14:33
本帖最后由 kylongmu 于 2018-1-31 14:36 编辑
. }8 k' u  ^6 P) s. Z
+ D+ ^, z( {' n% f+ L  ^: I2 p前提条件:
6 K5 {4 Y/ p! j9 y# G7 V& x, \3 b  k1.低功耗STOP2模式仅消耗2uA电流,想要电池系统长时间运行必须采用,而STOP2模式又是低功耗中唯一能保存SRAM数据不丢失的最低功耗模式。
0 z) v: `7 o% P8 E2.FreeRTOS能给开发带来极大的便利性,其采用时间片轮询来实现线程切换,当OS进入IDLE态时CPU处于空闲。! R$ M7 A- c, c4 c0 C) d+ j
实现以上两点结合就能在FreeRTOS进入低功耗STOP2模式。3 Z' X" V0 m8 K- W( A" N
实现方法(CubeMX):* O9 Z4 p! V8 i( U& v
freertos1.jpg & Y/ `' c+ W, i" s, I2 Y2 j8 I
使能USE_TICKLESS_IDLE
5 Z1 O' b' _+ _% n! ^4 [, P1 a此时软件生成2个函数代码:% N: u; w- C1 \
  1. /* USER CODE BEGIN PREPOSTSLEEP */  j  R1 l: a4 O" G1 g
  2. __weak void PreSleepProcessing(uint32_t *ulExpectedIdleTime)
    8 y6 n, X- i9 e. z5 m% {
  3. {# o) g% c3 v: _& P' W& m4 x3 G
  4.         /* place for user code */
    / _  ?$ G7 b6 `5 i% k! q/ T
  5.         *ulExpectedIdleTime = 0;/ ]$ S7 E8 s9 {0 N
  6.         /*Enter to sleep Mode using the HAL function HAL_PWR_EnterSLEEPMode with WFI instruction*/& \2 U( H2 G+ O0 e" f* p6 A9 R
  7.         HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);  //Enter Stop mode with WFE instruction5 q' K8 ]5 B0 W
  8. }
    " ~& \  Z" \: L* Z) [( P
  9.   ]/ ^& A9 x( A; o& z
  10. __weak void PostSleepProcessing(uint32_t *ulExpectedIdleTime)
    5 [" A5 x0 j- j/ I
  11. {2 A6 x  t( k, v9 _5 m% `
  12. /* place for user code */
      ~# Y) S2 o9 ?. E  B' U- O3 j( K
  13.         SystemClock_Config();  D, m- H* l* o: ^5 v
  14. }
    9 }0 Y7 K# h4 ]& E
  15. /* USER CODE END PREPOSTSLEEP */
      q! e( Z% p* ?
复制代码
修改为以上,*ulExpectedIdleTime = 0;抑制OS的tick中断,HAL_PWREx_EnterSTOP2Mode进入STOP2模式,SystemClock_Config在退出STOP2模式时重新初始化时钟配置。* T, O3 G/ q8 u. [& r( ?& {1 h
----------------------------------以上修改后FreeRTOS即配置好进入STOP2的代码-------------------------, o1 m/ p$ Q8 M0 T# q0 ]
进入方法:! s9 @, Q# X: d1 Z/ ]
线程中调用OsDelay(100),所有线程都要调用,这样OS才能进入IDLE态,一旦进入IDLE态OS自动调用STOP2模式进入低功耗模式。8 K, a0 G- G% p4 Q1 V  |
退出方法:
) [* ^/ X' k( {  U8 B: }' | freertos2.jpg
+ e7 m/ Q) ?$ X手册中给出的Wake UP source都可以退出STOP2,一般配置RTC用外部LSE时钟能自己控制进入低功耗时间。( I( z* n7 y+ D5 T
------------------------------------------------------------------------------------------------------------------------
1 D. L) `0 |. Q+ y0 M退出后你的OS依然在欢快的奔跑!SRAM数据依然保持!
/ t# r( W) }9 b" A( ~7 R

评分

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

查看全部评分

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

举报

12个回答
zero99 回答时间:2018-1-31 14:53:42
学习了,支持一下已汇总到1月技术原创
* M5 y/ c, H- v4 t# dhttps://www.stmcu.org.cn/module/forum/thread-614550-1-1.html
$ s6 ^8 s) m# K1 J9 s/ V7 K) ~
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,有点问题) b5 p' O/ J/ H, J) v
Ankky 回答时间:2019-12-12 13:07:15
非常的nice。

所属标签

相似分享

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