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

STM32超低功耗平台上的RTOS培训——之一、创建任务

[复制链接]
七哥 发布时间:2018-5-2 23:47
本帖最后由 toofree 于 2018-5-3 09:54 编辑 ) [1 T% |1 @0 w$ ~0 L$ y- e
$ p0 b2 o* Z# I) \. e
STM32超低功耗平台上的RTOS培训——之一、创建任务
7 e' ~1 w6 _( G; U6 Z+ k  C$ {
  参加《STM32超低功耗平台上的RTOS培训》有一段时间了,由于个人原因,一直没发贴汇报。今天补贴,根据RTOS培训样例程序,分析、理解RTOS创建任务的过程,并举一反三添加任务。
$ c# F$ t9 R, \" L% k; t
) D/ W* X# Q# @) p5 U" q
  打开培训课件样例程序“FreeRTOS_TaskCreation”。IAR环境与培训一致——版本8.20.1,如果不一致,会导致下载程序问题(当然经过修改设置后可以正常下载,但这里不作过多解释)。左边工程管理中有几个文件夹,分别是用户程序、驱动程序、中间件(即FreeRTOS部分)。' W! j3 N3 G: z5 G
   傲游截图20180502225443.jpg . p* L' I1 y7 P: o
  : R, s/ K& {5 m
  打开“main.c”文件,到main函数,最开始为系统时钟及外设的初始化。这在裸跑的时候也是必须的。; D( c5 s( B! G
   傲游截图20180502231340.jpg " H" Z7 N3 N6 a, i+ e  K
& q  p/ O. s8 I# A$ b) `
* J1 q8 i" ]) E# D6 N4 {1 C; Q
  创建两个任务函数。1 i0 j5 ?6 b# d2 y+ H, x: b
   傲游截图20180502225548.jpg 6 h5 o* @- Y! u, p5 f; i0 Z

; \8 k: R" V' r4 O4 T. u  由于任务函数在main函数之后,因此在文件开头需要申明。2 y  s5 h, k( y: u! k* K
   傲游截图20180502225720.jpg $ I% G$ ]8 Q- x1 P
6 c4 f7 E5 R3 H  p( t
  定义两个任务优先级. U8 T- C5 y. I# D, V# x
   傲游截图20180502225813.jpg % K' B+ v# f$ F7 p# x5 D& A2 {  l
  在main函数中,创建任务,并开启任务调度。+ h8 J/ D& ]# A+ m( ^6 r
   傲游截图20180502230131.jpg 2 K- E. P, M7 M0 g* T

1 I. r8 L% h- o& t! x5 b# ~* m6 j7 y  在工程设置中设置ST-Link为下载调试器,并设置flash loader(在keil下对应为flash编程算法)。4 h( ]5 a# K. i8 D* J+ n
   傲游截图20180502232019.jpg
# V7 z6 x) ]$ \# [$ h: U6 J% f+ \/ Q5 G  d1 A% z; `# ^* d  i* B
   傲游截图20180502232043.jpg
! ]! a4 ?; A4 `3 J
% A5 Q* V  N( e; r9 I  将Nucleo-L496ZG板连接电脑USB。
     完全编译程序,保证无错误后。在“Project”下拉菜单下,选择“Download and Debug”或者直接快捷方式Ctrl+D,下载并调试。F5全速跑程序(F5在很多环境下都是全速跑程序的快捷键)。
* h2 D8 ?" X. P$ }& C1 s   傲游截图20180502232458.jpg
/ A4 H: y& H- u9 i
* W" B  w% J$ H: _; l# z8 c  当然也可以不调试,直接下载程序,按复位键跑程序。
- u6 E# u0 I0 X4 S9 j* G9 D6 J   傲游截图20180502232714.jpg . B- A' Z& d) Z. {1 k1 @$ p% M8 V
, W' t0 u: F- W8 _& H: s
  这时我们可以看到,Nucleo-L496ZG板上的蓝色LED2开始闪烁。
5 ?  e+ o) s. f7 M0 O! R$ L0 s3 i, e) V  C
  打开串口调试助手,选择ST-Link虚拟出来的串口,设置115200波特率。可以UART任务在不停的从串口打印输出* @# P5 Z- p; K2 I1 p2 s9 E
   傲游截图20180502233604.jpg 4 `/ U* _% F5 L

8 Z! P  c; b: R) I! x# l" J  等等……,还没结束!2 T* t8 c* g! P* ?6 r; K

, J! {0 A: b6 ~1 L  Nucleo-L496ZG板上有三个用户LED,LED1、LED2、LED3分别为绿、蓝、红。我们可以照猫画虎,把LED1、LED3也增加到任务中来。
( e0 s. W+ p6 `4 @9 ~* h/ g: x  初始化中增加LED3
( a. u2 Y! @: n4 _) q/ @( C  `6 u   傲游截图20180502234203.jpg
0 Q  K0 C+ c/ Z& Q/ Q% }- i* o0 A# ^5 s+ _5 f, o
  添加LED1、LED3的任务函数,并在文件开头增加申明。
2 z( O5 f9 Y5 c+ C: V. W   傲游截图20180502234254.jpg
% h7 K, k2 ?2 `# D* r/ c
7 V* L, |  H2 H0 Q; K. c   傲游截图20180502234401.jpg
# Y0 C4 W* k7 t' [+ i, \" }1 V1 i' ]7 w
  增加LED1、LED3任务的优级宏定义,并重新调整了各任务的优先级。3 g0 a0 d0 f4 I$ ~; G% B: \
   傲游截图20180502234444.jpg
4 v5 S/ f1 s- `+ H! M/ |/ J" T  |! F: t/ d
  主函数中增加创建LED1、LED3的任务: `" v7 y" Q2 r) G
   傲游截图20180502234627.jpg / ~$ Y2 y- g4 _* n: t$ s/ j
7 r  L# B; v3 ~9 M7 R" R
  下载、并全速跑程序。可以看到LED1、LED2、LED3全部闪烁起来了。9 }9 J( [7 n# K% i2 i+ y
# O1 G( e2 ], \2 n" T
  是不是非常简单呢!so easy!
! T9 T6 h0 k* j) g0 G" W
2 ]/ E7 M* P' _" J9 L% s  D

7 o( _- \& f2 n: u, }
/ M" _% [6 `+ O
) `, g  a* d$ [# }9 c& K
收藏 评论1 发布时间:2018-5-2 23:47

举报

1个回答
zero99 回答时间:2018-5-3 09:08:58
谢谢支持啦!

所属标签

相似分享

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