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

STM32超低功耗平台上的RTOS培训 -- 实验5 低功耗实验

[复制链接]
TLLED 发布时间:2018-4-21 09:43
本帖最后由 TLLED 于 2018-4-21 09:43 编辑 ; i7 ~' w+ i( Q6 E

: i; C& p+ Z% X" O    低功耗模式实验
& a0 K+ ]* x6 v- q    对于M4内核,FreeRTOS代码里已经提供tickless低功耗实现的代码。使用时只需要在FreeRTOSConfig.h文件中配置宏定义configUSE_TICKLESS_IDLE为1且系统运行满足以下两个条件时,系统内核会自动的调用低功耗宏定义函数portSUPPRESS_TICKS_AND_SLEEP():
9 G7 l2 L3 g6 q    满足的条件:
* B! |, D$ i; t& u    > 用户任务在挂起或阻塞态,系统当前运行空闲任务。4 W! d. z* `1 j* y. r
    > 根据配置configEXPECTED_IDLE_TIME_BEFORE_SLEEP的大小,只有系统可运行于低功耗模式的 时钟节拍数大于等于这个参数时,系统才能进入低功耗模式。此参数在FreeRTOS.h中定义,定义的内容如下:
0 f; ~6 V5 i" A0 e, H9 I    1.png
3 ]2 T3 W9 ?7 }    也可以在FreeRTOSConfig.h文件中重新定义。
6 X& L( u- u( t: W1 L    > 在空闲任务中,调用vPortSuppressTicksAndSleep()函数进入低功耗模式。此函数在portmacro.h中被定义:
8 y# d) y. a7 u/ Y! @1 b) a) }    2.png , Y2 C7 k( q. ?' B* A0 q0 o' F5 ^
    函数:vPortSuppressTicksAndSleep( TickType_t xExpectedIdleTime );是实现低功耗的具体程序,在port.c中定义。参数:xExpectedIdleTime是系统可以处于低功耗的系统节拍数。2 }* c4 |) B3 B1 U" C
    低功耗实验模型:
) b3 D$ c) v+ G# U: [    3.png / C* j) B0 O7 w
    程序执行条件:                    > 程序中创建两个任务:$ D! S/ ]% {+ _+ L9 o( R4 A! _
        任务1:vAppTicklessTask()  --  统计系统当前运行的节拍数。
$ w) l9 i  |5 @$ i% T4 }        任务2:vAppKeyTask()        --  接收信号量,唤醒任务。
# d: p' ~2 ?4 v& _; d( H% P7 k/ x
, g- |$ y) z2 c' ^. R8 K$ H

2 _) _& M7 j* W: P9 `    程序函数源码:
" J9 D8 e# |  ^2 P5 Q        任务1的函数:
( E1 D) A! y3 `' I8 L/ O. m         4.png , ]; r# }# D0 M$ A& U) d$ a" v* D
        任务2的函数:9 P. ]" Z6 |- i! ?! O4 m8 v% U! P
         5.png 7 @9 r$ J' |8 e3 A3 P3 d1 T

  t/ E; n, \. t0 i+ r& U& P    程序执行结果:       
6 O7 C$ I# R: R& S7 c% L5 w7 z3 S    1、任务1输出tick count: n  ,板子上LED1闪烁* n& P, c1 m  x' [9 _9 ?
    2、任务2在按下用户按键后,输出一帧数据,然后任务停止。% m4 S* @) `( H/ o) Z& k4 H

: ~. H' ]; n5 n( G( e6 C' N$ s         6.png 1 P3 O, J% P5 G# H( ^, Y6 k+ G% G9 s
    疑问:
+ x3 a  K8 Q; q) Q, q" ?* p    程序按照低功耗模式设置好后,两个任务不是应该都进入睡眠模式,按下板子上用户按键后唤醒任务。实现这个程序出现任务1一直在运行。4 a9 \* F  ]/ J* y
   
; F" {) K% e, F0 b8 K
   
/ y6 C; A  f5 o7 I# j/ r. U" f; D' R' I4 ~+ L( u7 p/ }
# i& `% ^( L0 M9 C" g6 |# t$ o

3 K% Y' ~( h" U& @" K- O  D: i/ d( D

3 \' f) j9 W: V# p4 |( @% e$ m' b& b" o3 ]. P$ s: e, I7 N

+ l. H, T& e" u' d+ q- N! G
/ r6 t0 Q; f! ?% S# n
赞 收藏 1 评论3 发布时间:2018-4-21 09:43

举报

3个回答
zero99 回答时间:2018-4-22 10:59:47
学习了,但是楼主发的实验4没看到啊。。
TLLED 回答时间:2018-4-22 15:17:32
zero99 发表于 2018-4-22 10:59$ m& n* Q3 Y% o# l2 A
学习了,但是楼主发的实验4没看到啊。。

, m! k/ n9 N/ ~4 O4 \! \/ y7 a实验4需要的那个软件我的电脑上装不上,正在查找原因。先把实验5做了
aniu81 回答时间:2018-5-3 12:11:13
学习
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版