STM32CUBEMX部署生成FreeRTOS创建LED闪烁任务

发布时间:2026/7/30 17:28:59
STM32CUBEMX部署生成FreeRTOS创建LED闪烁任务 目录一、前言二、详细步骤三、总结一、前言从本文开始将会逐步介绍FreeRTOS的一些功能由浅入深。本文将上手通过STM32CUBEMX快速实现FreeRTOS的移植。随后创建点灯任务。芯片选型STM32F103C8T6二、FreeRTOS如果你想要在单片机程序中同时实现LED闪烁和检测按键只用最简单的扫描检测不使用中断等你会怎么实现呢常见的方法是if(按键 按下) { ... } 延时(1000ms) LED翻转()这样的话我们按下按键往往要等待1s才被响应。还有的小伙伴选择这样写if(按键 按下) { ... } 延时(10ms) 延时计数 if(延时计数 100) { 延时计数 0 LED翻转() }这样可以做到10ms内就能响应按键操作但是如果我们面对更快的场景呢比如必须捕捉到时间很短的按键事件又该如何做我们做不到一心二用CPU也是这样他们需要执行完一条语句随后转身去执行另外一条。但这样并不符合实时响应的要求如果能够多线程处理就好了。那么FreeRTOS可以帮助你。CPU同样不能一心二用CPU的多线程不过是快速在多个线程间切换执行。执行任务A的一条指令然后再去执行任务B的一条指令切换的事件之快对于任务来说就是在一心而用。什么是FreeRTOSFreeRTOS 是一个开源的、免费的、实时操作系统内核RTOS专为嵌入式微控制器设计。它由 Richard Barry 开发并在全球范围内得到广泛使用特别是在需要高实时性、低资源消耗和灵活性的应用中。FreeRTOS 提供了任务调度、时间管理、同步机制如信号量、互斥锁和队列等功能使得开发者可以更容易地构建复杂的多任务应用程序。三、详细步骤打开STM32CUBEMX 配置LED引脚基本时钟树。将时基源改为TIM4或其他不使用的定时器使能FreeRTOS4.点击Task and Queues点击Add添加我们自己的任务。Entry Function是程序入口。在New Task中我们可以看到如下选项点击Generate Code生成代码。打开Keil之后先编译一遍确保没有错误。找到freertos.c文件找到之前程序入口的函数。将里边的程序改为LED闪烁。for(;;) { osDelay(1000); HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin); }四、总结显而易见相较于我们使用常规途径移植STM32的FreeRTOS系统STM32CUBEMX为我们提供了便利快捷的途径让我们能够有更多时间在开发上而非环境移植和部署。日后我也会陆续出几篇关于FreeRTOS的文章深入学习交流。本文工程源码FreeRTOS