嵌入式技術(shù)及應(yīng)用實(shí)驗(yàn)GPIO實(shí)驗(yàn)報告_第1頁
嵌入式技術(shù)及應(yīng)用實(shí)驗(yàn)GPIO實(shí)驗(yàn)報告_第2頁
嵌入式技術(shù)及應(yīng)用實(shí)驗(yàn)GPIO實(shí)驗(yàn)報告_第3頁
嵌入式技術(shù)及應(yīng)用實(shí)驗(yàn)GPIO實(shí)驗(yàn)報告_第4頁
嵌入式技術(shù)及應(yīng)用實(shí)驗(yàn)GPIO實(shí)驗(yàn)報告_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

#院系:計(jì)算機(jī)科學(xué)學(xué)院專業(yè):自動化年級:11級學(xué)號:11064029姓名:楊勝提指導(dǎo)教師:劉科2013年5月8日

年級11級班級11級自動化一班學(xué)號11064029專業(yè)自動化姓名楊勝提題目名稱實(shí)驗(yàn)、GPIO實(shí)驗(yàn)實(shí)驗(yàn)設(shè)計(jì)要求控制EduKit-M3實(shí)驗(yàn)平臺的發(fā)光二極管LED1、LED2、LED3、LED4,使它們有規(guī)律的點(diǎn)亮,具體順序如下:LED1亮->LED2亮->LED3亮->LED4亮,如此反復(fù),當(dāng)按下EduKit-M3實(shí)驗(yàn)平臺上的Key按鈕時,燈全部熄滅,2秒鐘后發(fā)光二極管全部點(diǎn)亮,再過一秒鐘后返回被中斷前的狀態(tài),有規(guī)律的依次點(diǎn)亮。實(shí)驗(yàn)設(shè)計(jì)思路1、硬件電路設(shè)計(jì)在EduKit-M3實(shí)驗(yàn)平臺上,LED1、LED2、LED3、LED4分別與PC6、PC7、PC8、PC9相連,按鍵Key與PB9相連。2、軟件程序設(shè)計(jì)配置PB口第9個引腳作為外部中斷,下降延觸發(fā);讀取端口數(shù)據(jù)輸出寄存器GPIOC_ODR[15:0]的值,因?yàn)镃口[9:6H立和四個LED燈連通。初始化時,LED依次點(diǎn)亮,當(dāng)按下Key鍵時產(chǎn)生中斷;中斷服務(wù)子程序內(nèi)容:燈全部熄滅,2秒鐘后發(fā)光二極管全部點(diǎn)亮,再過1秒鐘后中斷返回。整個工程包含3個源文件:STM32F10x.s、stm32f10x_it.c和main.c,其中STM32F10x.s為啟動代碼,所有中斷服務(wù)子程序均在stm32f10x_it.c中,其它函數(shù)則在main.c中。實(shí)驗(yàn)步驟與結(jié)果分析運(yùn)行過程⑴使用KeiluVision3通過ULINK2仿真器連接EduKit-M3實(shí)驗(yàn)平臺,打開實(shí)驗(yàn)例程目錄GPIO_TEST子目錄下的GPI0.Uv2例程,編譯鏈接工程;選擇軟件調(diào)試模式,點(diǎn)擊MDK的Debug菜單,選擇Start/StopDebugSession項(xiàng)或Ctrl+F5鍵,在邏輯分析儀中添加GPI0C_0DR.6、GPI0C_0DR.7、GPIOC_ODR.8、GPIOC_ODR.9,點(diǎn)擊Run按鈕即可在邏輯分析儀中看到如圖7-11;選擇硬件調(diào)試模式,選擇Start/StopDebugSession項(xiàng)或Ctrl+F5鍵,下載程序并運(yùn)行,觀察LED燈的變化情況;當(dāng)程序運(yùn)行在while循環(huán)體內(nèi)時,按Key鍵,程序進(jìn)入中斷服務(wù)子程序EXTI9_5_IRQHandler(),單步運(yùn)行,觀察LED的變化情況。退出Debug模式,打開Flash菜單>Download,將程序下載到EduKit-M3實(shí)驗(yàn)平臺的Flash中,按RESET鍵復(fù)位,觀察LED燈的情況,正常情況應(yīng)如下。LED燈狀態(tài)1LED1LED2LED3LED4亮滅滅滅滅亮滅滅滅滅亮滅滅滅滅亮滅滅滅滅亮亮亮亮程序正常運(yùn)行,發(fā)光二極管依次點(diǎn)亮外部信號輸入,發(fā)生中斷,執(zhí)行中斷處理程序LED燈狀態(tài)2LED1LED2LED3LED4亮滅滅滅亮亮滅滅亮亮亮滅亮亮亮亮滅滅滅滅亮亮亮亮程序正常運(yùn)行,發(fā)光二極管依次點(diǎn)亮外部信號輸入,發(fā)生中斷,執(zhí)行中斷處理程序軟件程序設(shè)計(jì)1、配置PB口第9個引腳作為外部中斷,下降延觸發(fā);/*ConfigurePB9asinputfloating(EXTILine9)*/GPIO_InitStructure.GPIO_Pin=GPI0_Pin_9;〃引腳選擇GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;/輸入模式選擇GPIO_Init(GPIOB,&GPIO_InitStructure);2、讀取端口數(shù)據(jù)輸出寄存器GPIOC_ODR[15:0]的值,因?yàn)镃口[9:6H立和四個LED燈連通。方法一:/*ConfigurePC.asOutputpush-pull*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6IGPIO_Pin_7IGPIO_Pin_8IGPIO_Pin_9;〃與LED燈連通的引腳選擇GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;〃設(shè)置輸出引腳的速度GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;主要程序代碼分析//設(shè)置輸出引腳的模式為推挽輸出模式主要程序代碼分析GPIO_Init(GPIOC,&GPIO_InitStructure);方法二:利用端口配置低寄存器(GPIOx-CRL)(x=A..E)和端口配置高寄存器(GPIOx-CRH)(x=A..E)GPIOC_CRL=Oxcc444444;GPIOC_CRH=Ox444444cc;521端口配置低寄存器(GPIOx_CRL)(x=A..E)偏移地址:0x00復(fù)位値:0x4444444431302928272625242322212019181716CNF7[l:0]MODE7[1:OZCNF6[l:0]MODESZ1:0ZCNF5[1:O]MODES[1:0:CNF4[1:0ZMODE4[1:OZrwrwrwrwFTrwrwrwrwrwrwrwrwrwrwrw1514131211109876543210CNF3[l:0]MODE3[1:OZCNF2[l:0ZM0DE2Z1:0ZCNFl;l:0ZM0DE1[1:0:CNF0[l:0ZMODEO[1:OZrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw3、初始化時,LED依次點(diǎn)亮,當(dāng)按下Key鍵時產(chǎn)生中斷;/*ConfigureEXTILine9togenerateaninterruptonfallingedge*/EXTI_InitStructure.EXTI_Line=EXTI_Line9;EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTIInitStructure.EXTITrigger=EXTITriggerFalling;

EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);4、LED依次點(diǎn)亮的子程序for(;;){GPIO_ResetBits(GPIOC,GPIO_Pin_6IGPIO_Pin_7IGPIO_Pin_8IGPIO_Pin_9);GPI0_SetBits(GPI0C,GPI0_Pin_6);算法1地址偏移:OCh復(fù)位値:OOOOOOOOh3130292827262524232221201918171615141312111091514131211109876543210ODR15ODR14ODR130DR12ODR11ODR1O0Df?90DR8ODR70DR60DR50DR4ODR3ODR20DR1ODROrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw保留//1高16位保留,全為F,底16位相應(yīng)置高或GPIOC->ODR&=0xfffffc4f;置底/*Delay(800);GPIOC->ODR&=OxfffffcOf;GPIOC->ODR|=OxOOOOOccO;Delay(800);GPIOC->ODR&=OxfffffcOf;GPIOC->ODR|=OxOOOOOdcO;Delay(800);GPIOC->ODR&=OxfffffcOf;GPIOC->ODR|=OxOOOOOfcO;//2//3//4Delay(800);算法2GPIO_ResetBits(GPIOC,GPIO_Pin_6);〃使Pin_6置低Delay(800);GPIO_SetBits(GPIOC,GPIO_Pin_6);〃使Pin_6置高Delay(100);GPIO_ResetBits(GPIOC,GPIO_Pin_7);Delay(800);GPIO_SetBits(GPIOC,GPIO_Pin_7);Delay(100);GPIO_ResetBits(GPIOC,GPIO_Pin_8);Delay(800);GPIO_SetBits(GPIOC,GPIO_Pin_8);Delay(100);GPIO_ResetBits(GPIOC,GPIO_Pin_9);Delay(800);

GPI0_SetBits(GPI0C,GPI0_Pin_9);Delay(lOO);}//Tabk193.函數(shù)GPIOSetBits函數(shù)名GPIOSetBiTs函數(shù)原形voidGPIOSetBits(GPIOTypeDePGPIOx.ul6GPIOPm)功能描述設(shè)置指定的數(shù)據(jù)端口位輸入?yún)?shù)1GPIOxt孟可以是A,B,C,D或者E,來選擇GPIO外設(shè)輸入?yún)?shù)2GPIO_Pin:待設(shè)置的端口位該參城可以取GPIO_Pin」仗可以是0-15)的任意組合參閱Section;GPIO_Pm作閱史參仮參數(shù)允許取值范圍T訪b194,函數(shù)GPIORm討B(tài)i怙函數(shù)名GPIOResetBirs函數(shù)原形voidGPIO-ResetBifstGPIO-

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論