FreeRTOS簡單任務排程實現

2021-10-04 02:09:06 字數 1373 閱讀 7858

#ifndef rtos_h

#define rtos_h

#include

"freertos.h"

#include

"task.h"

#define pex_rtos_start rtos_start

void

rtos_start

(void);

void

freertos_task1

(void

*pvparameters)

;void

freertos_task2

(void

*pvparameters)

;#endif

#include

"rtos.h"

uint32_t freertos_task1_counter =0u;

uint32_t freertos_task2_counter =0u;

void

rtos_start

(void)}

void

freertos_task1

(void

*pvparameters)

}void

freertos_task2

(void

*pvparameters)

}

此例,給兩個任務做了乙個任務計數操作,任務一每隔1s執行一次,任務二每隔2s執行一次,通過vtaskdelay方法將相應任務置為阻塞狀態來實現通過debug觀察兩個任務的計數狀態可以看出,任務一執行8次的時候,任務二執行了4次,兩個任務雖然都是while(1)死迴圈,可以通過任務排程在乙個掛起的時候執行另乙個,符合設計邏輯,xtaskcreate的第五個引數是任務優先順序的定義,此處數字越大代表優先順序越高,對**稍作修改,觀察一下現象

#include

"rtos.h"

uint32_t freertos_task1_counter =0u;

uint32_t freertos_task2_counter =0u;

void

rtos_start

(void)}

void

freertos_task1

(void

*pvparameters)

}void

freertos_task2

(void

*pvparameters)

}

這裡將任務一優先順序設為1,任務二優先順序設為2,關閉vtaskdelay的任務阻塞操作

STM32簡單任務排程的總結

概述 stm32的開發目前大多數還開處於 裸奔 的階段,處於開發成本的考慮,可能還未嵌入任何的rtos系統,由於沒有作業系統的支援,因而不能方便的對多工進行排程和管理。而有的任務不緊急,不需要過多的時間去迴圈執行,因此需要乙個簡單的任務排程來解決這個問題。stm32f103ze的ahb時鐘為72mh...

C 簡單任務池

今天編寫乙個非同步通訊框架的,非同步派發任務,單路併發,與直接invoke相比的好處是可以使任務的執行代價根據時間均勻化,請看 public class servicetask private action action public void execute public class servic...

FreeRTOS 任務排程 List 組織

嵌入式 freertos 前面了解了 freertos 的記憶體管理,接下來看看任務排程,這也是乙個作業系統中最重要的一部分,而其任務排程大量使用了鍊錶 list.c 實現 排程器使用鍊錶跟蹤不同狀態下的任務 就緒 掛起 延時的任務,都會被掛接到各自的鍊錶中 所以這裡用一定篇幅介紹下主要供排程使用的...