FreeRtos 1 任務建立與管理

2021-10-22 17:16:10 字數 2064 閱讀 9210

freertos實時作業系統移植

以上是歷史freertos部落格。freertos系列我會堅持更下去。

任務的建立函式

basetype_t xtaskcreate

( taskfunction_t pxtaskcode,

const

char

*const pcname,

const configstack_depth_type usstackdepth,

void

*const pvparameters,

ubasetype_t uxpriority,

taskhandle_t *

const pxcreatedtask )

引數: pxtaskcode :要建立的任務函式名稱

pcname :具有描述性的任務名稱,隨便起

usstackdepth :為乙個任務分配的棧空間

pvparameters :傳參,一般情況下直接給null

uxpriority :優先順序

pxcreatedtask :建立任務的控制代碼

返回值:

成功:pdpass

每個任務都有乙個控制代碼,模擬linux檔案下的檔案描述符。操作控制代碼也就

可以操作這個任務。

vtaskdelete()

;任務刪除

引數:任務控制代碼

假設我們要建立乙個led閃爍任務,要怎末做內。我們先給大體框架整出來。假設我們有很多任務,我們可以給這些任務放到乙個大任務裡面。

宣告大任務的控制代碼。

宣告小任務(led)任務的控制代碼

宣告大任務建立的函式。

宣告led任務函式

intmain

(void

)else

while(1

);}void 大任務函式(

void

)void 子任務函式(

void

)

程式原始碼示例

#include

"stm32f10x.h"

#include

"led.h"

#include

"stdio.h"

#include

"usart1.h"

#include

"systick.h"

#include

"delay.h"

#include

"my_key.h"

#include

"freertos.h"

#include

"task.h"

null

;/* 建立任務控制代碼 */

static taskhandle_t led_task_handle =

null

;/* led 任務控制代碼 */

static

void

(void);

/* 用於建立任務 */

static

void

led_task

(void

* pvparameters)

;/* led_task 任務實現 */

intmain

(void

)else

while(1

);/* 正常不會執行到這裡 */

}static

void

(void

)vtaskdelete

;taskexit_critical()

;//退出臨界區

}//定義乙個任務

static

void

led_task

(void

* parameter)

}

還有任務的掛起函式和任務的恢復函式

掛起函桉:vtasksuspend()

;恢復函式:vtaskresume()

;倆函式都只有乙個引數。就是需要操作的任務的控制代碼

thanks!!!

FreeRTOS 四 任務掛起與恢復

函式 描述vtasksuspend 掛起乙個任務 vtaskresume 恢復乙個任務的執行 vtaskresumefromeisr 中斷服務函式中恢復乙個任務的執行 此函式用於將某個任務設定為掛起態,進入掛起態的任務永遠都不會進入執行態。退出掛起態的唯一方法就是呼叫任務恢復函式vtaskresum...

FreeRTOS學習(二)任務基礎

2.任務基礎知識 在嵌入式開發中,有兩種常見的開發方式 前後臺系統和嵌入式作業系統。1.1 前後臺系統 前台 就是中斷,可以多級巢狀,處於處理一些實時性要求比較高的事件,比如按鍵的狀態獲取。後台 乙個無限迴圈,在迴圈中呼叫相關函式完成相應操作。這種程式設計方式的主要缺陷在於兩方面 1 複雜度方面 無...

FreeRTOS學習(三)任務管理

2.任務刪除 3.任務掛起與恢復 4.任務相關api freertos 提供了多種任務建立的api,這裡主要列舉了動態建立和靜態建立 函式 api 功能描述 xtaskcreate 動態建立,堆疊由 freertos 動態分配 xtaskcreatestatic 靜態建立,堆疊由使用者指定分配 1....