實(shí)驗(yàn)二按鍵中斷實(shí)驗(yàn)_第1頁(yè)
實(shí)驗(yàn)二按鍵中斷實(shí)驗(yàn)_第2頁(yè)
實(shí)驗(yàn)二按鍵中斷實(shí)驗(yàn)_第3頁(yè)
實(shí)驗(yàn)二按鍵中斷實(shí)驗(yàn)_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)二按鍵中斷實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康牧私庵袛嗟暮x二、實(shí)驗(yàn)內(nèi)容板子加電后,按動(dòng)板子上K1-K3按鍵,可控制對(duì)應(yīng)的LED1-LED3的亮滅,該實(shí)驗(yàn)學(xué)習(xí)了 外部中斷(EXTI)程序的編制及控制流程。三、實(shí)驗(yàn)儀器、設(shè)備計(jì)算機(jī)、開(kāi)發(fā)板、keil軟件四、硬件設(shè)計(jì)在開(kāi)發(fā)板上V6、V7、V8分別與MCU的PB5、PD6、PD3相連,如下圖所示PB5-LED1PD6-LED2PD3-LED3GND鍵盤(pán)部分如下圖所示:例程所用到的列掃描線:PC5,PC2,PC3。例程所用到的行掃描線(EXTI中斷線):PE2。300.sfcEqoowud900描oduoood五、實(shí)驗(yàn)要求和步驟開(kāi)發(fā)板上有3個(gè)藍(lán)色狀態(tài)指示燈V6 (LE

2、D1) ,V7 (LED2) ,V8 (LED3),通過(guò)對(duì)應(yīng)的按鍵 K1-K3,控制LED的亮滅,將PE2引腳配置為外部中斷,當(dāng)其上出現(xiàn)下降沿時(shí)產(chǎn)生一個(gè)中斷, 根據(jù)掃描PC5, PC2, PC3來(lái)判別是哪個(gè)按鍵按下。首先我們了解一下什么是外部中斷/事件控制器(EXTI)。外部中斷/事件控制器由19個(gè)產(chǎn)生事件/中斷要求的邊沿檢測(cè)器組成。每個(gè)輸入線可以 獨(dú)立地配置輸入類(lèi)型(脈沖或掛起)和對(duì)應(yīng)的觸發(fā)事件(上升沿或下降沿或者雙邊沿都觸發(fā))。 每個(gè)輸入線都可以被獨(dú)立的屏蔽。掛起寄存器保持著狀態(tài)線的中斷要求。EXTI控制器的主要特性如下:每個(gè)中斷/事件都有獨(dú)立的觸發(fā)和屏蔽每個(gè)中斷線都有專(zhuān)用的狀態(tài)位支持多達(dá)

3、19個(gè)中斷/事件請(qǐng)求檢測(cè)脈沖寬度低于APB2時(shí)種寬度的外部信號(hào)如要產(chǎn)生中斷,中斷線必須事先配置好并被激活。這是根據(jù)需要的邊沿檢測(cè)通過(guò)設(shè)置2 個(gè)觸發(fā)寄存器,和在中斷屏蔽寄存器的相應(yīng)位寫(xiě)“1”到來(lái)允許中斷請(qǐng)求。當(dāng)需要的邊沿在 外部中斷線上發(fā)生時(shí),將產(chǎn)生一個(gè)中斷請(qǐng)求,對(duì)應(yīng)的掛起位也隨之被置1。通過(guò)寫(xiě)“ 1”到 掛起寄存器,可以清除該中斷請(qǐng)求。為產(chǎn)生事件觸發(fā),事件連接線必須事先配置好并被激活。 這是根據(jù)需要的邊沿檢測(cè)通過(guò)設(shè)置2個(gè)觸發(fā)寄存器,和在事件屏蔽寄存器的相應(yīng)位寫(xiě)“1” 到來(lái)允許事件請(qǐng)求。當(dāng)需要的邊沿在事件連線上發(fā)生時(shí),將產(chǎn)生一個(gè)事件請(qǐng)求脈沖,對(duì)應(yīng)的 掛起位不被置1。通過(guò)在軟件中斷/事件寄存器寫(xiě)“

4、1”,一個(gè)中斷/事件請(qǐng)求也可以通過(guò)軟件 來(lái)產(chǎn)生。本次實(shí)驗(yàn)需要組件的工程文件文檔如下:-Target 1 白矗ASM印.母Etm3210 x it. c+m ai n. c+stm32flOx_gpi o. c白伉 FWlibmi sc. cEtm32fl0 x_rcc. c stm3210 x exti. c-、CMSYS+因 core_cm3. c+ 困 system_5tm3210 x. cUSER-stm32f10 x_it.c為中斷服務(wù)程序主程序,我們對(duì)主程序進(jìn)行一次詳細(xì)的注釋。/主程序int main(void)unsigned char a=0,b=0,c=0;/*完成對(duì)系統(tǒng)時(shí)鐘的

5、設(shè)置,例程中通過(guò)系統(tǒng)時(shí)鐘設(shè)置函數(shù),外接晶振采用8Mhz,經(jīng)過(guò)片內(nèi)頻率合成,9倍頻,設(shè)置為72MHz的時(shí)鐘。*/ RCC_Configuration();/*嵌套向量中斷控制器 說(shuō)明了EXTI2搶占優(yōu)先級(jí)級(jí)別0 (最多1位),和子優(yōu)先級(jí)級(jí)別0 (最多7位)*/NVIC_Configuration();/*對(duì)控制3個(gè)LED指示燈的IO 口進(jìn)行了初始化,將3個(gè)端口配置為推挽上拉輸出,口線速度為50Mhz。將中斷線PE2配置為輸入模式。將鍵盤(pán)掃描列 線PC5, PC2,PC3設(shè)置為推挽上拉輸出。在配置某個(gè)口線時(shí),首先應(yīng)對(duì)它所在的端口的時(shí)鐘進(jìn)行使能。否則無(wú)法配置成功,由于用到了端口 B和端口D,C,D,

6、因此要對(duì)這4個(gè)端口的時(shí)鐘進(jìn)行使能,同時(shí)由于用到復(fù)用IO口功能用于配置外部中斷。因此還要使能AFI。(復(fù)用功能IO) 時(shí)鐘。*/ GPIO_Configuration();用于配置AFIO外部中斷配置寄存器AFIO_EXTICR1,用于選擇EXTI2外部中斷的輸入源是PE2。 GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource2);EXTI_InitStructure.EXTI_Line = EXTI_Line2; /PE2 作為鍵盤(pán)的行線。檢測(cè)狀態(tài) EXTI_InitStructure.EXTI_Mode = EXTI_Mode_I

7、nterrupt; /中斷模式 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; /下降沿觸發(fā) EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); /*置3根鍵盤(pán)列掃描線為0,以便在按鍵按下時(shí)產(chǎn)生中斷 GPIO_ResetBits(GPIOC, GPIO_Pin_2); GPIO_ResetBits(GPIOC, GPIO_Pin_3); GPIO_ResetBits(GPIOC, GPIO_Pin_5); while (1) GPIO_

8、ResetBits(GPIOC, GPIO_Pin_2); GPIO_ResetBits(GPIOC, GPIO_Pin_3); GPIO_ResetBits(GPIOC, GPIO_Pin_5); numm(); /鍵盤(pán)掃描程序判斷是哪個(gè)鍵按下 if(num=1&a=0)GPIO_ResetBits(GPIOB, GPIO_Pin_5);a=1; /K1 按下作處理 else if(num=1&a=1)GPIO_SetBits(GPIOB, GPIO_Pin_5);a=0; if(num=2&b=0)GPIO_ResetBits(GPIOD, GPIO_Pin_6);b=1; /K2 按下作

9、處理 else if(num=2&b=1)GPIO_SetBits(GPIOD, GPIO_Pin_6);b=0; if(num=3&c=0)GPIO_ResetBits(GPIOD, GPIO_Pin_3);c=1; /K3 按下作處理 else if(num=3&c=1)GPIO_SetBits(GPIOD, GPIO_Pin_3);c=0; /鍵盤(pán)掃描程序void numm(void) num=0; if(_it0=1) /按鍵按下標(biāo)志 GPIO_ResetBits(GPIOC, GPIO_Pin_5); /置PC5為0。 GPIO_SetBits(GPIOC, GPIO_Pin_2);

10、 GPIO_SetBits(GPIOC, GPIO_Pin_3); if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)=0) /K1 Delay(0 xff); if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)=0) /按鍵消抖動(dòng) while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)=0); /是否松開(kāi)按鍵 num=1; /鍵值1為K1按下 goto n_exit;GPIO_SetBits(GPIOC, GPIO_Pin_5);GPIO_ResetBits(GPIOC, GPIO_Pin

11、_2); /置PC2為0GPIO_SetBits(GPIOC, GPIO_Pin_3);Delay(0 xff);if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)=0) /K2Delay(0 xff);if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)=0) /按鍵消抖動(dòng)while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)=0); /是否松開(kāi)按鍵num=2; /鍵值2為K2按下goto n_exit;GPIO_SetBits(GPIOC, GPIO_Pin_5);GPIO_SetBits

12、(GPIOC, GPIO_Pin_2);GPIO_ResetBits(GPIOC, GPIO_Pin_3); /置PC3為0Delay(0 xff);if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)=0) /K3Delay(0 xff);if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)=0) /按鍵消抖動(dòng)while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)=0); /是否松開(kāi)按鍵num=3; /鍵值3為K3按下goto n_exit;n_exit:;_it0=0;/鍵盤(pán)中斷服務(wù)程序/*鍵盤(pán)中斷(EXTI2 )服務(wù)程序*/voi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論