一、FreeRTOS源码的下载
1、官网下载
FreeRTOS官方链接
官方下载速度慢,需要翻墙,一般选择第一个
2、直接通过仓库下载
仓库地址链接
同样很慢,甚至打不开网页,也不建议使用这种方法。
3、百度网盘
链接:https://pan.baidu.com/s/1es7_uEmDFgis1sDYENnkBw?pwd=6688
提取码:6688
二、FreeRTOS源码介绍
参考博客:【FreeRTOS】详细目录结构和作用_freertos代码目录结构-CSDN博客
三、FreeRTOS系统移植
参考博客:【FreeRTOS】FreeRTOS移植stm32详细步骤介绍_freertos 202212.01下载-CSDN博客
四、代码
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "FreeRTOS.h"
#include "task.h"TaskHandle_t task1Handler;
TaskHandle_t task2Handler;static void task1(void *arg)
{while(1){GPIO_ResetBits(GPIOA, GPIO_Pin_1);vTaskDelay(500);GPIO_SetBits(GPIOA, GPIO_Pin_1);vTaskDelay(500);}}static void task2(void *arg)
{while(1){GPIO_ResetBits(GPIOA, GPIO_Pin_2);vTaskDelay(1500);GPIO_SetBits(GPIOA, GPIO_Pin_2);vTaskDelay(1500);}}int main(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);xTaskCreate(task1,"task1",512,NULL,2,&task1Handler);xTaskCreate(task2,"task1",512,NULL,3,&task1Handler);vTaskStartScheduler();while (1){}
}
五、测试结果
创建了两个不同频率的LED闪烁任务