之前文章做过一次调查,尽然有大部分人都没有接触过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
上面地址包含FreeRTOS历史版本,如果使用指定版本,将源码替换即可(一本来说都兼容)。
3STM32CubeMX创建工程
有了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系列教程
9.生成并打开工程
4源码分析
4.1 在两个任务中添加应用程序
提示:这里使用了huart2,所以需要包含:#include "usart.h"
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
提示:公号不支持外部链接,请复制链接到浏览器打开。
上一篇:担心STM32时钟PLL各参数配错吗?
下一篇:STM32F1_ FSMC读写外部SRAM
推荐阅读最新更新时间:2024-11-24 15:26
推荐帖子
- 射频开关TC4-1T+的国产替代器件规格书
- CH-BTC41TA1:4核心和线变压器,0.5-300MHz,50频率范围:该型号支持的频率范围较广,通常适用于从直流到6GHz的应用场景。控制方式:它是一个单刀四掷(SP4T)开关,通过TTL电平控制信号来选择不同的通道。低插入损耗:在工作频段内,它提供较低的插入损耗,保证了信号传输的效率。高隔离度:各端口之间有良好的隔离性能,可以有效减少不同通道之间的干扰。小型化设计:采用了紧凑型封装,适合于空间受限的设计。可靠性高:采用高质量材料制造,确保了产品的稳定性和长寿命。
- 辰海芯 RF/无线
- 自动摇篮
- 本帖最后由paulhyde于2014-9-1509:11编辑自动摇篮自动摇篮本帖最后由paulhyde于2014-9-1509:11编辑顶!!!!!!!!!
- 呱呱 电子竞赛
- MOS管驱动,这样的波形怎么样?
- 下降沿还是有些长,约50nSMOS管驱动,这样的波形怎么样?楼主这个波形是Vgs?好高开关的频率啊,1.5MHz?最高2.5v是推那個nmos?旁路電容能減少點?这么高的频率是不是软开关呢,有没有太多能量辐射出来变成电磁波啊??貌似这个波形不很好吧?电压范围不满足、振铃很厉害,下降速度也有一些不太好。不过你干嘛用这么高的开关频率?波形很不好,看看驱动能力是不是满足条件,驱动信号不能离你的MOS管太远。
- dontium 模拟与混合信号
- 使用、评测STM32 Nucleo&X-NUCLEO-IDB04A1
- 还有两天就放假了,整理代码,准备发帖(是不是有点晚)。使用、评测STM32Nucleo&X-NUCLEO-IDB04A1不晚没有看见东西啊、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、SPI外设接口voidSTM_EVAL_SPIInit(void){GPIO_InitTypeDefGPIO_InitStructure;SPI_InitTypeDefSPI_InitStructure;/*EnabletheSPIperi
- gxliu08 stm32/stm8
- 北京轨道交通展图片报道
- 北京轨道交通展图片报道008007014021022北京轨道交通展图片报道
- jameswangsynnex 汽车电子
- 7281 急
- 我用的是S3C2410的板子,用GPIO控制DATA,CLK和KEY,写入数据时,BC7281B时钟信号正常,就是data脚总是高电平,握手无法建立,查看以前的帖子有人问过但没有解决,不知到有没有人遇到同样的问题,怎么解决?很郁闷,多谢了!!!!7281急没用过,拿示波器量,如果给出去的时序以及信号是对的,就从硬件考虑吧.恩,多谢,我也在怀疑
- xiaoyake1 嵌入式系统
设计资源 培训 开发板 精华推荐
- LT1934IS6 1.8V 降压转换器的典型应用电路
- 使用 Analog Devices 的 LT124XMJ8 的参考设计
- EVAL-AD7766EDZ-U1,AD7766/AD7767评估板,24位,10mW,128KHz,24位ADC
- 适用于 D 类放大器的通用输入 3.3V、12V、36V、200W 连续 PSU 参考设计
- VM801B43A-PL,Embedded Video Engine Plus Development Module 支持3.3/5V MCU Adapter Board,预装4.3 - 480x272分辨率TFT LCD显示面板,珍珠边框
- 使用 Diodes Incorporated 的 AZ5901 的参考设计
- WRL-15147,AVR-IOT WG 评估板
- L6390,适用于工业应用的高压半桥栅极驱动器
- AD8616ARZ单电源缓冲DAC输出运算放大器典型应用电路
- LT3464ETS8 演示板、2 个电路、升压转换器、2.3V 至 10V 输入、Vout1 = 20V/3-6mA