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

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

[复制链接]
七哥 发布时间:2018-5-2 23:47
本帖最后由 toofree 于 2018-5-3 09:54 编辑 . u9 u# U6 ~, A- T* t+ r

* ^+ h/ ^, h' c/ M/ D! H
STM32超低功耗平台上的RTOS培训——之一、创建任务
+ T- B5 j3 V. u+ ^7 M* Y
  参加《STM32超低功耗平台上的RTOS培训》有一段时间了,由于个人原因,一直没发贴汇报。今天补贴,根据RTOS培训样例程序,分析、理解RTOS创建任务的过程,并举一反三添加任务。5 g$ B/ j) Z# P" m

& ~" \2 ~# W) e* x  R; k  打开培训课件样例程序“FreeRTOS_TaskCreation”。IAR环境与培训一致——版本8.20.1,如果不一致,会导致下载程序问题(当然经过修改设置后可以正常下载,但这里不作过多解释)。左边工程管理中有几个文件夹,分别是用户程序、驱动程序、中间件(即FreeRTOS部分)。- ~( r( @+ L& o2 h
   傲游截图20180502225443.jpg
  d) J. @- b4 A+ w0 H" ]  
, C( j) _- x6 {8 p  打开“main.c”文件,到main函数,最开始为系统时钟及外设的初始化。这在裸跑的时候也是必须的。1 n$ @0 k0 C% z3 [2 I2 i" L
   傲游截图20180502231340.jpg
% [- z9 z3 C! o4 Q* L+ h6 }6 O$ V' k* x: s. f# H

$ C+ @2 S4 D: N0 q2 y  创建两个任务函数。
2 g1 l$ Q  U# ?) q# d, c; C/ p   傲游截图20180502225548.jpg % G6 E* D2 {- h" [
, \4 Z. u: V1 a- @: n
  由于任务函数在main函数之后,因此在文件开头需要申明。
; N, h5 w6 Q9 }2 o2 s, O, D   傲游截图20180502225720.jpg + }1 Q: Z. u0 m6 l

/ }2 Y& A1 x2 N: w- V' w$ R3 p) p  定义两个任务优先级
' |& x7 h6 @: U/ ^   傲游截图20180502225813.jpg
: z6 ~1 Y: ^, i/ t
  在main函数中,创建任务,并开启任务调度。
* ?% q3 `2 I# X   傲游截图20180502230131.jpg ! H5 @$ L+ t6 J* ?  ~/ o
* H% M3 A9 W2 V- ^6 X, K
  在工程设置中设置ST-Link为下载调试器,并设置flash loader(在keil下对应为flash编程算法)。( V8 v4 W1 V" D
   傲游截图20180502232019.jpg 5 M  @$ I& |% y% s

% F3 j1 o, Q; I) j5 ]   傲游截图20180502232043.jpg
, C  y+ [1 v6 v  M1 Q
- \' g% k4 T( h. v  将Nucleo-L496ZG板连接电脑USB。
     完全编译程序,保证无错误后。在“Project”下拉菜单下,选择“Download and Debug”或者直接快捷方式Ctrl+D,下载并调试。F5全速跑程序(F5在很多环境下都是全速跑程序的快捷键)。/ g2 W: q9 }  q9 O# G
   傲游截图20180502232458.jpg
5 [+ V0 t4 x" p4 t
" M, l: T9 _* @& _  当然也可以不调试,直接下载程序,按复位键跑程序。5 B3 g! {. d' v+ g7 T. ?
   傲游截图20180502232714.jpg 7 H+ Z* ~. o2 [" _) i" f
+ ]2 `0 z  H; g( n- ?9 I+ X
  这时我们可以看到,Nucleo-L496ZG板上的蓝色LED2开始闪烁。
8 z$ A  ^4 J; D$ P# x. s
# [5 x% c/ m; K  打开串口调试助手,选择ST-Link虚拟出来的串口,设置115200波特率。可以UART任务在不停的从串口打印输出9 d! D8 z; q$ u2 P9 I# S; `. A3 _
   傲游截图20180502233604.jpg 4 a( Q7 F  z+ |( t; ?. c

: ?' {% i! M5 O3 D: ^" J  等等……,还没结束!2 k. d" ^, {0 u( s+ P1 \8 f& O+ a
; v( v( V% s* W/ q) w1 ~4 u  P
  Nucleo-L496ZG板上有三个用户LED,LED1、LED2、LED3分别为绿、蓝、红。我们可以照猫画虎,把LED1、LED3也增加到任务中来。
& E1 o& a- b( W. _  O/ C4 D  初始化中增加LED3+ h# ?; j% o* S
   傲游截图20180502234203.jpg 7 V% C7 d* S  v* y: w# h
2 m  ^2 t2 D8 D; q) M: s
  添加LED1、LED3的任务函数,并在文件开头增加申明。5 N. p& q3 t! j; u2 F
   傲游截图20180502234254.jpg
: p7 n1 d" ^1 t8 x7 |: b0 ^! @- u/ N7 m% ^; g% Q
   傲游截图20180502234401.jpg
/ y9 C% \; C9 J/ Z% a. G% o
' y& x- A+ ~; m8 B4 a2 Q# E  增加LED1、LED3任务的优级宏定义,并重新调整了各任务的优先级。/ K, W: T" h; Z) n* {5 @
   傲游截图20180502234444.jpg
* M5 A9 h! I2 z/ C1 |: ?
) I- b8 A: [. F4 D' [1 S  主函数中增加创建LED1、LED3的任务5 Z: g  X: x0 k: {- X$ y, \* s
   傲游截图20180502234627.jpg
( f% e1 h6 B9 A  p1 c3 y1 S" p. B
. Q& Y: O: m) i1 w4 ]' ^1 @9 ?. {  下载、并全速跑程序。可以看到LED1、LED2、LED3全部闪烁起来了。2 i# Z2 M& l- i  K/ [

! I9 o. k" @5 C/ K& X2 y  是不是非常简单呢!so easy!; l& d6 p% ]1 K4 h$ ]) n
( i) a) s1 T" ]+ v2 [. T8 `6 J0 C

( q0 J; J3 T, C- J; o3 F" U3 j9 b! B- _% e; |9 W

8 e2 u, y3 h4 `) i" |: i" V1 ]1 R
收藏 评论1 发布时间:2018-5-2 23:47

举报

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

所属标签

相似分享

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