原创 轻松几步实现在STM32上运行FreeRTOS任务

2019-6-6 14:27 7383 43 12 分类: MCU/ 嵌入式 文集: NUCLEO-L412KB
本文原创作者:strongerHuang

一、写在前面

以前想要在STM32上跑FreeRTOS操作系统,还需要自己一步一步的移植FreeRTOS代码。


现在使用STM32CubeMX工具,就不需要这么繁杂的移植工作,只需轻松几步就能让FreeRTOS跑起来。

 

本文以STM32L412NUCLEO-L412KB板卡)为例,其它STM32系列原理类似。

 

同时,使用目前最新的MDKSTM32CubeMX工具。因此,需要提前下载安装工具和软件包。

 

 

二、准备工作

主要有三类:

Ø MDK-ARM (含软件包)

Ø STM32CubeMX (含软件包)

Ø FreeRTOS源码(可选)

 

2.1  MDK-ARM(含软件包)

这里需要下载安装MDK-ARM,以及STM32对应的软件包。

 

官方安装包地址

http://www.keil.com/download/product

 

官方软件地址

http://www.keil.com/dd2/Pack

 

具体安装,使用方法可以参看我之前整理的专栏文章:【专栏】Keil系列教程(https://mp.weixin.qq.com/s/_Ek60N30VJ_RXQo6LIhUvw

 

 

2.2  STM32CubeMX (含软件包)

这里也是一样,需要下载安装STM32CubeMX,以及STM32对应的软件包。

 

官方下载地址:www.st.com/stm32cubemx

 

具体安装,使用方法可以参看我之前整理的专栏文章:【专栏】STM32CubeMX系列教程(https://mp.weixin.qq.com/s/XJbTfElc8mxouwREs4cIlw

 

提示:软件包里包含FreeRTOS源码,但不是最新的。

 

2.3  FreeRTOS源码

上面STM32Cube软件包其实包含了FreeRTOS源码,但不是最新版本。

 

FreeRTOS官网:www.freertos.org

 

如果想使用最新版本,或指定某一版本,可以到下面地址下载:

https://sourceforge.net/projects/freertos/files/FreeRTOS

 

上面地址包含FreeRTOS历史版本,如果使用指定版本,将源码替换即可(一本来说都兼容)。

 

三、STM32CubeMX创建工程

有了STM32CubeMX这个工具,开发STM32变得更加快捷。本文以STM32L412KB为例,其它STM32型号原理类似。

 

1.打开软件,进入选择器

 

 

2.选中MCU

 

 

3.LED引脚配置

 

 

4.UART输出配置

这里配置成异步模式之后,引脚自动配置(我的开发板RX引脚不是默认,则需要自己配置)。

 

 

5.使能FreeRTOS

 

 

6.配置FreeRTOS任务

这里创建两个FreeRTOS任务:Task1Task2

 

 

提示:针对初学者,使用STM32CubeMX配置FreeRTOS时,大部分参数默认即可。

当你熟悉之后,可以进一步掌握每项参数。

 

7.配置时钟

这里选择MSI作为时钟源,进行倍频,是系统时钟达到80M

 

 

8.工程管理配置

这里参数是常规配置,可参看我教程:【专栏】STM32CubeMX系列教程 (https://mp.weixin.qq.com/s/XJbTfElc8mxouwREs4cIlw)

 

 

9.生成并打开工程

 

 

四、源码分析4.1  在两个任务中添加应用程序

提示:这里使用了huart2,所以需要包含:#include "usart.h"

 

4.2  说明

任务Task1间隔500ms闪烁(变化)一次LEDPB3)。

任务Task2间隔1000ms,串口UART2发送一次数据“Demo...

 

 

osDelay函数代表系统延时,单位ms.

然后,就是LED闪烁,和UART发送函数。

 

4.3  编译下载运行

上面步骤完成之后,就可以编译,然后直接下载运行了,通过串口调试助手可以看见输出字符Demo...”。

 

五、工程及源码下载

可以看到,轻松几步就能实现在STM32上运行FreeRTOS任务。

 

为方便初学者,这里提供对应工程和源码,方便大家学习。

 

百度网盘:https://pan.baidu.com/s/1IdsuIlqqFhuJYxMI6EC7dQ

提取码:7k5i

 

提示:链接后期可能会失效,关注公众号『strongerHuang』及时获取动态。

作者: strongerHuang, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1708919.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论1条评论)

登录后参与讨论

zhanglii2011_392530165 2019-6-11 21:04

印象中STM32的HAL库对RTOS的支持有问题,主要是__LOCK()这样的锁需要重新实现。
相关推荐阅读
strongerHuang 2019-05-13 18:52
NUCLEO-L412KB开箱测评
一、写在前面首先,非常感谢面包板社区赠送的NUCLEO-L412KB开发板。该开发板属于STM32,低功耗系列MCU:STM32L412KBU6.STM32官方配套资料,工具比较完善,本片文章写开篇测...
我要评论
1
43
关闭 站长推荐上一条 /2 下一条