【STM32】FreeRTOS 移植到 STM32F103
生活随笔
收集整理的這篇文章主要介紹了
【STM32】FreeRTOS 移植到 STM32F103
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- main.c
移植后的程序結構如下圖:
本節的任務設計為:
main.c
#include "led.h" #include "delay.h" #include "sys.h" #include "FreeRTOS.h" #include "task.h"#define START_TASK_PRIO 1 //任務優先級 #define START_STK_SIZE 128 //任務堆棧大小 TaskHandle_t StartTask_Handler; //任務句柄 void start_task(void *pvParameters); //任務句柄#define LED0_TASK_PRIO 2 //任務句柄 #define LED0_STK_SIZE 50 //任務堆棧大小 TaskHandle_t LED0Task_Handler; //任務堆棧大小 void led0_task(void *pvParameters); //任務函數#define LED1_TASK_PRIO 3 //任務函數 #define LED1_STK_SIZE 50 //任務堆棧大小 TaskHandle_t LED1Task_Handler; //任務句柄 void led1_task(void *pvParameters); //任務句柄int main(void) {NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); //設置系統中斷優先級分組4 delay_init(); //延時函數初始化 uart_init(115200); //初始化串口LED_Init(); //初始化LED//創建開始任務xTaskCreate((TaskFunction_t )start_task, //任務函數(const char* )"start_task", //任務名稱(uint16_t )START_STK_SIZE, //任務堆棧大小(void* )NULL, //傳遞給任務函數的參數(UBaseType_t )START_TASK_PRIO, //任務優先級(TaskHandle_t* )&StartTask_Handler); //任務句柄 vTaskStartScheduler(); //開啟任務調度 }//開始任務任務函數 void start_task(void *pvParameters) {taskENTER_CRITICAL(); //進入臨界區//創建LED0任務xTaskCreate((TaskFunction_t )led0_task, (const char* )"led0_task", (uint16_t )LED0_STK_SIZE, (void* )NULL, (UBaseType_t )LED0_TASK_PRIO, (TaskHandle_t* )&LED0Task_Handler); //創建LED1任務xTaskCreate((TaskFunction_t )led1_task, (const char* )"led1_task", (uint16_t )LED1_STK_SIZE, (void* )NULL,(UBaseType_t )LED1_TASK_PRIO,(TaskHandle_t* )&LED1Task_Handler); vTaskDelete(StartTask_Handler); //刪除開始任務taskEXIT_CRITICAL(); //退出臨界區 }//LED0任務函數 void led0_task(void *pvParameters) {while(1){LED0=~LED0;vTaskDelay(500);} } //LED1任務函數 void led1_task(void *pvParameters) {while(1){LED1=0;vTaskDelay(200);LED1=1;vTaskDelay(800);} }總結
以上是生活随笔為你收集整理的【STM32】FreeRTOS 移植到 STM32F103的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【STM32】无线通信实验代码详解
- 下一篇: 【STM32】FreeRTOS 系统配置