STM32F103在CubeIDE运行FreeRTOS

STM32F103在CubeIDE运行FreeRTOS

硬件平台:STM32F103CT6

软件平台:CubeIDE 1.8.0

实现效果:创建两个TASK,TASK1中实现500ms周期闪烁LED1,TASK2中实现1000ms周期闪烁LED2

1.创建CubeIDE STM32工程

在这里插入图片描述

2.选择芯片信号:STM32F103C8T6

在这里插入图片描述

3.设置项目名称、保存路径

在这里插入图片描述

4.设置RCC时钟,选择晶体/陶瓷震荡器

在这里插入图片描述

5.我使用STLink,因此将Debug设置成JTAG(5pins),根据实际情况选择。使用FreeRTOS时时钟源不要使用SysTick(滴答定时器),我选择的是TIM1

在这里插入图片描述

6.根据实际情况配置LED1和LED2

在这里插入图片描述

7.打开FreeRTOS功能,Interface接口选择CMSIS_V1,CMSIS_V2可不可以我没有尝试

在这里插入图片描述

8.使能Newlib setting(不使能会有警告,具体作用没有了解)

在这里插入图片描述

9.创建第一个任务LED1_TASK,其他选默认即可

在这里插入图片描述

10.按照同样方法创建第二个任务LED2_TASK

在这里插入图片描述

11.在时钟树将时钟开到最大72MHz

在这里插入图片描述

12.生成代码时,我习惯将每个.c和.h单独分开生成

在这里插入图片描述

13.然后生成代码,在MX_FREERTOS_Init()中创建任务

在这里插入图片描述

在这里插入图片描述

14.在两个任务中加入LED灯周期闪烁的代码,将程序下载到芯片

在这里插入图片描述

实验成功,两个LED按照程序周期闪烁!

在这里插入图片描述

FreeRTOS更复杂的使用可在此基础上进行实现。

FreeRTOS学习参考:Free RTOS学习

### STM32F103 CubeIDE FreeRTOS 配置与使用教程 #### 创建新项目并配置FreeRTOSSTM32CubeMX中启动新的工程,选择目标设备为STM32F103系列微控制器。完成初步设置后,在中间件选项卡里勾选FreeRTOS组件[^4]。 对于接口的选择,推荐选用CMSIS_V1作为API接口标准;虽然也存在其他版本如CMSIS_V2,但出于兼容性和稳定性考虑,建议优先采用V1版本。 #### 系统与时钟配置 确保正确设置了系统时钟源以及频率参数,这一步骤至关重要因为定时器依赖于精确的时间基准来实现任务调度等功能。同时调整好用于调试目的的相关GPIO引脚分配[^5]。 #### 添加必要的外设支持 依据具体应用场景需求开启相应的硬件资源比如串口通信模块UART/SPI/IIC等,并合理规划中断向量表以保障实时响应特性得以体现。 #### 定制化`FreeRTOSConfig.h` 此文件包含了大量关于内核行为模式的关键定义项,例如最大允许的任务数量、堆栈大小限制等等。可以从官方提供的示范实例或是相近型号处理器对应的模板着手修改适配当前平台特点[^2]。 如果找不到完全匹配的目标板级支持包BSP,则参照相似架构(例如CORTEX_M3)下的预设值进行初始化设定。 ```c #define configUSE_PREEMPTION 1 #define configMAX_PRIORITIES ( 7 ) #define configTICK_RATE_HZ ((TickType_t)1000) #define configMINIMAL_STACK_SIZE ((uint16_t)128) #define configTOTAL_HEAP_SIZE ((size_t)(12 * 1024)) ``` 以上是一些常见的编译开关示例,实际数值需根据个人项目的特殊要求灵活调整优化性能表现。 #### 编写应用程序逻辑 利用所提供的API函数构建多线程结构体,编写各个独立执行单元即“任务”的主体部分。注意遵循最佳实践指南,保持代码简洁高效易于维护扩展[^1]。 ```c void StartDefaultTask(void const * argument){ /* Infinite loop */ for(;;){ osDelay(1); } } int main(void){ // 初始化HAL库 HAL_Init(); // 启动多线程调度机制 osKernelInitialize(); // 创建默认任务 osThreadDef(default_task, StartDefaultTask, osPriorityNormal, 0, 128); osThreadCreate(osThread(default_task), NULL); // 开始运行RTX OS kernel osKernelStart(); } ``` 上述片段展示了最基础的应用框架搭建过程,开发者可以根据业务流程进一步丰富完善功能细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

studyingdda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值