微控制器移植 UCOS移植 (函式詳解)

2021-10-10 13:28:26 字數 1822 閱讀 7168

1.系統滴答定時器systick

static void systickconfig

(void)

/* configure the systick handler priority */

nvic_setpriority

(systick_irqn,

0x0);}

//定時器中斷, 1ms中斷一次

void systick_handler

(void)

void timingdelay_decrement

(void)

}2.任務的建立與啟動任務

,//任務**的位址

void *p_arg,

//任務引數

os_stk *ptos,

//任務堆疊棧頂指標

int8u prio)

//任務的優先順序

//啟動任務,第乙個任務

//-中斷優先順序led2_task_prio的值越大,優先順序越低;反之,值越小,優先順序越大。

void

start_task

(void

*pdata)

os_stat_rdy       表示任務處於就緒狀態

os_stat_sem 表示任務處於等待訊號量狀態

os_stat_mbox 表示任務處於等待訊息郵箱狀態

os_stat_q 表示任務處於等待訊息佇列狀態

os_stat_suspend 表示任務處於被掛起狀態

os_stat_mutex 表示任務處於等待互斥型訊號量狀態

3.任務掛起和恢復注:任務掛起和恢復不可用於空閒任務

掛起函式:ostasksuspend(); 恢復函式:ostaskresume();

4.任務的刪除

刪除函式:ostaskdel(int8u prio);

5.訊號量

ossempend的函式原型為:

voidossempend(os_event *pevent,int16u timeout,int8u err)

pevent:就是要請求的訊號量位址;

timeout:請求的超時時間,如果為0表示無限時等待;

err:用來返回是否出錯。每執行一次

ossempend,oseventcnt就會減1。如果oseventcnt值為0,執行ossempend時,當時任務將因為無法得到相應的資源而被 掛起。

ossempost的函式原型為:

int8uossempost(os_event *pevent),

同樣pevent 就是要傳送的訊號量位址;

每執行一次ossempost,oseventcnt就會加1

微控制器 printf 移植過程

在網上看到有人在微控制器上使用printf函式,心癢癢,也想用,看了網上的一些方法,大都是51微控制器的,說的是在51微控制器編譯軟體庫中有自帶printf函式,也有自己實現 乙個自己的printf函式的,但是講的不詳細,看了好幾個部落格,東拼西湊,也在自己的 微控制器上弄出來了。1,先進行用到的知...

UCOS學習筆記 在51微控制器上移植UCOS

作業系統是一種與硬體 處理器 相關的軟體,根據某一種處理器設計的作業系統一般是不能再其他種類的處理器上執行的。若要在其他處理器上執行該作業系統,必須對作業系統進行相應的改造,即所謂作業系統的移植。一.ucos移植的一般性問題 1.可重入函式 在多工的作業系統中,系統提供的函式可以被多個任務呼叫,而不...

第七章 在51微控制器上移植uc os 2

第七章 在51微控制器上移植 uc os 2 7.1 uc os 2移植的一般性問題 7.1.1可重入函式 1 多個任務呼叫同乙個函式,其中的全域性變數丟失產生錯誤。2 一般來說,乙個可重入函式只使用區域性變數,區域性變數儲存在堆疊中,如果一定要用,必須做保護。7.1.2時鐘節拍的產生 uc os ...