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....