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

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

[复制链接]
七哥 发布时间:2018-5-2 23:47
本帖最后由 toofree 于 2018-5-3 09:54 编辑 ! E* W/ G4 r/ w
& ?- J7 {- v# x/ r+ R* S
STM32超低功耗平台上的RTOS培训——之一、创建任务

! d& b+ Y2 V  n* |0 V  参加《STM32超低功耗平台上的RTOS培训》有一段时间了,由于个人原因,一直没发贴汇报。今天补贴,根据RTOS培训样例程序,分析、理解RTOS创建任务的过程,并举一反三添加任务。
4 m$ M2 v: p( i5 ]5 Z

8 m5 k- g; l' C2 t( A# i  打开培训课件样例程序“FreeRTOS_TaskCreation”。IAR环境与培训一致——版本8.20.1,如果不一致,会导致下载程序问题(当然经过修改设置后可以正常下载,但这里不作过多解释)。左边工程管理中有几个文件夹,分别是用户程序、驱动程序、中间件(即FreeRTOS部分)。
; Q+ G) u- ]9 D9 J   傲游截图20180502225443.jpg
+ m$ r1 |& k; z5 ~) m4 ?% o  ( \0 R  G8 B; n9 z# |+ k; w
  打开“main.c”文件,到main函数,最开始为系统时钟及外设的初始化。这在裸跑的时候也是必须的。
* r) ~" M! I) A; j$ f   傲游截图20180502231340.jpg
7 {- {9 P" Z% z% O1 \; e5 _1 C4 R& A& D( t) w2 L( Q9 M

2 V0 m2 @; N% U/ ^4 Q  创建两个任务函数。  _% r9 ?; |% s9 ]6 ]1 S/ L
   傲游截图20180502225548.jpg
4 N6 i( \! x2 a

, E% ]- C. f1 b7 [  由于任务函数在main函数之后,因此在文件开头需要申明。
4 P: e+ U. P; z- k  p) E" E   傲游截图20180502225720.jpg 3 K* O/ B6 Y1 W/ w' n& d% s. `

6 x* ?9 ~5 u$ r! j6 {7 ~6 l  定义两个任务优先级7 M. g# y  i3 s
   傲游截图20180502225813.jpg
" l6 }  j7 A4 `/ h
  在main函数中,创建任务,并开启任务调度。
0 h/ A5 ]; N' {# P- v9 Y3 c8 m   傲游截图20180502230131.jpg
! `* C9 q7 \+ |0 F

4 s6 G, {5 @8 D  在工程设置中设置ST-Link为下载调试器,并设置flash loader(在keil下对应为flash编程算法)。
! }8 n4 b; W( W8 o( h3 ?; [   傲游截图20180502232019.jpg
7 l6 H- U$ M  M+ a9 o6 A* u9 r$ t6 R6 J$ ]( N4 q: h( h, m+ N( ?1 d
   傲游截图20180502232043.jpg 3 q: m' Q$ f: D: e
+ @2 ]/ k0 }# U: p
  将Nucleo-L496ZG板连接电脑USB。
     完全编译程序,保证无错误后。在“Project”下拉菜单下,选择“Download and Debug”或者直接快捷方式Ctrl+D,下载并调试。F5全速跑程序(F5在很多环境下都是全速跑程序的快捷键)。5 M/ U' g0 h8 m
   傲游截图20180502232458.jpg
+ e; Z% X. Z* j8 L4 P( v  V
4 H' H* M; s+ G# l" i4 f+ t! X  当然也可以不调试,直接下载程序,按复位键跑程序。
+ L2 u6 r+ k* h- s   傲游截图20180502232714.jpg 1 p4 e$ ?8 g+ [8 D# a
3 e( _4 Q' J- e) e0 W2 p
  这时我们可以看到,Nucleo-L496ZG板上的蓝色LED2开始闪烁。
- J; p  s1 M+ ]0 J: g; P
9 k1 U# C4 M, s  打开串口调试助手,选择ST-Link虚拟出来的串口,设置115200波特率。可以UART任务在不停的从串口打印输出
) d1 `% n' }! V2 \$ w   傲游截图20180502233604.jpg 3 n& Z/ A* p  G3 N9 @  g2 |. T

6 ~% }0 z& m- g  等等……,还没结束!4 j6 w1 x4 n- H6 Q; _4 V; j  H3 C5 O

* I/ v: D' I( B) |, f, ?  Nucleo-L496ZG板上有三个用户LED,LED1、LED2、LED3分别为绿、蓝、红。我们可以照猫画虎,把LED1、LED3也增加到任务中来。$ D; R/ o/ D6 S9 A. s
  初始化中增加LED3# L( [7 H8 Z" Z; \3 u& Q$ l
   傲游截图20180502234203.jpg
4 w7 S8 J8 R& J7 z8 }1 O& ?4 {8 @* k% n
  添加LED1、LED3的任务函数,并在文件开头增加申明。9 d3 Q! Z; N5 \* i5 R% G5 h
   傲游截图20180502234254.jpg
" Q, c/ B9 w6 ~+ N, a3 S, @7 g, q' L2 a4 f; J
   傲游截图20180502234401.jpg
6 Q+ _! w5 |/ ]( R
6 K  G4 C- W3 Q! v* |( a  增加LED1、LED3任务的优级宏定义,并重新调整了各任务的优先级。0 b1 _$ v* e# F' u
   傲游截图20180502234444.jpg % H  T6 J1 V9 \. J* ]

" q- [# j0 u" p6 H  主函数中增加创建LED1、LED3的任务
0 r& d4 Y+ r9 t$ |; M6 c   傲游截图20180502234627.jpg
2 ?) \, R1 J( P3 z9 U( k' P3 P4 |* y  F6 h: d! P, G. k* E( e
  下载、并全速跑程序。可以看到LED1、LED2、LED3全部闪烁起来了。4 r- d$ T7 I% \8 y8 {6 F
7 o, y5 r# M' E% Z, d
  是不是非常简单呢!so easy!' g9 k: y6 I1 M' d
: q9 T: j! |$ K: h1 @, Z  I
+ ?% V9 C( d8 q2 `9 a$ q

( g8 s& y# d/ [7 L6 R
3 J( H! }% w. S; G/ }+ [
收藏 评论1 发布时间:2018-5-2 23:47

举报

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

所属标签

相似分享

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