这篇移植下freertos系统。
一、freertos系统源码下载
下载地址:https://www.freertos.org/a00104.html
二、复制文件到项目工程
三、添加项目文件
3.1、添加源码
3.2、设置头文件路径
四、程序
4.1、fun_task.c
#include "main.h"
#define START_TASK_PRO 1
#define START_STK_SIZE 128
TaskHandle_t StartTask_Handler;
#define TASK1_PRIO 4
#define TASK1_STK_SIZE 128
static TaskHandle_t Task1Task_Handler = NULL;
#define TASK2_PRIO 3
#define TASK2_STK_SIZE 128
static TaskHandle_t Task2Task_Handler = NULL;
void start_task(void *pvParameters);
void gui_task(void *pvParameters);
void task1(void *pvParameters);
void task2(void *pvParameters);
void task_create(void)
{
//start_task
xTaskCreate((TaskFunction_t )start_task,
(const char* )"start_task",
(uint16_t )START_STK_SIZE,
(void* )NULL,
(UBaseType_t )START_TASK_PRO,
(TaskHandle_t* )&StartTask_Handler);
vTaskStartScheduler();
}
void start_task(void *pvParameters)
{
taskENTER_CRITICAL();
//task1
xTaskCreate((TaskFunction_t )task1,
(const char* )"task1",
(uint16_t )TASK1_STK_SIZE,
(void* )NULL,
(UBaseType_t )TASK1_PRIO,
(TaskHandle_t* )&Task1Task_Handler);
//task2
xTaskCreate((TaskFunction_t )task2,
(const char* )"task2",
(uint16_t )TASK2_STK_SIZE,
(void* )NULL,
(UBaseType_t )TASK2_PRIO,
(TaskHandle_t* )&Task2Task_Handler);
taskEXIT_CRITICAL();
vTaskDelete(StartTask_Handler);
}
//task1
void task1(void *pvParameters)
{
while (1)
{
printf("task1 run ...\r\n");
vTaskDelay(200);
}
}
//task2
void task2(void *pvParameters)
{
while (1)
{
printf("task2 run ...\r\n");
vTaskDelay(100);
}
}
4.2、main.c
#include "main.h"
#include "usart/usart.h"
#include "led/led.h"
#include "sdram/sdram.h"
#include "lcd/dsi_lcd.h"
#include "key/key.h"
#include "fdcan/fdcan.h"
static void MPU_Config(void);
static void SystemClock_Config(void);
static void CPU_CACHE_Enable(void);
//static void EXTI15_10_IRQHandler_Config(void);
static void Error_Handler(void);
int main(void)
{
MPU_Config();
CPU_CACHE_Enable();
HAL_Init();
SystemClock_Config(); /* Configure the system clock to 400 MHz */
usart_init(115200);
init_sdram();
init_led();
led1_on();
init_key();
init_lcd();
fdcan_init(10, 8, 31, 8, FDCAN_MODE_NORMAL);
task_create();
while(1);
}
五、程序运行
开发板下载程序后,复位开发板,串口输出如下: