97超级碰碰碰久久久_精品成年人在线观看_精品国内女人视频免费观_福利一区二区久久

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

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

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

  最近幾年,幾乎所有的IT 企業(yè)對(duì)應(yīng)屆畢業(yè)生都有抱怨:動(dòng)手能力太差,編程水平低下。下面和小編一起來(lái)看看報(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)核)的全功能 評(píng)估板。STM103V100-II 評(píng)估板有 USB,Motor Control,CAN,SD 卡,Smart 卡, UART,Speaker,LCD,LED,BNC,耳塞插孔等豐富的外設(shè),有助于用戶(hù)輕松開(kāi)發(fā) STM32 的強(qiáng)大功能。STM32 系列使用了 ARM 最新的、先進(jìn)架構(gòu) Cortex-M3 內(nèi)核,本文論述 了在 Keil Realview 開(kāi)發(fā)環(huán)境上開(kāi)發(fā)基于匯編語(yǔ)言的 LED 控制程序, 基于對(duì) STM32 的 GPIO 寄存器寫(xiě)值配置思想, 控制 EduKit-M3 實(shí)驗(yàn)平臺(tái)的發(fā)光二極管 LED1、 LED2、 LED3、 LED4, 使它們有規(guī)律地點(diǎn)亮。

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

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

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

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

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

  2

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

  2.1 硬件電路

  2.2 硬件電路描述

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

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

  3.1 程 序 流 程 圖

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

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

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

 。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 位寫(xiě) 1,對(duì)應(yīng)點(diǎn)亮 LED1 PC.7 位寫(xiě) 1,對(duì)應(yīng)點(diǎn)亮 LED2

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

  時(shí)鐘控制寄存器(RCC_CR) 復(fù)位和時(shí)鐘基地址:0X40021000 偏移地址: 0x00 復(fù)位值: 0x000 XX83 寄存器配置:0X00000003 功能含義:PLL 未鎖定,PLL 關(guān)閉,時(shí)鐘監(jiān)測(cè)器關(guān)閉,外部 1-25MHz 振蕩器沒(méi)有旁?,外部 1-25MHz 時(shí)鐘沒(méi)有就緒,HSE 振蕩器關(guān)閉內(nèi)部 8MHz 時(shí)鐘就緒,內(nèi)部 8MHz 時(shí)鐘開(kāi)啟。 時(shí)鐘配置寄存器(RCC_CFGR) 復(fù)位和時(shí)鐘基地址:0X40021000 偏移地址: 0x04 復(fù)位值: 0x0000 0000 寄存器配置:0X00000000 功能含義:沒(méi)有時(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í)鐘開(kāi)啟,睡眠模式時(shí) SRAM 時(shí)鐘開(kāi)啟,DMA 時(shí)鐘關(guān) 閉 APB2 外設(shè)時(shí)鐘使能寄存器(RCC_APB2ENR) 復(fù)位和時(shí)鐘基地址:0X40021000 偏移地址:0x18 復(fù)位值:0x0000 0000 寄存器配置:0XFFFFFFFF 功能含義:USART1 時(shí)鐘開(kāi)啟,SPI1 時(shí)鐘開(kāi)啟,TIM1 時(shí)鐘開(kāi)啟,ADC2 時(shí)鐘開(kāi)啟,ADC1 時(shí)鐘開(kāi)啟,IO 口 E 時(shí)鐘開(kāi)啟,IO 口 D 時(shí)鐘開(kāi)啟,IO 口 C 時(shí)鐘開(kāi)啟,IO 口 B 時(shí)鐘開(kāi)啟,IO 口 A 時(shí)鐘開(kāi)啟,輔助功能 IO 時(shí)鐘開(kāi)啟

  3.2 主 要 程 序 說(shuō) 明

 。1)啟動(dòng)代碼轉(zhuǎn)入?yún)R編主程序的設(shè)置: 【啟動(dòng)代碼段設(shè)置: 】 Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT MAIN ;聲明外部函數(shù),導(dǎo)入符號(hào) LDR R0, =MAIN ;等待工作調(diào)用 BX R0 ;跳轉(zhuǎn)到匯編主程序 MAIN 函數(shù) ENDP ;過(guò)程段結(jié)束 【匯編主程序設(shè)置: 】 AREA MYCODE,CODE,READONLY ;定義一個(gè)代碼段,屬性為只讀 EXPORT MAIN MAIN PROC (主程序功能段開(kāi)始) 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 寫(xiě)進(jìn) GIPOC_ODR, 點(diǎn)亮 LED1 BL DELAY ;延時(shí) --------------------------------------------------------------------------------------------------------LDR R0,=0xfffffc8f STR R0,[R1,#0X0C] ;將 0xfffffc8f 寫(xiě)進(jìn) GIPOC_ODR, 點(diǎn)亮 LED2 BL DELAY ;延時(shí) -------------------------------------------------------------------------------------------------------LDR R0,=0xfffffd0f STR R0,[R1,#0X0C] ;將 0xfffffd0f 寫(xiě)進(jìn) GIPOC_ODR, 點(diǎn)亮 LED3 BL DELAY ;延時(shí) -------------------------------------------------------------------------------------------------------LDR R0,=0xfffffe0f STR R0,[R1,#0X0C] ;0xfffffe0f 寫(xiě)進(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) 試 過(guò) 程

  (1) 使用 Keil uVision3 通過(guò) ULINK 2 仿真器連接 EduKit-M3 實(shí)驗(yàn)平臺(tái),打開(kāi)建立的 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 測(cè) 試

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

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

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

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

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

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

  4.3 結(jié) 果 及 描 述

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

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

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

  五、總結(jié)

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

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

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