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

正文內(nèi)容

基于stm32的嵌入式操作系統(tǒng)程序設(shè)計(jì)及實(shí)現(xiàn)畢業(yè)論文(編輯修改稿)

2025-07-23 09:30 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 OS_CPU_SR_Restore()。 OSStartHighRdy()。 OSCtxSw()。 OSIntCtxSw()。 函數(shù)實(shí)現(xiàn) 武昌工學(xué)院畢業(yè)論文(設(shè)計(jì))專(zhuān)用稿紙9(1)關(guān)中斷函數(shù)(OS_CPU_SR_Save()) 即先保存當(dāng)前的狀態(tài)寄存器然后關(guān)中斷。故關(guān)中斷實(shí)現(xiàn)代碼如下 OS_CPU_SR_Save MRS R0, PRIMASK; CPSID I BX LR 這也是宏OS_ENTER_CRITICAL() 的最終實(shí)現(xiàn)。 (2)恢復(fù)中斷函數(shù)(OS_CPU_SR_Restore() ) 這是宏OS_EXIT_CRITICAL() 的最終實(shí)現(xiàn)。也就是將狀態(tài)寄存器的內(nèi)容從R0中恢復(fù),然后跳轉(zhuǎn)回去。此函數(shù)完成的將中斷狀態(tài)恢復(fù)到關(guān)中斷前的狀態(tài)。其代碼如下: OS_CPU_SR_Restore MSR PRIMASK, R0 BX LR CortexM3處理器有單獨(dú)的指令來(lái)打開(kāi)或者關(guān)閉中斷,所以這兩個(gè)函數(shù)實(shí)現(xiàn)起來(lái)很簡(jiǎn)單。 (3)啟動(dòng)最高優(yōu)先級(jí)任務(wù)運(yùn)行(OSStartHighRdy()) OSStart()調(diào)用OSStartHighRdy()來(lái)啟動(dòng)最高優(yōu)先級(jí)任務(wù)的運(yùn)行,從而啟動(dòng)整個(gè)系統(tǒng)。OSStartHighRdy()主要完成以下幾項(xiàng)工作: ① 為任務(wù)切換設(shè)置PendSV的優(yōu)先級(jí);② 為第一次任務(wù)切換設(shè)置棧指針為0;③ 設(shè)置OSRunning = TRUE,以表明系統(tǒng)正在運(yùn)行;④ 觸發(fā)一次 PendSV,打開(kāi)中斷等待第一次任務(wù)的切換。 (4)任務(wù)級(jí)和中斷級(jí)任務(wù)切換 因?yàn)镃ortexM3 進(jìn)入異常自動(dòng)保存寄存器 R3R0,R12,LR ,PC和xPSR這種的特殊機(jī)制,這兩個(gè)函數(shù)都是觸發(fā)一次PendSV來(lái)實(shí)現(xiàn)任務(wù)的切換。首先是微處理器自動(dòng)保存上面提到的寄存器,然后把當(dāng)前的堆棧指針保存到任務(wù)的棧中,將要切換的任務(wù)的優(yōu)先級(jí)和任務(wù)控制塊的指針賦值給運(yùn)行時(shí)的最高優(yōu)先級(jí)指針和運(yùn)行時(shí)的任務(wù)控制塊指針,最后再把要運(yùn)行的任務(wù)的堆棧指針賦值給微處理器的堆棧指針,這樣就可以退出中斷服務(wù)程序了。中斷服務(wù)程序退出的時(shí)候?qū)⒆詣?dòng)出棧R3R0 ,R12 ,LR ,PC 和xPSR 。具體的PendSV服務(wù)程序的偽代碼如下: OS_CPU_PendSVHandler : // 進(jìn)入異常,處理器自動(dòng)保存R3R0,R12,LR,PC 和xPSR if (PSP != NULL) //判斷不是開(kāi)始第一次任務(wù) { 武昌工學(xué)院畢業(yè)論文(設(shè)計(jì))專(zhuān)用稿紙10保存R4R11到任務(wù)的堆棧; OSTCBCurOSTCBStkPtr = SP。 //保存堆棧的指針到任務(wù)控制塊 } OSTakSwHook()。 //實(shí)現(xiàn)用戶(hù)擴(kuò)展功能而定義的鉤子 OSPrioCur = OSPrioHighRdy。 //設(shè)置運(yùn)行任務(wù)為最高優(yōu)先級(jí)就緒任務(wù) OSTCBCur = OSTCBHighRdy。 // 設(shè)置運(yùn)行的任務(wù)控制塊為最高 //就緒任控制塊務(wù) PSP = OSTCBHighRdyOSTCBStkPtr。//將要切換的任務(wù)堆棧指 // 針賦給微處理器的堆棧指 // 針從而實(shí)現(xiàn)切換 從堆棧中恢復(fù) R4R11。 從異常中返回; // 退出異常,處理器自動(dòng)恢復(fù)R3R0,R12,LR,PC 和xPSR 這樣很容易寫(xiě)出PendSV中斷服務(wù)程序的代碼了。 (5)與CPU 相關(guān)的C 函數(shù)和鉤子函數(shù)( ) 這個(gè)文件中包含10個(gè)函數(shù),具體如下: OSInitHookBegin ()。 OSInitHookEnd ()。 OSTaskCreateHook ()。 OSTaskDelHook ()。 OSTaskIdleHook ()。 OSTaskStatHook ()。 OSTaskStkInit ()。 OSTaskSwHook ()。 OSTCBInitHook ()。 OSTimeTickHook ()。 這10個(gè)函數(shù)有9個(gè)是為了擴(kuò)展用戶(hù)功能而定義的鉤子函數(shù),這些鉤子函數(shù)可以都為空函數(shù),也可以加上一些用戶(hù)需要的擴(kuò)展功能。另外一個(gè)不是鉤子函數(shù),它是OSTaskStkInit()。這個(gè)函數(shù)的功能是當(dāng)一個(gè)任務(wù)被創(chuàng)建時(shí),它完成這個(gè)任務(wù)堆棧的初始化。這個(gè)函數(shù)首先將用戶(hù)為任務(wù)分配的堆棧頂?shù)刂焚x值給一個(gè)棧指針變量,然后再通過(guò)這個(gè)棧指針向任務(wù)的??臻g寫(xiě)入初值。這個(gè)初值無(wú)關(guān)緊要,為0就可以了。這個(gè)函數(shù)的代碼時(shí)下如下: OS_STK *OSTaskStkInit (void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT16U opt) { OS_STK *stk。 (void)opt。 //防止編譯器報(bào)錯(cuò) stk = ptos。 // 將棧頂?shù)刂焚x值給棧指針變量 武昌工學(xué)院畢業(yè)論文(設(shè)計(jì))專(zhuān)用稿紙11 // 以進(jìn)入異常的順序來(lái)給棧賦初值 *(stk) = (INT32U)0x00000000L。 //xPSR *(stk) = (INT32U)task。 //Entry Point *(stk) = (INT32U)0x00000000L。 // R14 (LR) *(stk) = (INT32U)0x00000000L。 //R12 *(stk) = (INT32U)0x00000000L。 //R3 *(stk) = (INT32U)0x00000000L。 // R2 *(stk) = (INT32U)0x00000000L。 // R1 *(stk) = (INT32U)p_arg。 //R0 : 傳遞的參數(shù) // 剩下的寄存器初始化 *(stk) = (INT32U)0x00000000L。 // R11 *(stk) = (INT32U)0x00000000L。 //R10 *(stk) = (INT32U)0x00000000L。 // R9 *(stk) = (INT32U)0x00000000L。 //R8 *(stk) = (INT32U)0x00000000L。 //R7 *(stk) = (INT32U)0x00000000L。 // R6 *(stk) = (INT32U)0x00000000L。 // R5 *(stk) = (INT32U)0x00000000L。 // R4 return (stk)。 } 其他的鉤子函數(shù)都為空函數(shù)。這樣,整個(gè)移植的代碼就介紹完了。整個(gè)移植的過(guò)程非常容易。剩下的工作就是編寫(xiě)用戶(hù)任務(wù),并在開(kāi)發(fā)板上驗(yàn)證,以此來(lái)驗(yàn)證該移植方案是可行的和成功的。武昌工學(xué)院畢業(yè)論文(設(shè)計(jì))專(zhuān)用稿紙123 LCD 屏程序設(shè)計(jì)及調(diào)試 工具概述RVMDK 源自德國(guó)的 KEIL 公司,是 RealView MDK 的簡(jiǎn)稱(chēng)。RealView MDK 集成了業(yè)內(nèi)最領(lǐng)先的技術(shù),支持 ARMARM9 和 CortexM3 核處理器,自動(dòng)配置啟動(dòng)代碼,集成 Flash 燒寫(xiě)模塊,強(qiáng)大的 Simulation 設(shè)備模塊,性能分析等功能。 keil4 工程建立以及仿真方法(1)新建工程。打開(kāi) MDK 軟件,選擇 Project→New uVision Project 菜單項(xiàng),新建一個(gè)文件夾名為“畢業(yè)設(shè)計(jì) ”,保存,則彈出器件選擇對(duì)話(huà)框,這里選擇 STM32F103RB。單擊“OK” 按鈕,則彈出一個(gè)對(duì)話(huà)框加載啟動(dòng)文件到工程中。打開(kāi)“畢業(yè)設(shè)計(jì) ”文件夾,在里面添加子文件夾(2)添加系統(tǒng)文件與工程管理?;氐健爱厴I(yè)設(shè)計(jì) ”文件夾中,把系統(tǒng) SYSTEM 文件夾(delay,sys,usart 文件夾)復(fù)制過(guò)來(lái),再建立 main 和 hardware 文件夾用于主函數(shù)和各外設(shè)資源函數(shù)。回到工程中,點(diǎn)擊 manage ponents,添加工程中的文件,進(jìn)行分類(lèi)管理工程。(3)最后新建 main 文件,在編輯區(qū)寫(xiě)代碼。 硬件平臺(tái)紹ALIENTEK MiniSTM32 選擇的是 STM32F103RBT6 作為MCU,STM32F103 的型號(hào)眾多,作為一款低端開(kāi)發(fā)板,選擇 STM32F103RBT6 是最佳的選擇。128K FLASH、20K SRAM、2 個(gè) SPI、3 個(gè)串口、1 個(gè) USB 、1 個(gè) CAN、2 個(gè) 12 位的 ADC、RTC 、51 個(gè)可用 IO腳,這樣的配置無(wú)論放到那里都是很不錯(cuò)的了,更重要的是其價(jià)格,18元左右的零售價(jià),相對(duì)其他芯片配置及價(jià)格,所以我們選擇了它作為我們的主芯片。BOOT1 用于設(shè)置 STM32 的啟動(dòng)方式,其對(duì)應(yīng)啟動(dòng)模式如表 所示:表 BOOT0、BOOT1 啟動(dòng)模式表BOOT0 BOOT1 啟動(dòng)模式 說(shuō)明0 X 用戶(hù)閃存存儲(chǔ)器 用戶(hù)閃存存儲(chǔ)器,也就是 FLASH 啟動(dòng)1 0 系統(tǒng)存儲(chǔ)器 系統(tǒng)存儲(chǔ)器啟動(dòng),用于串口下載1 1 SRAM 啟動(dòng) SRAM 啟動(dòng),用于在 SRAM 中調(diào)試代碼按照表 ,一般情況下如果我們想用用串口下載代碼,則必須配置BOOT0 為 1,BOOT1 為 0,而如果想讓 STM32 一按復(fù)位鍵就開(kāi)始跑代碼,則需要配置 BOOT0 為 0,BOOT1 隨便設(shè)置都可以。ALIENTEK 這款開(kāi)發(fā)板專(zhuān)門(mén)設(shè)計(jì)了一鍵下載電路,通過(guò)串口的 DTR 和 RTS 信號(hào),來(lái)自動(dòng)配置 BOOT0 和 武昌工學(xué)院畢業(yè)論文(設(shè)計(jì))專(zhuān)用稿紙13BOOT1,因此不需要用戶(hù)來(lái)手動(dòng)切換他們的狀態(tài),直接串口下載和軟件自動(dòng)控制,可以非常方便的下載代碼。 P3 和 P1 分別用于 PORTA 和 PORTB 的 IO 口引出,其中 P2 還有部分用于 PORTC 口的引出。PORTA 和 PORTB 都是按順序排列的,這樣設(shè)計(jì)的目的是為了讓大家更方便地與外部設(shè)備連接。P2 連接了 DS18B20 的數(shù)據(jù)口以及紅外傳感器的數(shù)據(jù)線(xiàn),它們分別對(duì)應(yīng)著 PA0 和 PA1,只需要 19 通過(guò)跳線(xiàn)帽將 P2和 P3 連接起來(lái)就可以使用了。這里不直接連在一起的原因有二:1,防止紅外傳感器和 DS18B20 對(duì)這兩個(gè) IO 口作為其他功能使用的時(shí)候的影響;2,DS18B20 和紅外傳感器還可以用來(lái)給其他板子提供輸入,等于我們的板子為別的板子提供了紅外接口和溫度傳感器,在調(diào)試的時(shí)候,還是蠻有用的。P4口連接了 PL2303 的串口輸出,對(duì)應(yīng)著 S
點(diǎn)擊復(fù)制文檔內(nèi)容
外語(yǔ)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1