本帖最后由 toofree 于 2018-5-3 09:54 编辑 ! E* W/ G4 r/ w & ?- J7 {- v# x/ r+ R* S STM32超低功耗平台上的RTOS培训——之一、创建任务 参加《STM32超低功耗平台上的RTOS培训》有一段时间了,由于个人原因,一直没发贴汇报。今天补贴,根据RTOS培训样例程序,分析、理解RTOS创建任务的过程,并举一反三添加任务。 打开培训课件样例程序“FreeRTOS_TaskCreation”。IAR环境与培训一致——版本8.20.1,如果不一致,会导致下载程序问题(当然经过修改设置后可以正常下载,但这里不作过多解释)。左边工程管理中有几个文件夹,分别是用户程序、驱动程序、中间件(即FreeRTOS部分)。 ( \0 R G8 B; n9 z# |+ k; w 打开“main.c”文件,到main函数,最开始为系统时钟及外设的初始化。这在裸跑的时候也是必须的。 4 R& A& D( t) w2 L( Q9 M 创建两个任务函数。 _% r9 ?; |% s9 ]6 ]1 S/ L 由于任务函数在main函数之后,因此在文件开头需要申明。 定义两个任务优先级7 M. g# y i3 s 在main函数中,创建任务,并开启任务调度。 在工程设置中设置ST-Link为下载调试器,并设置flash loader(在keil下对应为flash编程算法)。 6 R6 J$ ]( N4 q: h( h, m+ N( ?1 d + @2 ]/ k0 }# U: p 将Nucleo-L496ZG板连接电脑USB。 完全编译程序,保证无错误后。在“Project”下拉菜单下,选择“Download and Debug”或者直接快捷方式Ctrl+D,下载并调试。F5全速跑程序(F5在很多环境下都是全速跑程序的快捷键)。5 M/ U' g0 h8 m 当然也可以不调试,直接下载程序,按复位键跑程序。 3 e( _4 Q' J- e) e0 W2 p 这时我们可以看到,Nucleo-L496ZG板上的蓝色LED2开始闪烁。 打开串口调试助手,选择ST-Link虚拟出来的串口,设置115200波特率。可以UART任务在不停的从串口打印输出 等等……,还没结束!4 j6 w1 x4 n- H6 Q; _4 V; j H3 C5 O 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 8 }1 O& ?4 {8 @* k% n 添加LED1、LED3的任务函数,并在文件开头增加申明。9 d3 Q! Z; N5 \* i5 R% G5 h , a3 S, @7 g, q' L2 a4 f; J 增加LED1、LED3任务的优级宏定义,并重新调整了各任务的优先级。0 b1 _$ v* e# F' u 主函数中增加创建LED1、LED3的任务 ( 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 |
谢谢支持啦! |