# 【国民技术车规MCU N32A455开发板】测评 - 3 - FreeRTOS系统初步移植+简单运行
之前一直在使用FreeRTOS,不过自己从来没有向一个单片机从头新建一个操作系统环境,将自己本次使用这个开发板搭建FreeRTOS的环境的过程记录下来。
### STEP one:
首先的第一步搭建裸机keil开发环境新建六个文件夹分别是EWARM没用感觉可以删了,firmware文件夹存放一些N32A455单片机的头文件以及一些底层驱动,freertos存放来自freertos的内核代码,MDK—ARM存keil的工程文件,inc和src分别存放main等函数,新建完以后使用keil的project的new project选中MDK—ARM文件夹将在这个文件夹中新建工程。
之后打开keil工程点击manage project itms 进入包管理按照一下进行添入
之后在添加文件夹识别路径,稳妥起步尽量添加每一个文件夹省的到时候找不到
之后调用xTaskCreate创建任务创建三个任务
```c
void start_task(void *pvParameters)
{
taskENTER_CRITICAL(); /* 进入临界区 */
/* 创建任务1 */
xTaskCreate((TaskFunction_t )task1, /* 任务函数 */
(const char* )"task1", /* 任务名称 */
(uint16_t )TASK1_STK_SIZE, /* 任务堆栈大小 */
(void* )NULL, /* 传入给任务函数的参数 */
(UBaseType_t )TASK1_PRIO, /* 任务优先级 */
(TaskHandle_t* )&Task1Task_Handler); /* 任务句柄 */
/* 创建任务2 */
xTaskCreate((TaskFunction_t )task2, /* 任务函数 */
(const char* )"task2", /* 任务名称 */
(uint16_t )TASK2_STK_SIZE, /* 任务堆栈大小 */
(void* )NULL, /* 传入给任务函数的参数 */
(UBaseType_t )TASK2_PRIO, /* 任务优先级 */
(TaskHandle_t* )&Task2Task_Handler); /* 任务句柄 */
/* 创建任务3 */
xTaskCreate((TaskFunction_t )task3, /* 任务函数 */
(const char* )"task3", /* 任务名称 */
(uint16_t )TASK3_STK_SIZE, /* 任务堆栈大小 */
(void* )NULL, /* 传入给任务函数的参数 */
(UBaseType_t )TASK3_PRIO, /* 任务优先级 */
(TaskHandle_t* )&Task3Task_Handler); /* 任务句柄 */
vTaskDelete(StartTask_Handler); /* 删除开始任务 */
taskEXIT_CRITICAL(); /* 退出临界区 */
}
```
通过vTaskStartScheduler();启动 RTOS 调度器
通过vTaskDelay函数取消堵塞多长时间进入一次
freertos.zip
(10.01 MB, 下载次数: 22)
freertos.zip
(10.01 MB, 下载次数: 22)