点击查看代码
/************************************************************************************ @file main.c * @author * @version * @date 2024/07/20* @brief 利用FreeRTOS的动态分配内存的方案来创建一个任务,学习API接口的使用流程创建一个任务,用于点亮一盏LED灯 PF9 -- LED0*********************************************************************************
**/#include "stm32f4xx.h" //必须包含
#include <stdio.h>
#include "uart.h"
#include "delay.h"
#include "FreeRTOS.h"
#include "task.h"TaskHandle_t Task1_Handle = NULL; //用于存储创建的任务句柄
TaskHandle_t Task2_Handle = NULL; //用于存储创建的任务句柄//任务的接口
void task1(void *arg)
{USART1_SendString("task1 is create success!\r\n");for(;;){USART1_SendString("task1 is running!\r\n");}}//任务的接口
void task2(void *arg)
{USART1_SendString("task2 is create success!\r\n");for(;;){USART1_SendString("task2 is running!\r\n");delay_ms(1000); //非阻塞延时}}int main()
{BaseType_t xReturned;//1.硬件的初始化USART1_Config(9600);//2.创建2个任务xReturned = xTaskCreate(task1, //任务的地址"task1", //任务的描述128, //任务的堆栈大小 128 * 32 / 8 = 512字节NULL, //任务接口的参数,无需传参则填NULL1, //任务的优先级 范围 0 ~ configMAX_PRIORITIES - 1&Task1_Handle //任务的句柄,是为了提供给其他函数使用的);xReturned = xTaskCreate(task2, //任务的地址"task2", //任务的描述128, //任务的堆栈大小 128 * 32 / 8 = 512字节NULL, //任务接口的参数,无需传参则填NULL2, //任务的优先级 范围 0 ~ configMAX_PRIORITIES - 1&Task2_Handle //任务的句柄,是为了提供给其他函数使用的);//错误处理 if( xReturned != pdPASS ){}//3.启动调度器vTaskStartScheduler();while(1){}
}