STM32 移植 FreeRTOS - 基于 HAL 库
本文介绍使用 STM32CubeMX 创建一个包含 FreeRTOS 的工程。关于 STM32CubeMX 的安装另见:STM32 工程的创建 - 基于 HAL 库。此外,这篇文章将在 基础工程 之上直接实现利用 FreeRTOS 进行点灯操作。
FreeRTOS 的配置
打开 STM32CubeMX 配置界面:
使用 FreeRTOS 时,必须为 HAL 设置一个非 SysTick 定时器作为 HAL 的基础时钟,SysTick 将自动作为 FreeRTOS 的基础时钟。
这里我们选择 V2 接口。V1 和 V2 版本主要的区别在于,V2 兼容支持的硬件更多,内存耗费更多。
配置内核参数:
- Task and Quenes: 任务与队列的创建。
- Timers and Semaphores: 定时器和信号量的创建。
- Mutexes: 互斥量的创建。
- FreeRTOS Heap Usage: 用于查看堆使用情况。
- config parameters: 内核参数设置,用户根据自己的实际应用来裁剪定制 FreeRTOS 内核。
- Include parameters: FreeRTOS 部分函数的使能。
- User Constants: 相关宏的定义,可以自建一些常量在工程中使用。
点击 GENERATE 生成代码。然后编译一遍确保无误。
编写任务
首先保证 main.c 的循环中没有内容。
1 | while (1) |
找到 freertos.c
:
找到我们刚刚指定的任务函数:
写上翻转灯的逻辑:
1 | void led_task_func(void *argument) |
编译成功后下载即可。
本文参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 半方池水半方田!
评论