在线时间900 小时
UID3067179
注册时间2014-10-23
NXP金币2891
TA的每日心情 | 开心 3 小时前 |
---|
签到天数: 1518 天 连续签到: 6 天 [LV.Master]伴坛终老
版主
  
- 积分
- 8784
- 最后登录
- 2025-9-9
|
一、下载源码
FreeRTOS源码
下载地址:https://github.com/FreeRTOS/Free ... eRTOSv202212.01.zip
二、添加源码到工程
2.1、添加FreeRTOS源码到工程
三、程序代码
3.1、task.c
- #include "main.h"
- #define START_TASK_PRO 1
- #define START_STK_SIZE 128
- TaskHandle_t StartTask_Handler;
- #define TASK1_PRIO 2
- #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 TASK3_PRIO 4
- #define TASK3_STK_SIZE 128
- static TaskHandle_t Task3Task_Handler = NULL;
- void start_task(void *pvParameters);
- void task1(void *pvParameters);
- void task2(void *pvParameters);
- void task3(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);
-
- //task3
- xTaskCreate((TaskFunction_t )task3,
- (const char* )"task3",
- (uint16_t )TASK3_STK_SIZE,
- (void* )NULL,
- (UBaseType_t )TASK3_PRIO,
- (TaskHandle_t* )&Task3Task_Handler);
- taskEXIT_CRITICAL();
- vTaskDelete(StartTask_Handler);
- }
- //task1
- void task1(void *pvParameters)
- {
- while (1)
- {
- rgbled_red_tog();
- PRINTF("任务1运行 ...\r\n");
- vTaskDelay(100);
- }
- }
- //task2
- void task2(void *pvParameters)
- {
- while (1)
- {
- rgbled_green_tog();
- PRINTF("任务2运行 ...\r\n");
- vTaskDelay(200);
- }
- }
- //task3
- void task3(void *pvParameters)
- {
- while (1)
- {
- rgbled_blue_tog();
- PRINTF("任务3运行 ...\r\n");
- vTaskDelay(300);
- }
- }
复制代码
3.2、main.c
- #include "main.h"
- void init_board(void)
- {
- BOARD_InitPins();
- BOARD_BootClockRUN();
- BOARD_InitDebugConsole();
- init_led();
- }
- int main(void)
- {
- uint32_t m_adv=0;
- float vl= 0.0f;
-
- init_board();
-
- task_create();
- while (1)
- {
- }
- }
复制代码
四、程序运行
串口输出运行结果
|
|