国产精品一久久香蕉产线看-国产精品一区在线播放-国产精品自线在线播放-国产毛片久久国产-一级视频在线-一级视频在线观看免费

嵌入式課程設(shè)計(jì)報(bào)告

時(shí)間:2022-07-03 02:52:15 輔助設(shè)計(jì)與工程計(jì)算 我要投稿
  • 相關(guān)推薦

嵌入式課程設(shè)計(jì)報(bào)告

  最近幾年,幾乎所有的IT 企業(yè)對應(yīng)屆畢業(yè)生都有抱怨:動手能力太差,編程水平低下。下面和小編一起來看看報(bào)告吧!

嵌入式課程設(shè)計(jì)報(bào)告

  嵌入式課程設(shè)計(jì)報(bào)告

  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ā) STM32 的強(qiáng)大功能。STM32 系列使用了 ARM 最新的、先進(jìn)架構(gòu) Cortex-M3 內(nèi)核,本文論述 了在 Keil Realview 開發(fā)環(huán)境上開發(fā)基于匯編語言的 LED 控制程序, 基于對 STM32 的 GPIO 寄存器寫值配置思想, 控制 EduKit-M3 實(shí)驗(yàn)平臺的發(fā)光二極管 LED1、 LED2、 LED3、 LED4, 使它們有規(guī)律地點(diǎn)亮。

  一、 設(shè)計(jì)概述

  1.1、 設(shè)計(jì)需求

  Keil Realview 開發(fā)環(huán)境上,全部采用匯編語言編程,實(shí)現(xiàn)對 EduKit-M3 實(shí)驗(yàn)平臺的發(fā) 光二極管 LED1、LED2、LED3、LED4 的亮滅控制,使它們有規(guī)律地點(diǎn)亮。 這里采用例程提供的順序點(diǎn)亮方式,按照 LED1 亮 LED2 亮 LED3 亮 LED4 亮,如此反復(fù),要求每個 LED 亮滅之間延時(shí)一段時(shí)間,以增強(qiáng)可觀性。需要說明的是,這 僅僅作為程序控制 LED 的一種控制方式,基于點(diǎn)亮 LED 的控制原理,可以編程實(shí)現(xiàn)各種顯 示 LED 的亮滅模式,并提供一種通用的控制方法,要求程序可讀性強(qiáng),易于修改。

  1.2、 設(shè)計(jì)原理

  (1)STM32 通用 GPIO 端口概述 STM32F10x 處理器上共有 7 個 I/O 端口:A、B、C、D、E、F、G,每個 16 個管腳 每組端口(寄存器必須以 32 位字形式訪問) 每組端口有以下寄存器: , 32 位配置寄存器: GPIOx_CRL、GPIOx_CRH 32 為數(shù)據(jù)寄存器: GPIOx_IDR、GPIOx_ODR 32 位置位/復(fù)位寄存器: GPIOx_BSRR 16 位復(fù)位寄存器: GPIOx_BRR 32 為鎖定寄存器: GPIOx_LCKR I/O 口通用輸入、輸出端口配置為輸入時(shí),每個 APB2 時(shí)鐘周期將端口數(shù)據(jù)送輸入寄存 器(GPIOx_IDR),在輸入模式下,輸出是斷開的。輸出模式時(shí):寫到輸出寄存器(GPIOx_ODR) 的值被傳給對應(yīng)的 I/O 引腳。在輸出模式下,輸入是允許的 (2)程序設(shè)計(jì)原理 EduKit-M3 實(shí)驗(yàn)平臺上,通過寫值配置端口數(shù)據(jù)輸出寄存器 GPIOC_ODR[15:0]值,可 以實(shí)現(xiàn)對四個 LED 的亮滅控制, 因?yàn)?C 口[9:6]位和四個 LED 燈連通。 而這里主要是通過對 時(shí)鐘控制寄存器以及端口 C 的各配置寄存器和輸出寄存器寫值, 以達(dá)到配置端口, 控制 LED 的目的。 匯編語言與 C 語言相比,要求更加貼近硬件,了解 M3 內(nèi)核的內(nèi)部結(jié)構(gòu)和寄存器地址。 基于匯編語言的編程控制, 只需要找出需要配置的端口基地址, 然后弄清楚各寄存器的偏移 地址,以及各寄存器每位的含義,按照要求寫 1 或?qū)?0 即可。

  2

  二、 硬件設(shè)計(jì):

  2.1 硬件電路

  2.2 硬件電路描述

  本設(shè)計(jì)是基于 EduKit-M3 實(shí)驗(yàn)平臺的嵌入式開發(fā)實(shí)例, EduKit-M3 實(shí)驗(yàn)平臺有四個 LED 燈,分別為 LED1、LED2、LED3、LED4,對應(yīng)的連接到 I/O 的 C 口 PC.6、PC.7、PC.8、 PC.9 四位輸出位上,不需要外擴(kuò)電路或者額外接線,簡單易行。

  三、 軟件設(shè)計(jì)

  3.1 程 序 流 程 圖

  3.2 軟 件 設(shè) 計(jì) 描 述

  (1)整個工程包含 3 個源文件:STM32F10x.s、和 my led.s,stm32f10x_lib.c 其中3STM32F10x.s 為啟動代碼, 。啟動代碼作用是:1)堆和棧的初始化;2)向量表定義;3)地 址重映射及中斷向量表的轉(zhuǎn)移;4)設(shè)置系統(tǒng)時(shí)鐘頻率;5)中斷寄存器的初始化;6)進(jìn)入 匯編主程序。my led.s 是匯編主程序,完成所有控制功能。

  (2)程序工作原理概述: 對于 LED 的控制,主要通過對 I/O 端口的配置,將對應(yīng)的寄存器相應(yīng)的位寫 1 寫 0 控 制。程序首先要經(jīng)過啟動代碼段進(jìn)行相關(guān)的啟動配置,然后跳轉(zhuǎn)到匯編主程序。 匯編主程序完成了時(shí)鐘、端口配置以及 LED 點(diǎn)亮的所有功能。首先需要對于系統(tǒng)時(shí)鐘進(jìn) 行配置,已獲得系統(tǒng)所用頻率。 然后進(jìn)行端口配置低、高寄存器配置,獲得輸入輸出模式以及最大速度。將時(shí)鐘和端口 配置完成后,就可以對輸出寄存器進(jìn)行對應(yīng)位的寫值控制了,從而達(dá)到控制 LED 的目的',高 電平點(diǎn)亮,低電平熄滅。 點(diǎn)亮 LED 后,轉(zhuǎn)入延時(shí)子程序,延時(shí)子程序?qū)懼?0X000FFFFF,做寄存器值減法,減到 0 后,過程所需時(shí)間即是延時(shí)時(shí)間,即單個 LED 點(diǎn)亮?xí)r間。本程序設(shè)置循環(huán)點(diǎn)亮模式,即 LED1 到 LED4 順序循環(huán)點(diǎn)亮,將對應(yīng)位逐次寫 1,如果需要修改點(diǎn)亮模式,只需修改寄存器的值以 及寫值順序即可。

  (3)寄存器配置描述 端口配置低寄存器(GPIOC_CRL) C口基地址:0X40011000 偏移地址:0x00 復(fù)位值:0x44444444 寄存器配置:0X22222222 功能含義: 口配置低寄存器為模擬輸入模式, 端 通用推挽輸出模式, 輸出模式, 最大速? 2MHz

  端口配置高寄存器(GPIOC_CRH) C口基地址:0X40011000 偏移地址:0x04 復(fù)位值:0x44444444 寄存器配置:0X22222222 功能含義: 口配置高寄存器為模擬輸入模式, 端 通用推挽輸出模式, 輸出模式, 最大速? 2MHz 端口輸出數(shù)據(jù)寄存器(GPIOC_ODR) C口基地址:0X40011000 地址偏移:0Ch 寄存器配置 0xfffffc4f 0xfffffc8f 復(fù)位值:00000000h 功能含義 PC.6 位寫 1,對應(yīng)點(diǎn)亮 LED1 PC.7 位寫 1,對應(yīng)點(diǎn)亮 LED2

  40xfffffd0f 0xfffffe0fPC.8 位寫 1,對應(yīng)點(diǎn)亮 LED3 PC.9 位寫 1,對應(yīng)點(diǎn)亮 LED4

  時(shí)鐘控制寄存器(RCC_CR) 復(fù)位和時(shí)鐘基地址:0X40021000 偏移地址: 0x00 復(fù)位值: 0x000 XX83 寄存器配置:0X00000003 功能含義:PLL 未鎖定,PLL 關(guān)閉,時(shí)鐘監(jiān)測器關(guān)閉,外部 1-25MHz 振蕩器沒有旁?,外部 1-25MHz 時(shí)鐘沒有就緒,HSE 振蕩器關(guān)閉內(nèi)部 8MHz 時(shí)鐘就緒,內(nèi)部 8MHz 時(shí)鐘開啟。 時(shí)鐘配置寄存器(RCC_CFGR) 復(fù)位和時(shí)鐘基地址:0X40021000 偏移地址: 0x04 復(fù)位值: 0x0000 0000 寄存器配置:0X00000000 功能含義:沒有時(shí)鐘輸出,PLL 時(shí)鐘 1.5 倍分頻作為 USB 時(shí)鐘,PLL 2 倍頻輸出,HSE 不分 頻,HSI 時(shí)鐘 2 分頻后作為 PLL 輸入時(shí)鐘,PCLK2 2 分頻后作為 ADC 時(shí)鐘,HCLK 不分頻, HCLK 不分頻,SYSCLK 不分頻,HSI 作為系統(tǒng)時(shí)鐘,HSI 作為系統(tǒng)時(shí)鐘。 AHB外設(shè)時(shí)鐘使能寄存器 (RCC_AHBENR) 復(fù)位和時(shí)鐘基地址:0X40021000 偏移地址:0x14 復(fù)位值:0x0000 0014 寄存器配置:0X00000014 功能含義:睡眠模式時(shí)閃存接口電路時(shí)鐘開啟,睡眠模式時(shí) SRAM 時(shí)鐘開啟,DMA 時(shí)鐘關(guān) 閉 APB2 外設(shè)時(shí)鐘使能寄存器(RCC_APB2ENR) 復(fù)位和時(shí)鐘基地址:0X40021000 偏移地址:0x18 復(fù)位值:0x0000 0000 寄存器配置:0XFFFFFFFF 功能含義:USART1 時(shí)鐘開啟,SPI1 時(shí)鐘開啟,TIM1 時(shí)鐘開啟,ADC2 時(shí)鐘開啟,ADC1 時(shí)鐘開啟,IO 口 E 時(shí)鐘開啟,IO 口 D 時(shí)鐘開啟,IO 口 C 時(shí)鐘開啟,IO 口 B 時(shí)鐘開啟,IO 口 A 時(shí)鐘開啟,輔助功能 IO 時(shí)鐘開啟

  3.2 主 要 程 序 說 明

  (1)啟動代碼轉(zhuǎn)入?yún)R編主程序的設(shè)置: 【啟動代碼段設(shè)置: 】 Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT MAIN ;聲明外部函數(shù),導(dǎo)入符號 LDR R0, =MAIN ;等待工作調(diào)用 BX R0 ;跳轉(zhuǎn)到匯編主程序 MAIN 函數(shù) ENDP ;過程段結(jié)束 【匯編主程序設(shè)置: 】 AREA MYCODE,CODE,READONLY ;定義一個代碼段,屬性為只讀 EXPORT MAIN MAIN PROC (主程序功能段開始) EndP END (2)匯編主程序 ;配置時(shí)鐘

  5LDR R1,=0X40021000 LDR R0,=0X00000003 STR R0,[R1,#0X00] LDR R0,=0X00000000 STR R0,[R1,#0X004] LDR R0,=0X00000014 STR R0,[R1,#0X14]

  時(shí)鐘控制寄存器入口

  配置時(shí)鐘控制寄存器(RCC_CR)

  配置時(shí)鐘配置寄存器(RCC_CFGR)

  配置 AHB 外設(shè)時(shí)鐘使能寄存器 RCC_AHBENR

  LDR R0,=0XFFFFFFFF STR R0,[R1,#0X18] ;配置 APB2 外設(shè)時(shí)鐘使能寄存器(RCC_APB2ENR) ;----------------------------------------------------------------------------------------------------;配置端口 MOVS R0,#0X22222222 LDR R1,=0X40011000 STR R0,[R1,#0X00] ;配置端口配置寄存器 GPIOC_CRL MOVS R0,#0X22222222 LDR R1,=0X40011000 STR R0,[R1,#0X04] ;配置端口配置寄存器 GPIOC_CRH ;---------------------------------------------------------------------------------------------------;點(diǎn) 亮 LED LDR R0,=0xfffffc4f STR R0,[R1,#0X0C] ;將 0xfffffc4f 寫進(jìn) GIPOC_ODR, 點(diǎn)亮 LED1 BL DELAY ;延時(shí) --------------------------------------------------------------------------------------------------------LDR R0,=0xfffffc8f STR R0,[R1,#0X0C] ;將 0xfffffc8f 寫進(jìn) GIPOC_ODR, 點(diǎn)亮 LED2 BL DELAY ;延時(shí) -------------------------------------------------------------------------------------------------------LDR R0,=0xfffffd0f STR R0,[R1,#0X0C] ;將 0xfffffd0f 寫進(jìn) GIPOC_ODR, 點(diǎn)亮 LED3 BL DELAY ;延時(shí) -------------------------------------------------------------------------------------------------------LDR R0,=0xfffffe0f STR R0,[R1,#0X0C] ;0xfffffe0f 寫進(jìn) GIPOC_ODR, 點(diǎn)亮 LED4 BL DELAY ;延時(shí) -------------------------------------------------------------------------------------------------------B MAIN ;跳到 MAIN 函數(shù) ;------------------------------------------------------------------------(2)延時(shí)子程序 DELAY

  6LDR R3,=0X000FFFFF ;延時(shí)控制字 DELAY_1 SUBS R3,R3,#0X01 ;延時(shí)控制字自減 BEQ DELAY_OUT ;為 0 跳出返回 B DELAY_1 ;不為 0 回轉(zhuǎn)繼續(xù)做減法 DELAY_OUT BX LR ;程序返回

  四、 調(diào)試與結(jié)果

  4.1 調(diào) 試 過 程

  (1) 使用 Keil uVision3 通過 ULINK 2 仿真器連接 EduKit-M3 實(shí)驗(yàn)平臺,打開建立的 my led controler 工程,點(diǎn)擊子目錄下的 my led.s 文件,編譯鏈接工程。 設(shè)置 Flash——Debug, 選擇 Cortex-M3 J-LINK, Flash——Utilities, 同樣選擇 Cortex-M3 J-LINK,效果如下

  點(diǎn)擊編譯鏈接,生成 HEX 文件

  點(diǎn)擊 Load,下載源程序到 STM32,運(yùn)行程序 (2) 選擇軟件調(diào)試模式,點(diǎn)擊 MDK 的 Debug 菜單,選擇 Start/Stop Debug Session 項(xiàng)或 Ctrl+F5 鍵。

  7在邏輯分析儀中添加 GPIOC_ODR.6、GPIOC_ODR.7、GPIOC_ODR.8、GPIOC_ODR.9, 點(diǎn)擊 Run 按鈕即可在邏輯分析儀中看波形。

  4.2 測 試

  本程序由于大量的涉及到原理簡單,測試方便,只需要單步運(yùn)行,查看寄存器的值,就 可以測試程序的正確性。

  (1) 程序開始時(shí)各寄存器的值

  (2)將時(shí)鐘控制寄存器入口基地址賦值給 R1

  (3)R1 既已經(jīng)被賦值了時(shí)鐘控制寄存器入口地址,利用偏移地址將時(shí)鐘各控制寄存器的地 址賦值給(R1+偏移量) 達(dá)到配置 RCC_CR、RCC_CFGR、RCC_AHBENR、RCC_APB2ENR 的目的, , 集體寄存器值變化如下:

  8(4)端口配置情況測試:I/O C 口入口地址寫進(jìn)通用寄存器 R1,利用基地址加偏移地址找 到端口配置寄存器 GPIOC_CRL、GPIOC_CRH,然后將控制字 0X22222222 寫進(jìn)該寄存器。

  (5)端口輸出數(shù)據(jù)寄存器(GPIOx_ODR) 的值的變化,直接反映了外部 LED 的亮滅變化, 采用逐位寫 1 的方式,實(shí)現(xiàn)循環(huán)點(diǎn)亮,此時(shí)通用 R1 已經(jīng)被寫進(jìn)了 C 口的入口基地址,只需 加上偏移地址#0X0C,便是 GPIOx_ODR 的地址,每次寫值控制 LED 點(diǎn)亮后,程序跳轉(zhuǎn)到延 時(shí)子程序,所測試結(jié)果如下: 【將 0xfffffc4f 寫進(jìn) GIPOC_ODR 點(diǎn)亮 LED1】 【延時(shí)子程序運(yùn)行寄存器變化情況】

  當(dāng)轉(zhuǎn)入延時(shí)子程序后,寄存器 R3 值做減 1 算法,從 0X000FFFFF 循環(huán)減至 0,是為延時(shí) 時(shí)間,然后繼續(xù)跳轉(zhuǎn)至端口輸出寄存器配置,點(diǎn)亮 LED2,接著再次跳轉(zhuǎn)到延時(shí)子程序,R39再次做減 1 運(yùn)算,如此控制 LED 循環(huán)點(diǎn)亮。 【轉(zhuǎn)入延時(shí)子程序】

  【退出延時(shí)子程序?qū)?LED2 對應(yīng)位寫 1 況】

  4.3 結(jié) 果 及 描 述

  (1)邏輯分析儀中波形:

  GPIOC_ODR.6、 GPIOC_ODR.7、 GPIOC_ODR.8、 GPIOC_ODR.9 的波形即對應(yīng)的 LED1、 LED2、LED3、LED4 高低電平波形,由此可以驗(yàn)證程序的正確性,即 LED 確實(shí)按照程序的 思想循環(huán)順序點(diǎn)亮。

  (2)當(dāng)將程序下載到 STM32 中后,EduKit-M3 實(shí)驗(yàn)平臺上四個 LED 確實(shí)循環(huán)點(diǎn)亮,進(jìn)一 步驗(yàn)證控制程序的正確性。

  五、總結(jié)

  本設(shè)計(jì)是基于 STM32 的匯編語言編寫的 LED 循環(huán)順序點(diǎn)亮控制程序,原理簡單易行, 程序可修改性和可讀性強(qiáng), 件電路也很簡單, 需要外擴(kuò)電路, 接利用試驗(yàn)臺內(nèi)部接線, 硬 不 直 通過對 GPIO 的控制來相應(yīng)地點(diǎn)亮 LED 燈。 整個控制程序只需要找到相應(yīng)的時(shí)鐘、端口、輸出寄存器的地址,以及各控制寄存器的 偏移地址,直接尋址寫值控制,這是與 C 語言程序最大的不同點(diǎn),即匯編編程更加的貼近硬 件,要求熟悉內(nèi)部寄存器的地址,熟悉如何配置各位,這就要求對寄存器每位的含義非常清 楚。 通過用匯編語言編寫 I/O 控制程序, 進(jìn)一步熟悉了解了 STM32 GPIO 操作, 以及 CORTEX M3 的內(nèi)部架構(gòu)和優(yōu)點(diǎn),學(xué)會了如何使用 KEIL Realview 開發(fā) STM32,以及如何進(jìn)行程序單 步調(diào)試,寄存器值查看。了解了 EduKit-M3 實(shí)驗(yàn)平臺內(nèi)部結(jié)構(gòu)和優(yōu)良的功能。

【嵌入式課程設(shè)計(jì)報(bào)告】相關(guān)文章:

嵌入式實(shí)習(xí)報(bào)告02-25

課程設(shè)計(jì)報(bào)告07-23

課程設(shè)計(jì)報(bào)告09-11

服裝課程設(shè)計(jì)報(bào)告07-03

軟件課程設(shè)計(jì)報(bào)告07-03

電氣課程設(shè)計(jì)報(bào)告07-03

android課程設(shè)計(jì)報(bào)告07-03

供配電課程設(shè)計(jì)報(bào)告07-03

電力拖動課程設(shè)計(jì)報(bào)告07-03

機(jī)械原理課程設(shè)計(jì)報(bào)告07-03

主站蜘蛛池模板: 真正全免费视频a毛片 | 九九在线视频 | 欧美日韩亚洲国产无线码 | 亚洲日本免费 | 亚洲国产欧美无圣光一区 | 成人久久18免费网站 | 亚洲高清成人欧美动作片 | 老司机午夜在线视频免费 | 亚洲色图欧美 | 韩国午夜理伦三级在线观看仙踪林 | 成年人视频在线免费看 | 日韩欧美精品在线视频 | 午夜激情在线视频 | 亚洲人成一区二区不卡 | 国产成人欧美 | 亚洲图片国产日韩欧美 | 久久久久国产一级毛片高清板 | 九九热在线视频播放 | 激情综合激情 | 久久黄色免费 | 午夜寂寞影视 | 人人人人草 | 一区二区三区在线播放 | 亚洲一区二区成人 | 免费看片的网址 | 日韩三级影视 | 日韩不卡一区 | 最近最中文字幕视频 | 国产日韩欧美综合色视频在线 | 正在播放亚洲一区 | 亚欧洲精品在线视频免费观看 | 欧美性xxx极品 | xx中文字幕乱偷avxx | 免费女上男下xx00xx动态图 | 亚洲成a人v天堂网 | 国产欧美在线视频免费 | 欧美黑人性色黄在线视频 | 国产手机在线αⅴ片无码观看 | 日本免费一区二区视频 | 天堂v亚洲国产v一区二区 | 亚洲图片在线欧美专区图片 |