這下來看看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