freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

嵌入式開發(fā)系統(tǒng)概況(參考版)

2024-10-15 18:37本頁(yè)面
  

【正文】 // 啟動(dòng)操作系統(tǒng) ? } 。StackMain[STACKSIZE1], 0)。 // uC/OS初始化 ? OSTimeSet(0)。 } 多任務(wù)應(yīng)用程序的編寫 ? C語(yǔ)言入口函數(shù) Main ? 調(diào)用函數(shù) ARMTargetInit初始化 ARM處理器 ? 調(diào)用 OSInit進(jìn)行操作系統(tǒng)初始化 ? 調(diào)用 OSTaskCreate函數(shù)兩個(gè)任務(wù): TaskLED和 TaskSEG ? 調(diào)用 ARMTargetStart函數(shù)啟動(dòng)時(shí)鐘節(jié)拍中斷 ? 調(diào)用 OSStart啟動(dòng)系統(tǒng)任務(wù)調(diào)度 ? 任務(wù)處理函數(shù) ? void Main(void) ? { ? ARMTargetInit()。 恢復(fù)處理器寄存器 。 調(diào)用 OSTimeTick()。 } OSTickISR() ? 時(shí)鐘節(jié)拍 ISR ? void OSTickISR(void) { 保存處理器寄存器 。 將所有處理器寄存器從新任務(wù)的堆棧中恢復(fù)出來(lái) 。 OSPrioCur = OSPrioHighRdy。 調(diào)用用戶定義的 OSTaskSwHook()。 } OSIntCtxSw() ? 中斷級(jí)的任務(wù)切換函數(shù) ? void OSIntCtxSw(void) { 調(diào)整堆棧指針去掉在調(diào)用 OSIntExit(), OSIntCtxSw()過(guò)程中壓入堆棧的多余內(nèi)容 。 將所有處理器寄存器從新任務(wù)的堆棧中恢復(fù)出來(lái) 。 OSPrioCur = OSPrioHighRdy。 調(diào)用用戶定義的 OSTaskSwHook()。 } OSCtxSw() ? 任務(wù)級(jí)的任務(wù)切換函數(shù) ? void OSCtxSw(void) { 保存處理器寄存器 。s stack。 //設(shè)置新的當(dāng)前任務(wù)的地址 OSRunning = TRUE。 OSStartHighRdy() ? 運(yùn)行優(yōu)先級(jí)最高的就緒任務(wù) ? void OSStartHighRdy (void) { Call user definable OSTaskSwHook()。 定時(shí)中斷函數(shù) 。 OSIntExit由 OSTickISR調(diào)用,負(fù)責(zé)在定時(shí)中斷中任務(wù)之間的切換 。 OSStartHighRdy( )負(fù)責(zé)獲取新任務(wù)的堆棧指針并從堆棧指針中恢復(fù)新任務(wù)的所有處理器寄存器。 OSStart( )調(diào)用本函數(shù) 。 OSStart( )負(fù)責(zé)使就緒狀態(tài)的任務(wù)開始運(yùn)行 。 ? } ? 181。 ? 該函數(shù)通過(guò)設(shè)置一個(gè)全局變量 need_to_swap_context標(biāo)志以表示在中斷服務(wù)程序中進(jìn)行任務(wù)切換,并在 OSTickISR()中判斷該變量以進(jìn)行正確的動(dòng)作。它是在時(shí)鐘中斷服務(wù)例程中發(fā)現(xiàn)有高優(yōu)先級(jí)任務(wù)等待的時(shí)鐘信號(hào)到來(lái),則需要在中斷退出后并不返回被中斷任務(wù),而是直接調(diào)度就緒的高優(yōu)先級(jí)任務(wù)執(zhí)行。 ? 系統(tǒng) HOOK函數(shù):在這個(gè)文件里面還需要實(shí)現(xiàn)幾個(gè)操作系統(tǒng)規(guī)定的 hook函數(shù),這些函數(shù)為用戶定義函數(shù),它將在相應(yīng)的操作系統(tǒng)調(diào)用后執(zhí)行由用戶定義的這些hook函數(shù),執(zhí)行特定的用戶操作,如果沒(méi)有特殊需求,則只需要簡(jiǎn)單地將它們都實(shí)現(xiàn)為空函數(shù)就可以。在 ARM體系結(jié)構(gòu)下,任務(wù)堆??臻g由高至低依次將保存著 pc、 lr、 r1 r1 r … r r0、 CPSR、SPSR,下圖說(shuō)明了 OSTaskStkInit()初始化后的也是新創(chuàng)建任務(wù)的堆棧內(nèi)容。 ?任務(wù)堆棧初始化 ? 該函數(shù)由 OSTaskCreate()或 OSTaskCreateExt()調(diào)用,用來(lái)初始化任務(wù)的堆棧并返回新的堆棧指針 stk。 /* Each stack entry is 16bit wide */ ? ARM處理器相關(guān)宏定義 ? define OS_ENTER_CRITICAL() ARMDisableInt() ? define OS_EXIT_CRITICAL() ARMEnableInt() ? 堆棧增長(zhǎng)方向 堆棧由高地址向低地址增長(zhǎng),這個(gè)也是和編譯器有關(guān)的,當(dāng)進(jìn)行函數(shù)調(diào)用時(shí),入口參數(shù)和返回地址一般都會(huì)保存在當(dāng)前任務(wù)的堆棧中,編譯器的編譯選項(xiàng)和由此生成的堆棧指令就會(huì)決定堆棧的增長(zhǎng)方向。 /* Single precision floating point */ typedef double FP64。 /* Unsigned 32 bit quantity */ typedef signed long INT32S。 /* Unsigned 16 bit quantity */ typedef signed int INT16S。 /* Unsigned 8 bit quantity */ typedef signed char INT8S。 ? 數(shù)據(jù)類型定義 typedef unsigned char BOOLEAN。} OS_STK_GROWTH ? 3. OS_TASK_SW() 它是在 181。 /* 181。 移植的主要工作 ? 用 define設(shè)置一個(gè)常量的值 () ? 聲明 10個(gè)數(shù)據(jù)類型 () ? 用 define聲明三個(gè)宏 () ? 用 C語(yǔ)言編寫六個(gè)簡(jiǎn)單的函數(shù) () ? 編寫四個(gè)匯編語(yǔ)言函數(shù) () ? 根據(jù)處理器的不同,一個(gè)移植實(shí)例可能需要編寫或改寫 50至 300行的代碼,需要的時(shí)間從幾個(gè)小時(shí)到一星期不等。 ? 將 uC/OSII移植到 ARM處理器上,需要完成的工作非常簡(jiǎn)單,大部分的修改工作集中在三個(gè)和體系結(jié)構(gòu)相關(guān)的文件中,代碼量大約是 500行。系統(tǒng)設(shè)計(jì)主要完成 ECU控制部分的設(shè)計(jì),可以在 ucos操作系統(tǒng)下實(shí)現(xiàn)。(車速調(diào)置開關(guān)、制動(dòng)踏板、恢復(fù)開關(guān)) ? 車速傳感器可以用一個(gè)模擬信號(hào),經(jīng) ad轉(zhuǎn)換模擬。當(dāng)汽車在長(zhǎng)距離的高速公路行駛時(shí),啟動(dòng)速度控制系統(tǒng)就可以自動(dòng)將汽車固定在特定的速度上,免除駕車者長(zhǎng)時(shí)間腳踏油門踏板之苦。 實(shí)驗(yàn)要求: ? .wav文件實(shí)現(xiàn)單聲道 ,多聲道選擇播放 ? . ? ? ,以免妨礙司機(jī)開車 ? . 實(shí)驗(yàn)?zāi)M條件: ? 實(shí)驗(yàn)箱已經(jīng)能夠滿足音頻播放的硬件要求 MCU Screen Keyboard FLASH IIS 總線 D/A
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1