基于S3C44BOX用中斷方式在μC/OS-Ⅱ上實(shí)現多任務(wù)通信
應用主程序是用C編寫(xiě),通過(guò)S3C44BOX的初始化程序中Bmain語(yǔ)句跳轉進(jìn)入的,首先對串口的端口、波特率、數據位等進(jìn)行初始化,然后設定串口中斷調用函數的地址,該地址和下面串口中斷源的地址一致,然后通過(guò)對中斷寄存器的設置打開(kāi)串口中斷,這時(shí)才開(kāi)始啟動(dòng)任務(wù),在任務(wù)中完成對串口數據的處理。在主程序中程序流程見(jiàn)圖2。
圖2 應用主程序流程圖
在編寫(xiě)與S3C44BOX硬件有關(guān)的初始化程序時(shí)主要是對S3C44BOX內部各寄存器進(jìn)行初始化,S3C44BOX有七種異常中斷向量,地址為0x00— 0x1c(其中0x14地址保留),這些是硬件固化了的地址,不能用軟件隨意改變,只能根據各異常中斷向量地址編寫(xiě)中斷入口點(diǎn),在入口地址處放置一條跳轉指令,跳轉到異常處理程序。當內部或外部中斷產(chǎn)生時(shí),程序會(huì )跳轉到相對應的異常中斷向量地址處,在應用主程序的初始化過(guò)程中已通過(guò)S3C44BOX內部寄存器INTMOD將串口中斷設置為IRQ中斷模式,所以在該部分程序中,當串口中斷產(chǎn)生時(shí),會(huì )跳轉到IRQ異常中斷向量地址處,根據跳轉語(yǔ)句進(jìn)入到對應的 IRQ異常處理程序中。因為IRQ有30個(gè)中斷源,所以在該處理程序中要判斷中斷源的類(lèi)型,判斷是串口中斷后就跳轉到位于操作系統中的串口中斷處理調用程序中去。其中每個(gè)中斷源的物理地址(起始地址加上矢量地址)是在數據段中定義的,起始地址則是根據硬件結構在option.a文件中設置,為 0x0c7fff00。
評論