




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上嵌入式課程設(shè)計報告最近幾年,幾乎所有的IT 企業(yè)對應(yīng)屆畢業(yè)生都有抱怨:動手能力太差,編程水平低下。下面和小編一起來看看報告吧!嵌入式課程設(shè)計報告Cortex-M3 是 ARM 公司基于 ARM V7 架構(gòu)的新型芯片內(nèi)核。 STM32V100-II 型是英蓓特 公司新推出的一款基于 ST 意法半導(dǎo)體 STM32 系列處理器(Cortex-M3 內(nèi)核)的全功能 評估板。STM103V100-II 評估板有 USB,Motor Control,CAN,SD 卡,Smart 卡, UART,Speaker,LCD,LED,BNC,耳塞插孔等豐富的外設(shè),有助于用戶輕松開發(fā) ST
2、M32 的強(qiáng)大功能。STM32 系列使用了 ARM 最新的、先進(jìn)架構(gòu) Cortex-M3 內(nèi)核,本文論述 了在 Keil Realview 開發(fā)環(huán)境上開發(fā)基于匯編語言的 LED 控制程序, 基于對 STM32 的 GPIO 寄存器寫值配置思想, 控制 EduKit-M3 實驗平臺的發(fā)光二極管 LED1、 LED2、 LED3、 LED4, 使它們有規(guī)律地點亮。、 設(shè)計需求Keil Realview 開發(fā)環(huán)境上,全部采用匯編語言編程,實現(xiàn)對 EduKit-M3 實驗平臺的發(fā) 光二極管 LED1、LED2、LED3、LED4 的亮滅控制,使它們有規(guī)律地點亮。 這里采用例程提供的順序點亮方式,按照
3、LED1 亮 LED2 亮 LED3 亮 LED4 亮,如此反復(fù),要求每個 LED 亮滅之間延時一段時間,以增強(qiáng)可觀性。需要說明的是,這 僅僅作為程序控制 LED 的一種控制方式,基于點亮 LED 的控制原理,可以編程實現(xiàn)各種顯 示 LED 的亮滅模式,并提供一種通用的控制方法,要求程序可讀性強(qiáng),易于修改。、 設(shè)計原理STM32 通用 GPIO 端口概述 STM32F10x 處理器上共有 7 個 I/O 端口:A、B、C、D、E、F、G,每個 16 個管腳 每組端口 每組端口有以下寄存器: , 32 位配置寄存器: GPIOx_CRL、GPIOx_CRH 32 為數(shù)據(jù)寄存器: GPIOx_ID
4、R、GPIOx_ODR 32 位置位/復(fù)位寄存器: GPIOx_BSRR 16 位復(fù)位寄存器: GPIOx_BRR 32 為鎖定寄存器: GPIOx_LCKR I/O 口通用輸入、輸出端口配置為輸入時,每個 APB2 時鐘周期將端口數(shù)據(jù)送輸入寄存 器(GPIOx_IDR),在輸入模式下,輸出是斷開的。輸出模式時:寫到輸出寄存器(GPIOx_ODR) 的值被傳給對應(yīng)的 I/O 引腳。在輸出模式下,輸入是允許的 程序設(shè)計原理 EduKit-M3 實驗平臺上,通過寫值配置端口數(shù)據(jù)輸出寄存器 GPIOC_ODR值,可 以實現(xiàn)對四個 LED 的亮滅控制, 因為 C 口位和四個 LED 燈連通。 而這里主
5、要是通過對 時鐘控制寄存器以及端口 C 的各配置寄存器和輸出寄存器寫值, 以達(dá)到配置端口, 控制 LED 的目的。 匯編語言與 C 語言相比,要求更加貼近硬件,了解 M3 內(nèi)核的內(nèi)部結(jié)構(gòu)和寄存器地址。 基于匯編語言的編程控制, 只需要找出需要配置的端口基地址, 然后弄清楚各寄存器的偏移 地址,以及各寄存器每位的含義,按照要求寫 1 或?qū)?0 即可。2 硬件電路 硬件電路描述本設(shè)計是基于 EduKit-M3 實驗平臺的嵌入式開發(fā)實例, EduKit-M3 實驗平臺有四個 LED 燈,分別為 LED1、LED2、LED3、LED4,對應(yīng)的連接到 I/O 的 C 口 、四位輸出位上,不需要外擴(kuò)電路或
6、者額外接線,簡單易行。 程 序 流 程 圖 軟 件 設(shè) 計 描 述整個工程包含 3 個源文件:、和 my ,stm32f10x_ 其中 為啟動代碼, 。啟動代碼作用是:1)堆和棧的初始化;2)向量表定義;3)地 址重映射及中斷向量表的轉(zhuǎn)移;4)設(shè)置系統(tǒng)時鐘頻率;5)中斷寄存器的初始化;6)進(jìn)入 匯編主程序。my是匯編主程序,完成所有控制功能。程序工作原理概述: 對于 LED 的控制,主要通過對 I/O 端口的配置,將對應(yīng)的寄存器相應(yīng)的位寫 1 寫 0 控 制。程序首先要經(jīng)過啟動代碼段進(jìn)行相關(guān)的啟動配置,然后跳轉(zhuǎn)到匯編主程序。 匯編主程序完成了時鐘、端口配置以及 LED 點亮的所有功能。首先需要
7、對于系統(tǒng)時鐘進(jìn) 行配置,已獲得系統(tǒng)所用頻率。 然后進(jìn)行端口配置低、高寄存器配置,獲得輸入輸出模式以及最大速度。將時鐘和端口 配置完成后,就可以對輸出寄存器進(jìn)行對應(yīng)位的寫值控制了,從而達(dá)到控制 LED 的目的,高 電平點亮,低電平熄滅。 點亮 LED 后,轉(zhuǎn)入延時子程序,延時子程序?qū)懼?0X000FFFFF,做寄存器值減法,減到 0 后,過程所需時間即是延時時間,即單個 LED 點亮?xí)r間。本程序設(shè)置循環(huán)點亮模式,即 LED1 到 LED4 順序循環(huán)點亮,將對應(yīng)位逐次寫 1,如果需要修改點亮模式,只需修改寄存器的值以 及寫值順序即可。寄存器配置描述 端口配置低寄存器(GPIOC_CRL) C口基地
8、址:0X 偏移地址:0x00 復(fù)位值:0x 寄存器配置:0X 功能含義: 口配置低寄存器為模擬輸入模式, 端 通用推挽輸出模式, 輸出模式, 最大速? 2MHz端口配置高寄存器(GPIOC_CRH) C口基地址:0X 偏移地址:0x04 復(fù)位值:0x 寄存器配置:0X 功能含義: 口配置高寄存器為模擬輸入模式, 端 通用推挽輸出模式, 輸出模式, 最大速? 2MHz 端口輸出數(shù)據(jù)寄存器(GPIOC_ODR) C口基地址:0X 地址偏移:0Ch 寄存器配置 0xfffffc4f 0xfffffc8f 復(fù)位值:h 功能含義位寫 1,對應(yīng)點亮 LED1位寫 1,對應(yīng)點亮 LED240xfffffd0
9、f位寫 1,對應(yīng)點亮 LED3位寫 1,對應(yīng)點亮 LED4時鐘控制寄存器(RCC_CR) 復(fù)位和時鐘基地址:0X 偏移地址: 0x00 復(fù)位值: 0x000 XX83 寄存器配置:0X 功能含義:PLL 未鎖定,PLL 關(guān)閉,時鐘監(jiān)測器關(guān)閉,外部 1-25MHz 振蕩器沒有旁?,外部 1-25MHz 時鐘沒有就緒,HSE 振蕩器關(guān)閉內(nèi)部 8MHz 時鐘就緒,內(nèi)部 8MHz 時鐘開啟。 時鐘配置寄存器(RCC_CFGR) 復(fù)位和時鐘基地址:0X 偏移地址: 0x04 復(fù)位值: 0x0000 0000 寄存器配置:0X 功能含義:沒有時鐘輸出,PLL 時鐘倍分頻作為 USB 時鐘,PLL 2 倍頻
10、輸出,HSE 不分 頻,HSI 時鐘 2 分頻后作為 PLL 輸入時鐘,PCLK2 2 分頻后作為 ADC 時鐘,HCLK 不分頻, HCLK 不分頻,SYSCLK 不分頻,HSI 作為系統(tǒng)時鐘,HSI 作為系統(tǒng)時鐘。 AHB外設(shè)時鐘使能寄存器 (RCC_AHBENR) 復(fù)位和時鐘基地址:0X 偏移地址:0x14 復(fù)位值:0x0000 0014 寄存器配置:0X 功能含義:睡眠模式時閃存接口電路時鐘開啟,睡眠模式時 SRAM 時鐘開啟,DMA 時鐘關(guān) 閉 APB2 外設(shè)時鐘使能寄存器(RCC_APB2ENR) 復(fù)位和時鐘基地址:0X 偏移地址:0x18 復(fù)位值:0x0000 0000 寄存器配
11、置:0XFFFFFFFF 功能含義:USART1 時鐘開啟,SPI1 時鐘開啟,TIM1 時鐘開啟,ADC2 時鐘開啟,ADC1 時鐘開啟,IO 口 E 時鐘開啟,IO 口 D 時鐘開啟,IO 口 C 時鐘開啟,IO 口 B 時鐘開啟,IO 口 A 時鐘開啟,輔助功能 IO 時鐘開啟 主 要 程 序 說 明啟動代碼轉(zhuǎn)入?yún)R編主程序的設(shè)置: 【啟動代碼段設(shè)置: 】 Reset_Handler PROC EXPORT Reset_HandlerIMPORT MAIN ;聲明外部函數(shù),導(dǎo)入符號 LDR R0, =MAIN ;等待工作調(diào)用 BX R0 ;跳轉(zhuǎn)到匯編主程序 MAIN 函數(shù) ENDP ;過程
12、段結(jié)束 【匯編主程序設(shè)置: 】 AREA MYCODE,CODE,READONLY ;定義一個代碼段,屬性為只讀 EXPORT MAIN MAIN PROCEndP END 匯編主程序 ;配置時鐘5LDR R1,=0X LDR R0,=0X STR R0, LDR R0,=0X STR R0, LDR R0,=0X STR R0,時鐘控制寄存器入口配置時鐘控制寄存器(RCC_CR)配置時鐘配置寄存器(RCC_CFGR)配置 AHB 外設(shè)時鐘使能寄存器 RCC_AHBENRLDR R0,=0XFFFFFFFF STR R0, ;配置 APB2 外設(shè)時鐘使能寄存器(RCC_APB2ENR) ;-;
13、配置端口 MOVS R0,#0X LDR R1,=0X STR R0, ;配置端口配置寄存器 GPIOC_CRL MOVS R0,#0X LDR R1,=0X STR R0, ;配置端口配置寄存器 GPIOC_CRH ;-;點 亮 LED LDR R0,=0xfffffc4f STR R0, ;將 0xfffffc4f 寫進(jìn) GIPOC_ODR, 點亮 LED1 BL DELAY ;延時 -LDR R0,=0xfffffc8f STR R0, ;將 0xfffffc8f 寫進(jìn) GIPOC_ODR, 點亮 LED2 BL DELAY ;延時 -LDR R0,=0xfffffd0f STR R0,
14、 ;將 0xfffffd0f 寫進(jìn) GIPOC_ODR, 點亮 LED3 BL DELAY ;延時 -LDR R0,=0xfffffe0f STR R0, ;0xfffffe0f 寫進(jìn) GIPOC_ODR, 點亮 LED4 BL DELAY ;延時 -B MAIN ;跳到 MAIN 函數(shù) ;-延時子程序 DELAY6LDR R3,=0X000FFFFF ;延時控制字 DELAY_1 SUBS R3,R3,#0X01 ;延時控制字自減 BEQ DELAY_OUT ;為 0 跳出返回 B DELAY_1 ;不為 0 回轉(zhuǎn)繼續(xù)做減法 DELAY_OUT BX LR ;程序返回 調(diào) 試 過 程(1)
15、使用 Keil uVision3 通過 ULINK 2 仿真器連接 EduKit-M3 實驗平臺,打開建立的 my led controler 工程,點擊子目錄下的 my文件,編譯鏈接工程。 設(shè)置 FlashDebug, 選擇 Cortex-M3 J-LINK, FlashUtilities, 同樣選擇 Cortex-M3 J-LINK,效果如下點擊編譯鏈接,生成 HEX 文件點擊 Load,下載源程序到 STM32,運行程序 (2) 選擇軟件調(diào)試模式,點擊 MDK 的 Debug 菜單,選擇 Start/Stop Debug Session 項或 Ctrl+F5 鍵。7在邏輯分析儀中添加 G
16、PIOC_、GPIOC_、GPIOC_、GPIOC_, 點擊 Run 按鈕即可在邏輯分析儀中看波形。 測 試本程序由于大量的涉及到原理簡單,測試方便,只需要單步運行,查看寄存器的值,就 可以測試程序的正確性。程序開始時各寄存器的值將時鐘控制寄存器入口基地址賦值給 R1R1 既已經(jīng)被賦值了時鐘控制寄存器入口地址,利用偏移地址將時鐘各控制寄存器的地 址賦值給 達(dá)到配置 RCC_CR、RCC_CFGR、RCC_AHBENR、RCC_APB2ENR 的目的, , 集體寄存器值變化如下:8端口配置情況測試:I/O C 口入口地址寫進(jìn)通用寄存器 R1,利用基地址加偏移地址找 到端口配置寄存器 GPIOC_
17、CRL、GPIOC_CRH,然后將控制字 0X 寫進(jìn)該寄存器。端口輸出數(shù)據(jù)寄存器(GPIOx_ODR) 的值的變化,直接反映了外部 LED 的亮滅變化, 采用逐位寫 1 的方式,實現(xiàn)循環(huán)點亮,此時通用 R1 已經(jīng)被寫進(jìn)了 C 口的入口基地址,只需 加上偏移地址#0X0C,便是 GPIOx_ODR 的地址,每次寫值控制 LED 點亮后,程序跳轉(zhuǎn)到延 時子程序,所測試結(jié)果如下: 【將 0xfffffc4f 寫進(jìn) GIPOC_ODR 點亮 LED1】 【延時子程序運行寄存器變化情況】當(dāng)轉(zhuǎn)入延時子程序后,寄存器 R3 值做減 1 算法,從 0X000FFFFF 循環(huán)減至 0,是為延時 時間,然后繼續(xù)跳
18、轉(zhuǎn)至端口輸出寄存器配置,點亮 LED2,接著再次跳轉(zhuǎn)到延時子程序,R39再次做減 1 運算,如此控制 LED 循環(huán)點亮。 【轉(zhuǎn)入延時子程序】【退出延時子程序?qū)?LED2 對應(yīng)位寫 1 況】 結(jié) 果 及 描 述邏輯分析儀中波形:GPIOC_、 GPIOC_、 GPIOC_、 GPIOC_ 的波形即對應(yīng)的 LED1、 LED2、LED3、LED4 高低電平波形,由此可以驗證程序的正確性,即 LED 確實按照程序的 思想循環(huán)順序點亮。當(dāng)將程序下載到 STM32 中后,EduKit-M3 實驗平臺上四個 LED 確實循環(huán)點亮,進(jìn)一 步驗證控制程序的正確性。本設(shè)計是基于 STM32 的匯編語言編寫的 LED 循環(huán)順序點亮控制程序,原理簡單易行, 程序可修改性和可讀性強(qiáng), 件電路也很簡單, 需要外擴(kuò)電路, 接利用試驗臺內(nèi)部接線, 硬 不 直 通過對 GPIO 的控制來相應(yīng)地點亮 L
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育機(jī)構(gòu)如何利用知識產(chǎn)權(quán)策略增強(qiáng)競爭力
- 情韻涵育:初中閱讀教學(xué)審美情感力培養(yǎng)路徑探索
- 微山島旅游營銷規(guī)劃:基于資源特色與市場需求的深度剖析
- 張思忠教學(xué)法在初中英語詞匯教學(xué)中的創(chuàng)新應(yīng)用與效能研究
- 幼兒園體育活動傷害事故:法律責(zé)任剖析與防治策略構(gòu)建
- 室內(nèi)可見光通信系統(tǒng)均衡技術(shù):原理、應(yīng)用與挑戰(zhàn)
- 辦公領(lǐng)域中的數(shù)字教育平臺運營策略研究
- 2025年大學(xué)輔導(dǎo)員招聘考試題庫:班級管理策略與班級管理目標(biāo)試題
- 2025年醫(yī)保知識考試題庫及答案:醫(yī)保談判藥品管理法規(guī)解讀試題與答案解析
- 知識競賽與學(xué)科活動安排計劃
- JT-T-913-2014危險貨物道路運輸企業(yè)安全生產(chǎn)責(zé)任制編寫要求
- 事業(yè)單位專業(yè)測試項目管理試題庫
- DZ∕T 0382-2021 固體礦產(chǎn)勘查地質(zhì)填圖規(guī)范(正式版)
- 《研學(xué)旅行課程設(shè)計》課件-研學(xué)課程方案設(shè)計
- 快樂跳舞-學(xué)前兒童舞蹈教育智慧樹知到期末考試答案2024年
- 紅旗E-HS3保養(yǎng)手冊
- 畜牧業(yè)的動物保護(hù)與福利
- 寫作:說明的關(guān)鍵在說得“明”+課件-【中職專用】高一語文(高教版2023基礎(chǔ)模塊下冊)
- 《鋼鐵是怎樣煉成的》選擇題100題(含答案)
- 端午健康養(yǎng)生知識講座
- 大班音樂《畢業(yè)歌》課件
評論
0/150
提交評論