本文原创作者: strongerHuang 一、 写在前面 以前想要在 STM32 上跑 FreeRTOS 操作系统,还需要自己一步一步的移植 FreeRTOS 代码。 现在使用 STM32CubeMX 工具,就不需要这么繁杂的移植工作,只需轻松几步就能让 FreeRTOS 跑起来。 本文以 STM32L412 ( NUCLEO-L412KB 板卡)为例,其它 STM32 系列原理类似。 同时,使用目前最新的 MDK 和 STM32CubeMX 工具。因此,需要提前下载安装工具和软件包。 二、 准备工作 主要有三类: Ø 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 任务: Task1 和 Task2 。 提示: 针对初学者,使用 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 闪烁(变化)一次 LED ( PB3 )。 任务 Task2 : 间隔 1000ms ,串口 UART2 发送一次数据“ Demo... ” osDelay 函数代表系统延时,单位 ms. 然后,就是 LED 闪烁,和 UART 发送函数。 4.3 编译下载运行 上面步骤完成之后,就可以编译,然后直接下载运行了,通过串口调试助手可以看见输出字符 “ Demo... ”。 五、 工程及源码下载 可以看到,轻松几步就能实现在 STM32 上运行 FreeRTOS 任务。 为方便初学者,这里提供对应工程和源码,方便大家学习。 百度网盘: https://pan.baidu.com/s/1IdsuIlqqFhuJYxMI6EC7dQ 提取码: 7k5i 提示: 链接后期可能会失效,关注公众号『 strongerHuang 』及时获取动态。