如何轻松几步实现在STM32上运行FreeRTOS任务

发布时间:2023-06-13  

之前文章做过一次调查,尽然有大部分人都没有接触过RTOS,希望本文能带领那部分朋友入门。


1写在前面

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

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

本文以STM32L412(NUCLEO-L412KB板卡)为例,其它STM32型号类似。

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

2准备工作

主要有三类:

MDK-ARM (含软件包)

STM32CubeMX (含软件包)

FreeRTOS源码(可选)

2.1 MDK-ARM(含软件包)

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

官方安装包地址:

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

官方软件包地址:

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

具体安装,使用方法可以参看我之前整理的专栏文章:【专栏】Keil系列教程

2.2 STM32CubeMX (含软件包)

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

官方下载地址:

www.st.com/stm32cubemx

具体安装,使用方法可以参看我之前整理的专栏文章:【专栏】STM32CubeMX系列教程

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

2.3 FreeRTOS源码

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

FreeRTOS官网:

www.freertos.org

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

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

o4YBAF4WizyAHJBXAACx9_lk5dk454.jpg

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

3STM32CubeMX创建工程

有了STM32CubeMX这个工具,开发STM32变得更加快捷。

本文以STM32L412KB为例,其它STM32型号原理类似。

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


2.选中MCU


3.LED引脚配置


4.UART输出配置

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


5.使能FreeRTOS

pIYBAF4Wi0CACBrxAAE_dtnw9x8184.jpg

6.配置FreeRTOS任务

这里创建两个FreeRTOS任务:Task1和Task2。

o4YBAF4Wi0CAByImAAFn0mGRRPo972.jpg

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

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

7.配置时钟

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

pIYBAF4Wi0GAQ9DjAAE2y1l0PVs936.jpg

8.工程管理配置

这里参数是常规配置,可参看我教程:【专栏】STM32CubeMX系列教程

o4YBAF4Wi0GAfq06AAEIr5-HsRU587.jpg

9.生成并打开工程

o4YBAF4Wi0KAH_MXAAEb0eCZLzY861.jpg

4源码分析

4.1 在两个任务中添加应用程序

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

pIYBAF4Wi0KAI9cKAAF3qaT5IBQ430.jpg

4.2 说明

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

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

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

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

4.3 编译下载运行

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

5工程及源码下载

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

百度网盘:

https://pan.baidu.com/s/1IdsuIlqqFhuJYxMI6EC7dQ

提取码:7k5i

提示:公号不支持外部链接,请复制链接到浏览器打开。

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    软件驱动器的支持下实现的。 在 DDRPHYC 和 DDCTRL 完成初始化后,DDR 子系统就绪,使能 AXI 端口是最后一个步骤。 通过从 STM32CubeMX DDR 面板选择的菜单/选项......
    Cong表示:“TouchGFX 工具的质量和设计,以及我们在 ST 的支持下实现的出色用户体验,有助于提升我们的品牌知名度和体验。 TouchGFX 能够让我们的工程师提高工作效率”。 片上......
    Cong表示:“TouchGFX 工具的质量和设计,以及我们在 ST 的支持下实现的出色用户体验,有助于提升我们的品牌知名度和体验。 TouchGFX 能够让我们的工程师提高工作效率”。 片上......
    的现象。 说明: 使用C++写单片机流水灯程序,实现的方法有很多,比如还有一些更高级的继承、多态等用法,也可以引入进来。以上只是提供一种思路,引导初学者学习C++编程。 是不是很简单,看到这里,你学废了吗? ......
    ();    Delay(50);  }} 编译出来的代码量相对更大: 然后,如果有开发板,直接下载即可运行LED闪烁的现象。 说明: 使用C++写单片机流水灯程序,实现的方法有很多,比如还有一些更高级的继承、多态......
    Architecture)的兼容支持,包括CUDA编译器和运行时环境。除此以外,RVGPU的架构指令CModel仿真模型允许开发者在模拟环境中模拟GPU的各种指令和行为。 RVGPU软件栈,图源|芯瞳......
    相机和对Google DayDream虚拟现实的支持,但让硬件控注意的是,华硕ZenFone AR成为全球首台拥有8GB运行内存的手机。 当下许多用户还用着4GB运存的电脑的时候,智能......
    一款优秀的编译器可以将源代码转换成高效、稳定、优化的二进制代码,使得嵌入式系统能够在有限的硬件资源下实现复杂的功能和卓越的性能。选择一款适合特定平台、性能卓越、稳定可靠、并提供优质技术支持......
    下的按键中断实验,这次使用的我刚移植的最新版Uboot,版本是 u-boot-2014-04,验证的结论是: U-boot完全能够支持中断 下面就以u-boot-2014-04为例,介绍一下按键中断的实现......
    时替换正常额定值变压器使用。 那么变压器在什么情况下过载运行是正常的呢?在平均老化率较小的情况下,变压器可以在短时间内超额定电流运行。出现以下情况时,不能超负荷运行。 当变......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>