目录

(一)FreeRTOS介绍

(二)程序下载(基于stm32标准外设库

(三)创建第一个任务

一、FreeRTOS介绍

FreeRTOS 是一款开源轻量级实时操作系统 (RTOS),专为单片机、MCU 设计,代码量小、占用 RAM/ROM 少,广泛用于嵌入式开发。

核心能力:任务调度、优先级抢占、信号量、队列、互斥锁、事件组,实现多任务并发运行。 特点:免费、可裁剪、移植简单,支持绝大多数 ARM、RISC‑V 芯片,工业、智能硬件、机器人项目大量使用。

简单来说:打比方来说FreeRTOS就像一个母亲一手喂饭给孩子又一手回同时信息,系统将单片机的任务切成一个个时间流片,通过快速的频率切换执行“喂饭”和“回消息”的两大任务,让人感觉两任务并行运行,但严格上来说“喂饭”和“回消息”独立运行互不影响并且轮流执行。

下面将结合stm32从0开始简单入门FreeRTOS。

二、程序下载(基于stm32标准外设库)

官方链接https://www.freertos.org/zh-cn-cmn-s点击链接下载FreeRTOS 202604.01 LTS(其他版本也尚可),

其中FreeRTOS-Kernel是RTOS的操作系统本体(内核),FreeRTOS-Cellular-Interface为4G/5G 模组 AT 命令抽象库,FreeRTOS‑Plus‑TCP为以太网 TCP/IP 协议栈(芯片连接网络用)

我们在这里只要用到FreeRTOS-Kernel即可,下载完操作系统本体后需要下载相应历程示例

示例https://github.com/FreeRTOS/FreeRTOS

下在完成后点开FreeRTOS,将之前操作系统内核FreeRTOS-Karnel的所有内容复制放在FreeRTOS文件夹目录下的Source目录下

  那么到现在已经成功移植好了FreeRTOS,那么现在可以写的一个FreeRTOS项目了,打开Demo文件夹下的CORTEX_STM32F103_Keil(芯片本体)。                                      

三、创建第一个任务

示例一:使用2个函数分别创建2个任务

int main( void )
{
    prvSetupHardware();
    
    xTaskCreate(vTask1, "Task 1", 1000, NULL, 1, NULL);
    xTaskCreate(vTask2, "Task 2", 1000, NULL, 1, NULL);
    /* 启动调度器 */
    vTaskStartScheduler();
    /* 如果程序运行到了这里就表示出错了, 一般是内存不足 */
    return 0;
}


void vTask1( void *pvParameters )
{
   const char *pcTaskName = "T1 run\r\n";
   while(1)
   {
        printf( pcTaskName );
   }
    
}

void vTask2( void *pvParameters )
{
   const char *pcTaskName = "T2 run\r\n";
   while(1)
   {
        printf( pcTaskName );
   }
    
}

如果打开串口看的话

到现在第一个FreeRTOS创建任务程序已经完成了

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐