在STM32下完成基于FreeRTOS的多任务简单程序

一、为什么要学习 RTOS

在裸机系统中,所有的程序基本都是自己写的,所有的操作都是在一个无限的大循环里面实现。现实生活中的很多中小型的电子产品用的都是裸机系统,而且也能够满足需求。但是为什么还要学习 RTOS编程,偏偏还要整个操作系统进来。一是项目需要,随着产品要实现的功能越来越多,单纯的裸机系统已经不能够完美地解决问题,反而会使编程变得更加复杂,如果想降低编程的难度,我们可以考虑引入 RTOS 实现多任务管理,这是使用RTOS 的最大优势。

二、MDK下移植FreeRTOS

FreeRTOS官方最新源码的下载地址

由于我使用的是野火的指南者F103,给了源码所以直接用,在这个框架下进行一些修改。

野火产品资料链接

task1:每间隔500ms闪烁(变化)一次LED。
task2:每间隔2000ms,向串口发送一次指令数据“helloworld!"。
task3:每间隔5000ms,从AHT20采集一次温湿度数据。

由于给的源代码是执行2个点灯任务,所以需要在源码的基础上修改增加,只需修改main.c就可以了。

修改为如下:

#include "FreeRTOS.h"
#include "task.h"
#include "bsp_led.h"
#include "bsp_usart.h"

static TaskHandle_t AppTaskCreate_Handle = NULL;/* 创建任务句柄 */
static TaskHandle_t LED1_Task_Handle = NULL;/* LED1任务句柄 */
static TaskHandle_t hello_Task_Handle = NULL;/* PRINT任务句柄 */
static TaskHandle_t AHT_Task_Handle = NULL;/* AHT任务句柄 */

static void AppTaskCreate(void);/* 用于创建任务 */
static void LED1_Task(void* pvParameters);/* LED1_Task任务实现 */
static void hello_Task(void* pvParameters);/* PRIN_Task任务实现 */
static void AHT_Task(void* pvParameters);/* AHT20_Task任务实现 */
static void BSP_Init(void);/* 用于初始化板载相关资源 */
int main(void
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值