实验二按键中断实验_第1页
实验二按键中断实验_第2页
实验二按键中断实验_第3页
实验二按键中断实验_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验二按键中断实验一、实验目的了解中断的含义二、实验内容板子加电后,按动板子上K1-K3按键,可控制对应的LED1-LED3的亮灭,该实验学习了 外部中断(EXTI)程序的编制及控制流程。三、实验仪器、设备计算机、开发板、keil软件四、硬件设计在开发板上V6、V7、V8分别与MCU的PB5、PD6、PD3相连,如下图所示PB5-LED1PD6-LED2PD3-LED3GND键盘部分如下图所示:例程所用到的列扫描线:PC5,PC2,PC3。例程所用到的行扫描线(EXTI中断线):PE2。300.sfcEqoowud900描oduoood五、实验要求和步骤开发板上有3个蓝色状态指示灯V6 (LE

2、D1) ,V7 (LED2) ,V8 (LED3),通过对应的按键 K1-K3,控制LED的亮灭,将PE2引脚配置为外部中断,当其上出现下降沿时产生一个中断, 根据扫描PC5, PC2, PC3来判别是哪个按键按下。首先我们了解一下什么是外部中断/事件控制器(EXTI)。外部中断/事件控制器由19个产生事件/中断要求的边沿检测器组成。每个输入线可以 独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。 每个输入线都可以被独立的屏蔽。挂起寄存器保持着状态线的中断要求。EXTI控制器的主要特性如下:每个中断/事件都有独立的触发和屏蔽每个中断线都有专用的状态位支持多达

3、19个中断/事件请求检测脉冲宽度低于APB2时种宽度的外部信号如要产生中断,中断线必须事先配置好并被激活。这是根据需要的边沿检测通过设置2 个触发寄存器,和在中断屏蔽寄存器的相应位写“1”到来允许中断请求。当需要的边沿在 外部中断线上发生时,将产生一个中断请求,对应的挂起位也随之被置1。通过写“ 1”到 挂起寄存器,可以清除该中断请求。为产生事件触发,事件连接线必须事先配置好并被激活。 这是根据需要的边沿检测通过设置2个触发寄存器,和在事件屏蔽寄存器的相应位写“1” 到来允许事件请求。当需要的边沿在事件连线上发生时,将产生一个事件请求脉冲,对应的 挂起位不被置1。通过在软件中断/事件寄存器写“

4、1”,一个中断/事件请求也可以通过软件 来产生。本次实验需要组件的工程文件文档如下:-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为中断服务程序主程序,我们对主程序进行一次详细的注释。/主程序int main(void)unsigned char a=0,b=0,c=0;/*完成对系统时钟的

5、设置,例程中通过系统时钟设置函数,外接晶振采用8Mhz,经过片内频率合成,9倍频,设置为72MHz的时钟。*/ RCC_Configuration();/*嵌套向量中断控制器 说明了EXTI2抢占优先级级别0 (最多1位),和子优先级级别0 (最多7位)*/NVIC_Configuration();/*对控制3个LED指示灯的IO 口进行了初始化,将3个端口配置为推挽上拉输出,口线速度为50Mhz。将中断线PE2配置为输入模式。将键盘扫描列 线PC5, PC2,PC3设置为推挽上拉输出。在配置某个口线时,首先应对它所在的端口的时钟进行使能。否则无法配置成功,由于用到了端口 B和端口D,C,D,

6、因此要对这4个端口的时钟进行使能,同时由于用到复用IO口功能用于配置外部中断。因此还要使能AFI。(复用功能IO) 时钟。*/ GPIO_Configuration();用于配置AFIO外部中断配置寄存器AFIO_EXTICR1,用于选择EXTI2外部中断的输入源是PE2。 GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource2);EXTI_InitStructure.EXTI_Line = EXTI_Line2; /PE2 作为键盘的行线。检测状态 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_I

7、nterrupt; /中断模式 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; /下降沿触发 EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); /*置3根键盘列扫描线为0,以便在按键按下时产生中断 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(); /键盘扫描程序判断是哪个键按下 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; /键盘扫描程序void numm(void) num=0; if(_it0=1) /按键按下标志 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) /按键消抖动 while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)=0); /是否松开按键 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) /按键消抖动while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)=0); /是否松开按键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) /按键消抖动while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)=0); /是否松开按键num=3; /键值3为K3按下goto n_exit;n_exit:;_it0=0;/键盘中断服务程序/*键盘中断(EXTI2 )服务程序*/voi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论