外部按鍵中斷延時控制LED設計1_第1頁
外部按鍵中斷延時控制LED設計1_第2頁
外部按鍵中斷延時控制LED設計1_第3頁
外部按鍵中斷延時控制LED設計1_第4頁
外部按鍵中斷延時控制LED設計1_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、成績實訓報告 題 目: 外部按鍵中斷延時控制LED設計 課程名稱: ARM嵌入式系統(tǒng)實訓 學生姓名: 孫丹丹 段思韋 夏慧 系 別: 電子工程學院 專 業(yè): 通信工程 年 級: 13級通信(2)班 任課教師: 權(quán)循忠 實訓時間: 2015年11月13日 電子工程學院2015年11月實訓三、外部按鍵中斷延時控制LED設計學生:孫丹丹 段思韋 夏慧指導教師:權(quán)循忠電子工程學院:通信工程專業(yè)一、 實訓目的:1. 掌握STM32項目開發(fā)流程;2. 學會畫出算法流程圖;3. 掌握外部按鍵中斷、LED的控制編程。二、 實訓內(nèi)容:完成下列任務的項目(1) 按鍵KEY0,在中斷程序中控制LED0亮、3秒后熄滅

2、;(2) 按鍵KEY1,在中斷程序中也控制LED0亮、然后3秒后熄滅;(3) 按鍵KEY2,在中斷程序中控制LED0和LED1同時亮5秒,然后熄滅。三、 實訓過程: 1.人員分工:孫丹丹:主要負責實驗報告模板的制作、流程圖的繪畫、實驗總結(jié)的編寫;段思韋:主要負責算法的設計、程序的編寫與實現(xiàn)、實驗報告的匯總;夏 慧:主要負責硬件圖的設計與繪畫、硬件圖的解析。 2.實訓硬件連接電路原理圖1KEY0,KEY1用作普通按鍵輸入,分別連接在PC5和PC15上,WK_UP按鍵連接到PA0,它除了可以用作普通輸入按鍵外,還可以用作STM32的喚醒輸入。這個按鍵是高電平觸發(fā)的。KEY0,KEY1連接好后接地,

3、WK_UP接VCC.LED0和LED1分別連接在PA8和PD2上,并通過電阻連接,它們都是通過電阻并聯(lián)后接在一起,最后接VCC和地。3.算法設計3.1流程圖初始化外部中斷函數(shù)后,再編寫中斷服務函數(shù),利用中斷來檢測按鍵。如果中斷請求來自中斷線0,即WA_UP鍵按下,LED0與LED1同時亮,延遲五秒后熄滅。如果中斷請求來自中斷線59或者1015,即KEY0或者KEY1被按下,LED0亮,延遲三秒后熄滅。變量t定義t=檢測按鍵硬件初始化System Init();delay_init();LED_Init();NVIC_Configuration();uart_init(9600);BEEP_In

4、it();KEY_Init();EXTIX_Init();YYYYNNNLED0和LED1亮延時五秒LED0和LED1滅LED0亮延時三秒LED0滅LED0亮延時三秒LED0滅按下WA_UP?按下KEY1?按下KEY0?t!=0while(1)3.2 exti.c文件源代碼#include "exti.h"#include "led.h"#include "key.h"#include "delay.h"#include "usart.h"/外部中斷初始化函數(shù)void EXTIX_Init(vo

5、id) EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);/外部中斷,需要使能AFIO時鐘 KEY_Init();/初始化按鍵對應io模式 /GPIOC.5 中斷線以及中斷初始化配置 GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5); EXTI_InitStructure.EXTI_Line=EXTI_Line5; EXTI_Ini

6、tStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;/下降沿觸發(fā) EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); /根據(jù)EXTI_InitStruct中指定的參數(shù)初始化外設EXTI寄存器 /GPIOA.15 中斷線以及中斷初始化配置 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource1

7、5); EXTI_InitStructure.EXTI_Line=EXTI_Line15; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); /根據(jù)EXTI_InitStruct中指定的參數(shù)初始化外設EXTI寄存器 /GPIOA.0 中斷線以及中斷初始化配置 GPIO_EXTI

8、LineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0); EXTI_InitStructure.EXTI_Line=EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure);/根據(jù)EXTI_InitStruct中指定的參數(shù)初

9、始化外設EXTI寄存器 NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;/使能按鍵所在的外部中斷通道 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;/搶占優(yōu)先級2 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;/子優(yōu)先級1 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;/使能外部中斷通道 NVIC_Init(&NVIC_InitStructure); /根據(jù)N

10、VIC_InitStruct中指定的參數(shù)初始化外設NVIC寄存器NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;/使能按鍵所在的外部中斷通道 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;/搶占優(yōu)先級2, NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;/子優(yōu)先級1 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;/使能外部中斷通道 NVIC_Init(&NV

11、IC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;/使能按鍵所在的外部中斷通道 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;/搶占優(yōu)先級2, NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;/子優(yōu)先級1 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;/使能外部中斷通道 NVIC_Init(&NVIC_InitStru

12、cture); void EXTI0_IRQHandler(void) delay_ms(10); /消抖if(WK_UP=1) LED0=0;LED1=0;delay_ms(1000);delay_ms(1000);delay_ms(1000);delay_ms(1000);delay_ms(1000);LED0=1;LED1=1;EXTI_ClearITPendingBit(EXTI_Line0); /清除EXTI0線路掛起位 void EXTI9_5_IRQHandler(void)delay_ms(10); /消抖 if(KEY0=1)LED0=0;delay_ms(1000);del

13、ay_ms(1000);delay_ms(1000);LED0=1; EXTI_ClearITPendingBit(EXTI_Line5); /清除LINE5上的中斷標志位 void EXTI15_10_IRQHandler(void) delay_ms(10); /消抖 if(KEY1=1)LED0=0;delay_ms(1000);delay_ms(1000);delay_ms(1000);LED0=1; EXTI_ClearITPendingBit(EXTI_Line15); /清除LINE15線路掛起位 3.3 算法解釋 先初始化I/O口為輸入,開啟I/O口復用時針,設置I/O口與中斷線的映射關(guān)系,初始化線上中斷,設置觸發(fā)條件,配置中斷分組(NVIC),并使能中斷。再編寫中斷服務函數(shù):如果中斷請求來自中斷線0,即WA_UP鍵按下,LED0與LED1同時亮,延遲五秒后熄滅。如果中斷請求來自中斷線59或者1015,即KEY0或者KEY1被按下,LED0亮,延遲三秒后熄滅。四、 實訓結(jié)果 LED0亮 兩燈一起亮五、 實訓總結(jié)每一次實訓有每一次不一樣的感受,隨著實訓的不斷進行,內(nèi)容也逐漸加深,開始接觸新的內(nèi)容,課堂上的編程、調(diào)試、檢驗,步驟還是和之前的一樣。只是

溫馨提示

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

最新文檔

評論

0/150

提交評論