(注:继上回学习完STM32CUBEMX之后发现这个东西是真的好用,上次说的串口的博客还没写,由于这段时间任务较重,因此先延迟。)
本文主要记录本人的学习过程,有错误的地方请各位大咖们指正!
FreeRTOS,是指实时操作系统,是可以多任务进行的一个操作系统,相当于裸机开发而已,任务的实现相对方便很多。
这次实验材料:STM32F103ZETX,正点原子的战舰开发板,应用到的软件有KEIL5、STM32CUBEMX。
首先就是打开CUBEMX,新建一个Project,选择GPIO的GPIOB和GPIOE口,使能输出引脚
然后选择RCC时钟,设置如下
下一步是勾选FREERTOS
在此次实验中,只是简单的实现LED灯的控制,因此并不需要其他的外设接口,然后配置系统时钟,选择8倍频,再2分频之后得到32M的时钟
下一步是选择FreeRTOS的任务生成,增加2个任务
在完成之后选择Project Manager 里面的Project,根据对应的MDK选择的MDK-ARM V5
然后在Code Generator 里面勾选
生成相应的c和h文件,然后在右上角点击GENERATE CODE 生成工程
打开工程之后,在freertos.c文件里面,就已经有生成的相应任务定义
然后在任务的函数里面写相应的程序
因为是2个不同的任务进行,所以我设置的延时时间是不同的,便于观察2个灯的变化。
在本次试验中,StartTask01和StartTask02占用到的CPU其实是很少的,是因为为了便于观察,设置了延时时间。但是在设置延时时间之后,2个任务就会进入到阻塞状态,它们都在等待延时的时间到达之后运行。
如果在任务都进入了阻塞状态,就会使程序在运行空闲的任务,一般是系统生成的任务,比如什么初始化之类的。
好了,这次的实验博客就记到这里,请各位大咖斧正!!!