STM32CUBEMX创建FreeRTOS操作系统的多任务实现2个LED灯不同的闪烁

(注:继上回学习完STM32CUBEMX之后发现这个东西是真的好用,上次说的串口的博客还没写,由于这段时间任务较重,因此先延迟。)

本文主要记录本人的学习过程,有错误的地方请各位大咖们指正!

FreeRTOS,是指实时操作系统,是可以多任务进行的一个操作系统,相当于裸机开发而已,任务的实现相对方便很多。

这次实验材料:STM32F103ZETX,正点原子的战舰开发板,应用到的软件有KEIL5、STM32CUBEMX。

首先就是打开CUBEMX,新建一个Project,选择GPIO的GPIOB和GPIOE口,使能输出引脚

STM32CUBEMX创建FreeRTOS操作系统的多任务实现2个LED灯不同的闪烁_第1张图片

然后选择RCC时钟,设置如下

STM32CUBEMX创建FreeRTOS操作系统的多任务实现2个LED灯不同的闪烁_第2张图片

下一步是勾选FREERTOS

STM32CUBEMX创建FreeRTOS操作系统的多任务实现2个LED灯不同的闪烁_第3张图片

在此次实验中,只是简单的实现LED灯的控制,因此并不需要其他的外设接口,然后配置系统时钟,选择8倍频,再2分频之后得到32M的时钟

STM32CUBEMX创建FreeRTOS操作系统的多任务实现2个LED灯不同的闪烁_第4张图片

下一步是选择FreeRTOS的任务生成,增加2个任务

STM32CUBEMX创建FreeRTOS操作系统的多任务实现2个LED灯不同的闪烁_第5张图片

在完成之后选择Project Manager 里面的Project,根据对应的MDK选择的MDK-ARM V5

STM32CUBEMX创建FreeRTOS操作系统的多任务实现2个LED灯不同的闪烁_第6张图片

然后在Code Generator 里面勾选

STM32CUBEMX创建FreeRTOS操作系统的多任务实现2个LED灯不同的闪烁_第7张图片

生成相应的c和h文件,然后在右上角点击GENERATE CODE 生成工程

STM32CUBEMX创建FreeRTOS操作系统的多任务实现2个LED灯不同的闪烁_第8张图片

打开工程之后,在freertos.c文件里面,就已经有生成的相应任务定义

STM32CUBEMX创建FreeRTOS操作系统的多任务实现2个LED灯不同的闪烁_第9张图片

然后在任务的函数里面写相应的程序

STM32CUBEMX创建FreeRTOS操作系统的多任务实现2个LED灯不同的闪烁_第10张图片

因为是2个不同的任务进行,所以我设置的延时时间是不同的,便于观察2个灯的变化。

在本次试验中,StartTask01和StartTask02占用到的CPU其实是很少的,是因为为了便于观察,设置了延时时间。但是在设置延时时间之后,2个任务就会进入到阻塞状态,它们都在等待延时的时间到达之后运行。

如果在任务都进入了阻塞状态,就会使程序在运行空闲的任务,一般是系统生成的任务,比如什么初始化之类的。

好了,这次的实验博客就记到这里,请各位大咖斧正!!!

你可能感兴趣的:(初学)