移植ucosII到STM32F103ZE(五)
這個(gè)文件包含著必須用匯編寫的代碼。
申明這些變量是在其他文件定義的,本文件只做引用(有幾個(gè)好像并未引用,不過沒有關(guān)系)。
替換后的 PPendSV中斷
聲明這些函數(shù)是在本文件中定義的。EXPORT這個(gè)關(guān)鍵字是跟編譯器有關(guān)的,能被keil識別,但不能被IAR 識別。
NVIC_INT_CTTRL
NVIC_SYSPRI14
NVIC_PENDSV_PRI
NVIC_PENDSVSET
S_CPU_SR_Save
OS_CPU_SR_Restore
OSStartHighRdy()由 OSStart()調(diào)用,用來啟動最高優(yōu)先級任務(wù),當(dāng)然任務(wù)必須在OSStart()前已被創(chuàng)建。
OSStartHighRdy
OSStartHang
void
{
# if
#endif
OS_ENTER_CRITICAL();
#if OS_TASK_PROFILE_EN > 0
#endif
}
OSCtxSw
OSIntExit()對調(diào)用 OSIntCtxSw()做任務(wù)切換。
OSIntCtxSw
OSIntCtxSw()則是中斷退出時(shí),由中斷狀態(tài)切換到另一個(gè)任務(wù)。由中斷切換到任務(wù)時(shí),CPU 寄存器入棧的工作已經(jīng)做完了,所以無需做第二次了(參考邵老師書的 3.10 節(jié))。這里只不過由于 CM3 的特殊機(jī)制導(dǎo)致了在這兩個(gè)函數(shù)中只要做觸發(fā) PendSV中斷即可,具體切換由 PendSV 中斷來處理。
評論