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

正文內(nèi)容

基于stm32的嵌入式操作系統(tǒng)程序設(shè)計及實現(xiàn)本科畢業(yè)論文(文件)

2025-09-16 15:11 上一頁面

下一頁面
 

【正文】 1。C/OSII源碼(我們已經(jīng)將 181。C/OSII PORT和 181。C/OSIICORE分組下面是 181。C/OSII要修改的 3個代碼,這個在移植的時候完成。C/OSII進行裁剪或其他設(shè)置。 如圖 所示 : 武昌工學(xué)院畢業(yè)論文(設(shè)計)專用稿紙 16 圖 任務(wù)結(jié)構(gòu) 調(diào)試 設(shè)置編譯環(huán)境 ( 1) 打開 project 菜單,選擇 Options for Target“ 畢業(yè)設(shè)計 ” 對話框,如圖 在 target 中,將晶振選為 8MHz; 在 output 中,將 Creat HEX File 復(fù)選框選中。 圖 Utilities 調(diào)試結(jié)果 編譯程序,排出 error 和 warning, 如圖 得到正確的程序,下載程序到開發(fā)板 上,得到了預(yù)期結(jié)果 圖 編譯結(jié)果 將程序下載到開發(fā)板上,并觀察現(xiàn)象, LED 小燈按程序要求正常運行, 紅外接收器正確顯示數(shù)值 , 按 鍵 KEY0 可實現(xiàn)進入校準(zhǔn)功 能 , KEY1 可以顯示歡迎界面, KEY2 可以清除, 說明程序正確。C/OSII 的 性能、特點、結(jié)構(gòu)和 基本運行原理 , 以及 通過實驗 調(diào)試的方法完成對 181。C/OSII 移植到 Cortex 微處理器上,并對其進行系統(tǒng)測試和系統(tǒng)功能實現(xiàn),實現(xiàn)了一個基本完整的嵌入式實時操作系統(tǒng)。C/OSII 是為嵌入式應(yīng)用編寫的通用軟件,所以不得不強調(diào)處理器的通用性和功能的全面性。任務(wù)中加入 更多 任務(wù)時老出錯,程序不能正常運行, 但通不斷學(xué)習(xí),查閱資料得以解決。C/OSII. 第 2 版 . 北京: 北京航空航天大 學(xué)出版社 , 2020. [11] 譚浩強 (著 ). C 程序設(shè)計 (第三版 ). 北京: 清華大學(xué)出版社 , 2020. [12] 周立功等 . ARM 嵌入式系統(tǒng)基礎(chǔ)教程 . 北京 : 北京航空航天大學(xué)出版社 , 2020. [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è)置畫筆紅色 } //進入觸摸屏校準(zhǔn)界面 void Load_Adjust_Panel() { LCD_Clear(WHITE)。 LCD_ShowString(10,160,Touch Panel:)。 //延時初始化 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è)計)專用稿紙 26 break。 break。 } } //任務(wù) 5 //觸摸畫筆 void TaskTouch(void *pdata) { LCD_ShowString(10,160,Touch Panel:)。 =Key_Up。//清除 else if(180) { Draw_Big_Point(,)。 } 。 } Pen_Int_Set(1)。amp。 //觸摸中斷線映射 if(==Key_Down)//觸摸屏被按下 { Pen_Int_Set(0)。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。 break。//顯示鍵值 LCD_ShowNum(190,30,Remote_Cnt,3,16)。 LCD_ShowString(122,30, KEYCNT:)。 LCD_Fill(10,30,50,120,colorTable[colorIndex])。 u8 key。 LCD_ShowString(125,100, )。 } else if(key==2) { LCD_ShowString(125,80, Wel !!! )。 OSTimeDlyHMSM(0,0,0,300)。 //suspend but not delete OS_EXIT_CRITICAL()。TASK_KEY_STK[KEY_STK_SIZE1], KEY_TASK_Prio)。TASK_LED1_STK[LED1_STK_SIZE1], LED1_TASK_Prio)。 // OS_ENTER_CRITICAL()。TASK_START_STK[START_STK_SIZE1], //task stack top pointer START_TASK_Prio )。 Remote_Init()。 武昌工學(xué)院畢業(yè)論文(設(shè)計)專用稿紙 22 AT24CXX_Init()。//串口初始化,波特率 9600 LED_Init()。 } int main(void) { SystemInit()。 //屏幕校準(zhǔn) Save_Adjdata()。 LCD_DrawLine(120, 75, 240, 75)。 POINT_COLOR=BLUE。 void TaskLCD(void *pdata)。 OS_STK TASK_TOUCH_STK[TOUCH_STK_SIZE]。 OS_STK TASK_LED_STK[LED1_STK_SIZE]。 最后,感謝指導(dǎo)老師的關(guān)懷和細(xì)心 的指導(dǎo),感謝同學(xué)們的幫助。其次,本文所調(diào)度的任務(wù)較簡單,主要是為了說明方法。另一方面,它又是一個相對完整的系統(tǒng),可以應(yīng)用于工業(yè)控制的各個顯示終 端,完成 指示功能。認(rèn)真掌 握 CortexM3 的硬件結(jié)構(gòu)和指令系統(tǒng) , 并在 ALIENTEK MiniSTM32 開發(fā)板上調(diào)試串口, TFT 彩屏以及 ADC 實驗。C/OSII 的嵌入式 操作系統(tǒng)的移植和功能的實現(xiàn)。 圖 編譯環(huán)境窗口 武昌工學(xué)院畢業(yè)論文(設(shè)計)專用稿紙 17 ( 2) 在 C/C++中,將各分文件的路徑加入如圖 圖 路徑添加 ( 3) 在 Debug中,將 Use選中并設(shè)置為 CortexM/R JLINK/JTrace,設(shè)為 JINK連接實物仿真了。C/OSII 的時鐘節(jié)拍為 5ms,同時設(shè)置 OS_MAX_TASKS 為 10,也就是最多 10個任務(wù)(包括空閑任務(wù)和統(tǒng)計任務(wù)在內(nèi) ) 。C/OSIICONFIG分組下面是 181。 181。C/OSII三個文件夾下的源碼,并將這三個文件夾加入頭文件包含路徑。打開工程,新建 181。 首先,建立基本的工程后,在該工程源碼下面加入 181。 圖 液晶顯示 LED 接口 輸入單元和指示部分,直接引到 STM32F103 的 IO 口。這樣,VBAT 總是有電的,以保證 RTC 的走時以 及后備寄存器的內(nèi)容不丟失。 2, USB 轉(zhuǎn)串口可以用作他用,并不僅限 在 這個板上的 STM32 使用,也可以連接到其他板子上,這樣 ALIENEK MiniSTM32 就相當(dāng)于一個 USB 串口。這里不直接連在一起的原因有二: 1,防止紅外傳感器和DS18B20 對這兩個 IO 口作為其他功能使用的時候的影響; 2, DS18B20 和紅外傳感器還可以用來給其他板子提供輸入,等于我們的板子為別的板子提供了紅外接口和溫度傳感器,在調(diào)試的時候,還是蠻有用的。 ALIENTEK 這款開發(fā)板專門設(shè)計了一鍵下載電路,通過串口的 DTR 和 RTS 信號,來自動配置 BOOT0 和 BOOT1,因此不需要用戶來手動切換他們的狀態(tài),直接串口下載 和 軟件自動控制,可以非常武昌工學(xué)院畢業(yè)論文(設(shè)計)專用稿紙 13 方便的下載代碼?;氐焦こ讨?,點擊 manage ponents,添加工程中的文件,進行分類管理工程。 打開 MDK 軟件,選擇 Project→New uVision Project 菜單項,新建一個文件夾名為 “畢業(yè)設(shè)計 ”,保存,則彈出器件選擇對話框,這里選擇 STM32F103RB。剩下的工作就是編寫用戶任務(wù),并在開發(fā)板上驗證,以此來驗證該移植方案是可行的和成功的。 // R4 return (stk)。 //R8 *(stk) = (INT32U)0x00000000L。 //R0 : 傳遞的參數(shù) // 剩下的寄存器初始化 *(stk) = (INT32U)0x00000000L。 //R12 *(stk) = (INT32U)0x00000000L。 // 將棧頂?shù)刂焚x值給棧指針變量 // 以進入異常的順序來給棧賦初值 *(stk) = (INT32U)0x00000000L。這個初值無關(guān)緊要,為0就可以了。 這 10個函數(shù)有 9個是為了擴展用戶功能而定義的鉤子函數(shù),這些鉤子函數(shù)可以都為空函數(shù),也可以加上一些用戶需要的擴展功能。 OSTaskStkInit ()。 OSTaskCreateHook ()。//將要切換的任務(wù)堆棧指 // 針賦給微處理器的堆棧指 // 針從而實現(xiàn)切換 從堆棧中恢 復(fù) R4R11。 //保存堆棧的指針到任務(wù)控制塊 } 武昌工學(xué)院畢業(yè)論文(設(shè)計)專用稿紙 10 OSTaskSwHook()。 ( 4) 任務(wù)級和中斷級任務(wù)切換 因為 CortexM3進入異常自動保存寄存器 R3R0, R12, LR, PC和 xPSR這種的特殊機制,這兩個函數(shù)都是觸發(fā)一次 PendSV來實現(xiàn)任務(wù)的切換。此函數(shù)完成的將中斷狀態(tài)恢復(fù)到關(guān)中斷前的狀態(tài)。 函數(shù) 實現(xiàn) ( 1) 關(guān)中斷函數(shù)( OS_CPU_SR_Save()) 即先保存當(dāng)前的狀態(tài)寄存器然后關(guān)中斷。 OS_CPU_SR_Restore()。 void OSStartHighRdy(void)。因為這個宏也是與處理器相關(guān)的,因此這個宏在 。否則編譯時將出錯。這兩個宏分別定義如下 : define OS_CRITICAL_METHOD 3 define OS_ENTER_CRITICAL() {cpu_sr = OS_CPU_SR_Save()。這樣的代碼段稱作臨界代碼段。在 CortexM3 中寄存器為 32位,故定義堆棧的長度也為 32位。C/OSII定義了 float 類型和 double 類型,但為了方便移植它們在 181。 typedef unsigned int OS_CPU_SR。 typedef signed int NT32S。 typedef signed char NT8S。 ( 5) 處
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1