(2)自寫zrtos API詳細解釋

這下來看看zrtos相關的api函數吧,順便我也將源碼傳上來:

(任務)task相關的api:

 void start_os(void);

start_os:開始操作系統的任務調度

 void open_scheduling(void);

open_scheduling:調用該函數將會立刻立刻進行任務調度,任務自己放棄cpu
 void enter_int(void);

endter_int:調用該函數後全局中斷屏蔽
 void exit_int(void);

exit_int:調用該函數後全局中斷屏蔽打開


uint32 os_create_n(void(*fun_poi)(void* prg),void *prg,uint32 level,uint32 task_num);

os_create_n:

參數說明:

fun_poi:任務指向的函數

prg:要傳遞的參數

level:任務的優先級

task_num:任務佔用的內存大小(task_num*4 bytes)

說明:創建一個任務

void z_os_start(void);

z_os_start;內部會創建一個空間任務(最低優先級),開啓systick,然後調用start_os函數開始調度
void os_task_delay(uint32 count);

os_task_delay:任務延時,將cpu交給其它的任務
void os_task_del(void );

os_task_del:刪除正在運行的本任務


(msg)消息郵箱:

TCB_MSG* msg_create(void);

msg_create:創建一個消息郵箱
void msg_close(TCB_MSG* mTCB_MSG);

msg_close:關閉一個消息郵箱
uint32 msg_get(TCB_MSG* mTCB_MSG,void **msg,uint32 msg_get_delay);

msg_get:

參數說明:

mTCB_MSG:消息郵箱的控制塊

msg:消息的地址

msg_get_delay:消息的等待時間

說明:獲取消息郵箱內的消息
uint32 msg_put(TCB_MSG* mTCB_MSG,uint32 msg,uint32 msg_get_delay);

msg_put:

參數說明:

mTCB_MSG:消息控制塊

msg_get_delay:消息獲取的超時時間


(SEM)信號量:

TCB_SEM* sem_create(void);

sem_create:創建一個信號量

void sem_free(TCB_SEM *mSEM);

sem_free:信號量釋放
uint32 sem_post(TCB_SEM *mSEM);
sem_post:

參數說明:

mSEM:信號量控制塊

說明:發送一個信號量

uint32 sem_pend(TCB_SEM *mSEM,uint32 sem_wait_delay);

sem_pend:

參數說明:

mSEM:信號量控制塊

sem_wait_delay:信號量等待超時時間


工程的代碼:

工程中創建到了3個任務,兩個同優先級的,一個高優先級的。

百度雲下載:http://pan.baidu.com/s/1hswNuTm 密碼:e586

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章