测试在开发板上移植FreeRTOS系统。
一、源码下载
下载FreeRTOS源码.
下载地址:Releases · FreeRTOS/FreeRTOS
二、程序部分
2.1、下载的文件源码复制到项目文件middleware下,只保留Source文件夹。添加源码和头文件到工程。
2.2、代码
2.2.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;
#define TASK_LM8168_PRIO 5
#define TASK_LM8168_STK_SIZE 128
static TaskHandle_t Task_LM8168_Task_Handler = NULL;
void start_task(void *pvParameters);
void gui_task(void *pvParameters);
void task1(void *pvParameters);
void task2(void *pvParameters);
void task_LM8168(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");
led_red_tog();
vTaskDelay(500);
}
}
//task2
void task2(void *pvParameters)
{
while (1)
{
printf("task2 run ...\r\n");
led_blue_tog();
vTaskDelay(250);
}
}
2.2.2、main.c
/*
* Copyright (c) 2015, Freescale Semiconductor, Inc.
* Copyright 2016-2017 NXP
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include "main.h"
int main(void)
{
/* Board pin, clock, debug console init */
BOARD_InitHardware();
init_led();
task_create();
while (1)
{
}
}
三、运行结果
编译后下载程序,开发板上的LED闪烁和串口输出任务打印

