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

正文內(nèi)容

基于stm32的嵌入式操作系統(tǒng)程序設(shè)計(jì)及實(shí)現(xiàn)本科畢業(yè)論文-預(yù)覽頁(yè)

 

【正文】 ile, , three involves the data type definition and task switching etc, stack, interrupt. (3)The application design to the allocation of priorities, initialize the modular processing hardware platform. Key words: embedded system。C/OSII是由美國(guó)工程師Jean Labrosse編寫(xiě)的嵌入式多任務(wù)的實(shí)時(shí)操作系統(tǒng),包括實(shí)時(shí)內(nèi)核、任務(wù)管理、時(shí)鐘管理、任務(wù)間通信同步(信號(hào)量、郵箱、消息隊(duì)列)和內(nèi)存管理。(2)可移植性好:181。因此,181。傳統(tǒng)的系統(tǒng)開(kāi)發(fā)我們往往使用前后臺(tái)的方式,但是這種開(kāi)發(fā)方式在任務(wù)較簡(jiǎn)單的開(kāi)發(fā)中比較適用,對(duì)于任務(wù)比較復(fù)雜的系統(tǒng)往往力不從心。所以,使用實(shí)時(shí)操作系統(tǒng),將不同的功能劃分成不同的任務(wù)進(jìn)行處理使得設(shè)計(jì)大大簡(jiǎn)化。例如,經(jīng)典51系列單片機(jī)在上世紀(jì)我國(guó)的工業(yè)信息化改造過(guò)程中發(fā)揮了重要的作用,滲透到生產(chǎn)生活的各個(gè)方面。C/OSII系統(tǒng)具有體積小、性能強(qiáng)、功耗武昌工學(xué)院畢業(yè)論文(設(shè)計(jì))專(zhuān)用稿紙2低、可靠性高以及面向行業(yè)應(yīng)用的突出特征,目前已經(jīng)被廣泛的應(yīng)用于軍事國(guó)防、消費(fèi)電子、網(wǎng)絡(luò)通信、工業(yè)控制等各個(gè)領(lǐng)域。在國(guó)內(nèi),“維納斯計(jì)劃”和“女?huà)z計(jì)劃”一度鬧得沸沸揚(yáng)揚(yáng),機(jī)頂盒、信息加電這兩年更成了IT熱點(diǎn),而實(shí)際上這些都是嵌入式系統(tǒng)在特定環(huán)境下的一個(gè)特定應(yīng)用。 研 究 的 主 要 內(nèi) 容本文是在基于 32 位的 ARM 微處理器 STM32 和嵌入式實(shí)時(shí)操作系統(tǒng)181。建立了基于嵌入式 ARM 處理器的應(yīng)用軟件體系;將 181。C/OSII 系統(tǒng)配置、181。本文主要分為 4 章,章節(jié)安排如下: (1)緒論。C/OSII 的理論介紹。多任務(wù)的建立并實(shí)現(xiàn)基本功能。C/OSII 的理論介紹 181。C/OSII操作系統(tǒng)進(jìn)行應(yīng)用時(shí),設(shè)計(jì)時(shí)的主要任務(wù)是將系統(tǒng)合理劃分成多個(gè)任務(wù),并由RTOS 進(jìn)行調(diào)度,任務(wù)之間使用181。C/OSII(與處理器類(lèi)型有關(guān)的代碼) CPU 定時(shí)器圖 181。在main主函數(shù)中主要實(shí)現(xiàn)181。 (2)OSInit()初始化181。C/OSII內(nèi)核主要對(duì)用戶任務(wù)進(jìn)行調(diào)度和管理,并為任務(wù)間共享資源提供服務(wù)。C/OSII系統(tǒng)進(jìn)行調(diào)度的基本單元。當(dāng)任務(wù)的CPU 使用權(quán)被剝奪時(shí),它用來(lái)保存該任務(wù)的狀態(tài)。任務(wù)調(diào)度器的功能是:在就緒表中查找最高優(yōu)先級(jí)的任務(wù),然后進(jìn)行必要的任務(wù)切換,運(yùn)行該任務(wù)。任務(wù)級(jí)的任務(wù)調(diào)度是由于有更高優(yōu)先級(jí)的任務(wù)進(jìn)入就緒態(tài),當(dāng)前的任務(wù)的CPU使用權(quán)被剝奪,發(fā)生了任務(wù)到任務(wù)的切換;中斷級(jí)的調(diào)度是指當(dāng)前運(yùn)行的任務(wù)被中斷打斷,由于ISR運(yùn)行過(guò)程中有更高優(yōu)先級(jí)的任務(wù)被激活進(jìn)入就緒態(tài)。例如:define OS_TASK_SW() asm(“int 32”)。③進(jìn)行 TCB的切換,并運(yùn)行任務(wù)。OSRdyGrp中,將任務(wù)按優(yōu)先級(jí)分組,八個(gè)為一組。 中斷服務(wù)在用戶的ISR 中可以調(diào)用OSIntEnter()和OSIntExit()通知181。時(shí)鐘節(jié)拍率越高,系統(tǒng)的額外負(fù)荷就越重。181。C/OSII 的初始化和啟動(dòng)調(diào)用181。 181。OSStart()調(diào)用就緒任務(wù)啟動(dòng)函數(shù)OSStartHighRdy(),其功能是將任務(wù)棧的值恢復(fù)到CPU 寄存器,并執(zhí)行中斷返回指令,強(qiáng)制執(zhí)行該任務(wù)代碼。C/OSII中把連續(xù)的大塊內(nèi)存按分區(qū)管理。 任務(wù)管理181。C/OSII 提供了任務(wù)管理的各種函數(shù)調(diào)用,包括創(chuàng)建任務(wù),刪除任務(wù),改變?nèi)蝿?wù)的優(yōu)先級(jí),任務(wù)掛起和恢復(fù)等。信號(hào)量用于對(duì)共享資源的訪問(wèn),用鑰匙符號(hào),符號(hào)旁數(shù)字代表可用資源數(shù),對(duì)于二值信號(hào)量該值為1。(3)消息隊(duì)列另一種通信機(jī)制,允許一個(gè)任務(wù)或者中斷服務(wù)子程序向另一個(gè)任務(wù)發(fā)送以指針?lè)绞蕉x的變量或其它任務(wù),因具體應(yīng)用不同,每個(gè)指針指向的包含了消息的數(shù)據(jù)結(jié)構(gòu)的變量類(lèi)型也有所不同。(3)處理器支持中斷,并且能產(chǎn)生定時(shí)中斷(通常在10至100Hz之間)。 定義與處理器無(wú)關(guān)的數(shù)據(jù)類(lèi)型 typede f unsigned char BOOLEAN。 typedef signed short INT16S。 typedef double FP64。故這部分代碼無(wú)需修改。為了方便使用堆棧, 181。 (2)臨界代碼段 181。C/OSII 通過(guò)定義兩個(gè)宏OS_ENTER_CRITICAL() 和OS_EXIT_CRITICAL() 來(lái)分別實(shí)現(xiàn)中斷的關(guān)閉和打開(kāi)。} 函數(shù)OS_CPU_SR_Save()和OS_CPU_SR_Restore(cpu_sr)中定義。C/OSII支持兩種方向生長(zhǎng)的棧,但對(duì)于以CortexM3為內(nèi)核的STM32 微處理器來(lái)說(shuō),它支持向下增長(zhǎng)的滿棧,故需要定義棧增長(zhǎng)方向宏為1。 void OSCtxSw(void)。 (6)與處理器相關(guān)的匯編代碼()在OS_CP 。 OSCtxSw()。 (2)恢復(fù)中斷函數(shù)(OS_CPU_SR_Restore() ) 這是宏OS_EXIT_CRITICAL() 的最終實(shí)現(xià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)。中斷服務(wù)程序退出的時(shí)候?qū)⒆詣?dòng)出棧R3R0 ,R12 ,LR ,PC 和xPSR 。 //設(shè)置運(yùn)行任務(wù)為最高優(yōu)先級(jí)就緒任務(wù) OSTCBCur = OSTCBHighRdy。 (5)與CPU 相關(guān)的C 函數(shù)和鉤子函數(shù)( ) 這個(gè)文件中包含10個(gè)函數(shù),具體如下: OSInitHookBegin ()。 OSTaskIdleHook ()。 OSTCBInitHook ()。這個(gè)函數(shù)的功能是當(dāng)一個(gè)任務(wù)被創(chuàng)建時(shí),它完成這個(gè)任務(wù)堆棧的初始化。 (void)opt。 //Entry Point *(stk) = (INT32U)0x00000000L。 // R2 *(stk) = (INT32U)0x00000000L。 //R10 *(stk) = (INT32U)0x00000000L。 // R6 *(stk) = (INT32U)0x00000000L。這樣,整個(gè)移植的代碼就介紹完了。RealView MDK 集成了業(yè)內(nèi)最領(lǐng)先的技術(shù),支持 ARMARM9 和 CortexM3 核處理器,自動(dòng)配置啟動(dòng)代碼,集成 Flash 燒寫(xiě)模塊,強(qiáng)大的 Simulation 設(shè)備模塊,性能分析等功能。打開(kāi)“畢業(yè)設(shè)計(jì) ”文件夾,在里面添加子文件夾(2)添加系統(tǒng)文件與工程管理。 硬件平臺(tái)紹ALIENTEK MiniSTM32 選擇的是 STM32F103RBT6 作為MCU,STM32F103 的型號(hào)眾多,作為一款低端開(kāi)發(fā)板,選擇 STM32F103RBT6 是最佳的選擇。這樣的配置無(wú)論放到那里都是很不錯(cuò)的了,更重要的是其價(jià)格,18元左右的零售價(jià),相對(duì)其他芯片配置及價(jià)格,所以我們選擇了它作為我們的主芯片。PORTA 和 PORTB 都是按順序排列的,這樣設(shè)計(jì)的目的是為了讓大家更方便地與外部設(shè)備連接。這樣設(shè)計(jì)有 2 個(gè)好處:1,使得 PA9 和 PA10 用作其他用途。 在此部分原理圖中,我們還可以看到 STM32F103RBT6 的各個(gè) IO 口與外設(shè)的連接關(guān)系,這些將在后面給大家介紹。STM32F103 使用 供電,且引腳接有濾波電容,保證芯片工作穩(wěn)定;復(fù)位電路使用的低電平復(fù)位,該電路上電可以復(fù)位,按鍵按下時(shí)也可以復(fù)位;時(shí)鐘電路使用 8MHZ 晶振,和 22pF 電容助振。圖 紅處接收單元 C 程序設(shè)計(jì)在181。C/OSII源碼(我們已經(jīng)將181。C/OSII PORT和181。C/OSIICORE分組下面是181。C/OSII要修改的 3個(gè)代碼,這個(gè)在移植的時(shí)候完成。C/OSII進(jìn)行裁剪或其他設(shè)置。如圖 所示:武昌工學(xué)院畢業(yè)論文(設(shè)計(jì))專(zhuān)用稿紙16圖 任務(wù)結(jié)構(gòu) 調(diào)試 設(shè)置編譯環(huán)境(1)打開(kāi) project 菜單,選擇 Options for Target“畢業(yè)設(shè)計(jì)”對(duì)話框,如圖 在 target 中,將晶振選為 8MHz;在 output 中,將 Creat HEX File 復(fù)選框選中。圖 Utilities 調(diào)試結(jié)果編譯程序,排出 error 和 warning,如圖 得到正確的程序,下載程序到開(kāi)發(fā)板上,得到了預(yù)期結(jié)果圖 編譯結(jié)果將程序下載到開(kāi)發(fā)板上,并觀察現(xiàn)象,LED 小燈按程序要求正常運(yùn)行,紅外接收器正確顯示數(shù)值,按鍵 KEY0 可實(shí)現(xiàn)進(jìn)入校準(zhǔn)功能,KEY1 可以顯示歡迎界面,KEY2 可以清除,說(shuō)明程序正確。C/OSII 的性能、特點(diǎn)、結(jié)構(gòu)和基本運(yùn)行原理,以及通過(guò)實(shí)驗(yàn)調(diào)試的方法完成對(duì) 181。C/OSII 移植到 Cortex 微處理器上,并對(duì)其進(jìn)行系統(tǒng)測(cè)試和系統(tǒng)功能實(shí)現(xiàn),實(shí)現(xiàn)了一個(gè)基本完整的嵌入式實(shí)時(shí)操作系統(tǒng)。C/OSII 是為嵌入式應(yīng)用編寫(xiě)的通用軟件,所以不得不強(qiáng)調(diào)處理器的通用性和功能的全面性。任務(wù)中加入更多任務(wù)時(shí)老出錯(cuò),程序不能正常運(yùn)行,但通不斷學(xué)習(xí),查閱資料得以解決。C/OSII. 第 2 版. 北京:北京航空航天大學(xué)出版社,2022.[11] 譚浩強(qiáng)(著 ). C 程序設(shè)計(jì) (第三版). 北京:清華大學(xué)出版社,2022.[12] 周立功等. ARM 嵌入式系統(tǒng)基礎(chǔ)教程 . 北京:北京航空航天大學(xué)出版社 ,2022.[13] Malinowski Mariusz. Jasin39。OS_STK TASK_START_STK[START_STK_SIZE]。void TaskLed(void *pdata)。void TaskTouch(void *pdata)。//顯示清屏區(qū)域LCD_DrawLine(0, 158, 240, 158)。//設(shè)置畫(huà)筆紅色 }//進(jìn)入觸摸屏校準(zhǔn)界面 void Load_Adjust_Panel() { LCD_Clear(WHITE)。LCD_ShowString(10,160,Touch Panel:)。 //延時(shí)初始化NVIC_Configuration()。 //KEY 端口初始化LCD_Init()。 //觸摸屏初始化delay_ms(500)。OSInit()。return 0。TASK_LED_STK[LED_STK_SIZE1], LED_TASK_Prio)。TASK_LCD_STK[LCD_STK_SIZE1], LCD_TASK_Prio)。TASK_TOUCH_STK[TOUCH_STK_SIZE1], TOUCH_TASK_Prio)。OSTimeDlyHMSM(0,0,0,800)。 while(1){ key=KEY_Scan()。LCD_ShowString(125,120, Graduation !)。 } OSTimeDlyHMSM(0,0,0,20)。 LCD_ShowString(10,4,LCD Display Panel)。 LCD_Fill(60,30,90,120,colorTable[colorIndex])。 if(Remote_Rdy){key=Remote_Process()。break。break。break。break。break。break。break。break。break。武昌工學(xué)院畢業(yè)論文(設(shè)計(jì))專(zhuān)用稿紙26break。break。 } }//任務(wù) 5//觸摸畫(huà)筆 void TaskTouch(void *pdata) { LCD_ShowString(10,160,Touch Panel:)。=Key_Up。//清除else if(180){Draw_Big_Point(,)。}
點(diǎn)擊復(fù)制文檔內(nèi)容
外語(yǔ)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1