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

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

[复制链接]
七哥 发布时间:2018-5-2 23:47
本帖最后由 toofree 于 2018-5-3 09:54 编辑 2 x, a& }% O$ d" B" r  R2 o

( I/ r! s7 r$ B; n& A% `8 ]
STM32超低功耗平台上的RTOS培训——之一、创建任务
$ {+ k, _+ z+ ]
  参加《STM32超低功耗平台上的RTOS培训》有一段时间了,由于个人原因,一直没发贴汇报。今天补贴,根据RTOS培训样例程序,分析、理解RTOS创建任务的过程,并举一反三添加任务。
, C6 g- S% K5 L7 }3 d$ Y7 i+ E
+ I' J3 D- y1 L! B+ ~
  打开培训课件样例程序“FreeRTOS_TaskCreation”。IAR环境与培训一致——版本8.20.1,如果不一致,会导致下载程序问题(当然经过修改设置后可以正常下载,但这里不作过多解释)。左边工程管理中有几个文件夹,分别是用户程序、驱动程序、中间件(即FreeRTOS部分)。
! J' O% A* c$ O/ |, u   傲游截图20180502225443.jpg
6 n& y) ~* U/ N( W, f2 ^  . R2 p* r0 l% u6 s2 p& @( R
  打开“main.c”文件,到main函数,最开始为系统时钟及外设的初始化。这在裸跑的时候也是必须的。
6 R  M( m! p# j( R# I   傲游截图20180502231340.jpg
5 R" Q/ m3 t% G  W. e' |2 n
! G6 |7 D. T; ~* A; k

: G8 D5 q* A3 V  u  创建两个任务函数。3 c4 V3 d5 j& X( u4 J  c
   傲游截图20180502225548.jpg
: ?* |+ E: x8 A) \

" Y/ w- ^+ g" T9 ]: ]" ]1 T% `# k7 f  由于任务函数在main函数之后,因此在文件开头需要申明。
5 D. ^( B: c6 }$ }$ t   傲游截图20180502225720.jpg % \! B! s9 R! S) J8 E- R

/ K/ V2 U9 _. T( k6 ^- C: K  定义两个任务优先级* P" \) x/ ^) i, i) t5 ^- i
   傲游截图20180502225813.jpg
" [. x2 `3 }; b8 k; |+ ~7 w9 q! V
  在main函数中,创建任务,并开启任务调度。- F. o* I7 U# G( ]
   傲游截图20180502230131.jpg : {1 P5 h+ i) j

/ s& y) n* t" R$ @  在工程设置中设置ST-Link为下载调试器,并设置flash loader(在keil下对应为flash编程算法)。! {  Z. F- \5 q1 v& A/ o3 d% N
   傲游截图20180502232019.jpg ' d5 V- T7 b/ O7 E

4 \. y9 j( K. h4 P) H7 Z8 \1 A   傲游截图20180502232043.jpg 6 ?3 _$ q9 \3 K9 N5 a0 {  b& ~1 M! \
5 a# l/ G3 }: H6 }% t- |
  将Nucleo-L496ZG板连接电脑USB。
     完全编译程序,保证无错误后。在“Project”下拉菜单下,选择“Download and Debug”或者直接快捷方式Ctrl+D,下载并调试。F5全速跑程序(F5在很多环境下都是全速跑程序的快捷键)。' A4 g( L3 K2 h, [& l- z5 C: w
   傲游截图20180502232458.jpg , Q2 a- \# R1 p5 z' K% n

1 A- U/ [0 i9 o$ N$ s3 n8 H& R  N  当然也可以不调试,直接下载程序,按复位键跑程序。, O( P! z' @( @0 j" g) e- g7 q
   傲游截图20180502232714.jpg   y/ r6 G# L% b; w/ Z
6 g- v# X# X/ J, O
  这时我们可以看到,Nucleo-L496ZG板上的蓝色LED2开始闪烁。: q* s4 c9 A% x9 N3 l* h) R- H

; J% u0 z9 p  k  打开串口调试助手,选择ST-Link虚拟出来的串口,设置115200波特率。可以UART任务在不停的从串口打印输出
1 |. S. t- ]* w$ i# T, C0 D   傲游截图20180502233604.jpg
( [) l. _9 n: G9 K5 h$ R2 P1 L0 w6 V" L* J  b% v6 R. t, C
  等等……,还没结束!
8 A- J  L) A# J5 P  p1 n
+ ]( P' A* d  Y) d% c' I' h  Nucleo-L496ZG板上有三个用户LED,LED1、LED2、LED3分别为绿、蓝、红。我们可以照猫画虎,把LED1、LED3也增加到任务中来。
$ y( @( r  l  Y! e  初始化中增加LED3
8 W4 T& H, b7 y) i# \# ?   傲游截图20180502234203.jpg 7 Y7 Q+ G" X5 Y  b4 n
3 M* H1 X# s' ?2 p
  添加LED1、LED3的任务函数,并在文件开头增加申明。6 r1 S4 D' V- r' o3 C& N
   傲游截图20180502234254.jpg
( n" x" p# L2 ?9 O
" z' p7 u5 A3 g   傲游截图20180502234401.jpg ( I) v' }7 P. Z/ K- E' f
' B9 V# T* W; B4 }
  增加LED1、LED3任务的优级宏定义,并重新调整了各任务的优先级。
% v  Y. @) p# g3 l% f# ~& o   傲游截图20180502234444.jpg
2 P5 D" H0 E& t! ]3 A4 T, K. I/ w! L8 |3 e
  主函数中增加创建LED1、LED3的任务
. P/ y0 ^: e; m1 m# \5 u   傲游截图20180502234627.jpg
0 V: d  P. _/ ~6 B
. y7 S! o8 w/ q* y* z- [2 x! o  下载、并全速跑程序。可以看到LED1、LED2、LED3全部闪烁起来了。
' s3 L& ~, n1 x, i0 v1 Z3 g
+ Q5 B3 l) q2 `: {; V& H
  是不是非常简单呢!so easy!2 r3 Z& k" _6 V1 }) m

# D: j4 }; U5 I8 ]

3 x0 u3 I6 Z( n$ f& F: g0 V) H' q, }9 q# o1 w' r+ }5 N, ?

% |' i3 |' u5 T1 a9 p
收藏 评论1 发布时间:2018-5-2 23:47

举报

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

所属标签

相似分享

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