本帖最后由 toofree 于 2018-5-3 09:54 编辑 . u9 u# U6 ~, A- T* t+ r STM32超低功耗平台上的RTOS培训——之一、创建任务 + T- B5 j3 V. u+ ^7 M* Y参加《STM32超低功耗平台上的RTOS培训》有一段时间了,由于个人原因,一直没发贴汇报。今天补贴,根据RTOS培训样例程序,分析、理解RTOS创建任务的过程,并举一反三添加任务。5 g$ B/ j) Z# P" m 打开培训课件样例程序“FreeRTOS_TaskCreation”。IAR环境与培训一致——版本8.20.1,如果不一致,会导致下载程序问题(当然经过修改设置后可以正常下载,但这里不作过多解释)。左边工程管理中有几个文件夹,分别是用户程序、驱动程序、中间件(即FreeRTOS部分)。- ~( r( @+ L& o2 h 打开“main.c”文件,到main函数,最开始为系统时钟及外设的初始化。这在裸跑的时候也是必须的。1 n$ @0 k0 C% z3 [2 I2 i" L $ V' k* x: s. f# H 创建两个任务函数。 , \4 Z. u: V1 a- @: n 由于任务函数在main函数之后,因此在文件开头需要申明。 定义两个任务优先级 在main函数中,创建任务,并开启任务调度。 * H% M3 A9 W2 V- ^6 X, K 在工程设置中设置ST-Link为下载调试器,并设置flash loader(在keil下对应为flash编程算法)。( V8 v4 W1 V" D 将Nucleo-L496ZG板连接电脑USB。 完全编译程序,保证无错误后。在“Project”下拉菜单下,选择“Download and Debug”或者直接快捷方式Ctrl+D,下载并调试。F5全速跑程序(F5在很多环境下都是全速跑程序的快捷键)。/ g2 W: q9 } q9 O# G 当然也可以不调试,直接下载程序,按复位键跑程序。5 B3 g! {. d' v+ g7 T. ? + ]2 `0 z H; g( n- ?9 I+ X 这时我们可以看到,Nucleo-L496ZG板上的蓝色LED2开始闪烁。 打开串口调试助手,选择ST-Link虚拟出来的串口,设置115200波特率。可以UART任务在不停的从串口打印输出9 d! D8 z; q$ u2 P9 I# S; `. A3 _ 等等……,还没结束!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也增加到任务中来。 初始化中增加LED3+ h# ?; j% o* S 2 m ^2 t2 D8 D; q) M: s 添加LED1、LED3的任务函数,并在文件开头增加申明。5 N. p& q3 t! j; u2 F : b0 ^! @- u/ N7 m% ^; g% Q 增加LED1、LED3任务的优级宏定义,并重新调整了各任务的优先级。/ K, W: T" h; Z) n* {5 @ 主函数中增加创建LED1、LED3的任务5 Z: g X: x0 k: {- X$ y, \* s 下载、并全速跑程序。可以看到LED1、LED2、LED3全部闪烁起来了。2 i# Z2 M& l- i K/ [ 是不是非常简单呢!so easy!; l& d6 p% ]1 K4 h$ ]) n ( i) a) s1 T" ]+ v2 [. T8 `6 J0 C ; o3 F" U3 j9 b! B- _% e; |9 W |
谢谢支持啦! |