机电传动控制 实验4按键中断.docxVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验四 如何检测外部中断 实验目的 掌握STM32F103通用GPIO口作为外部中断使用的设置步骤; 掌握STM32中断函数的编写方法; 实验内容 在实验3的基础之上新建EXIT.c、EXIT.h实现外部下降沿中断检测的功能并通过LED的状态进行指示。 预备知识 C语言基本知识; STM32 GPIO工作方式; 中断的概念; 抢占优先级与响应优先级的概念。 实验设备及工具 硬件:PC机、STM32开发板、JLINK_V8仿真器; 软件:KEIL MDK4.12、JLINK_V8驱动。 实验原理及说明 板载按键原理图: 配套的STM32开发板配备4个按键,原理图如下图所示: 如图所示,KEY1 通过底板接口连接到STM32的PE11,KEY2连接到PE13、KEY3连接到PE15、KEY4连接到PB11;当没有按键按下时,由于上拉电阻的存在,端口状态为逻辑“1”,当按键按下时端口状态为逻辑“0”。因此,当按键按下时会产生一个下降沿,当按键断开时会产生一个上升沿。 EXTI寄存器描述 中断屏蔽寄存器EXTI_IMR 功能描述:用来屏蔽/开启来自IO口的中断。 事件屏蔽寄存器EXTI_EMR 功能描述:屏蔽/开启IO口的事件请求。 上升沿触发选择寄存器EXTI_RTSR 功能描述:禁止/允许IO口的上升沿触发。 下降沿触发选择寄存器EXTI_FTSR 功能描述:禁止/允许输入线的下降沿触发。 外部中断配置寄存器 1AFIO_EXTICR1 外部中断配置寄存器 2AFIO_EXTICR2 外部中断配置寄存器 3AFIO_EXTICR3 程序流程 设置系统时钟 初始化LED 配置按键1为输入模式 配置NVIC嵌套中断寄存器 配置外部中断寄存器 设置外部中断源 编写中断函数 实验步骤 拷贝“实验3按键检测”工程文件并保存在..\STM32工程文件目录下并命名为“实验4外部中断检测”(实际步骤参考上节实验); 新建EXIT.c、EXIT.h,并保存在“实验4外部中断检测”..\bsp目录下。 修改工程文件名称并打开工程文件 添加源文件到工程(相关操作参照实验1建立工程模板) 添加“EXIT.h”到“includes.h“文件 修改EXIT.c #includeincludes.h /*外部中断配置函数 KEY1--PE11*/ void EXIT_Config(void) { /*第一步:配置GPIO为浮空输入模式*/ GPIO_Config(); /*第二步:配置NVIC寄存器组*/ NVIC_config(); /*第三步:配置外部中断配置寄存器*/ Interrupt_Config(); } 从上面的一段代码中,我们 将配置外部中断按功能分为三个步骤: 首先,既然我们需要通过IO口来检测外部是否有中断发生,那么毫无疑问我们需要将对应的IO配置为输入模式,在这需要注意的是,如果外部IO有上拉电阻,那么我们只需要将其配置为浮空输入即可,如果没有上拉电阻,由于我们要检测的是下降沿中断,所以在没有中断触发的时候我们需要给他一个固定的高电平的状态以便按键按下的时候可以产生一个下降沿,故此时我们需要将其配置成上拉输入; 其次,在Cortex-m3的中断体系中有一个特点,那就是中断可以互相嵌套,所以就涉及到一个抢占优先级与响应优先级的概念,至于什么是抢占优先级,什么是响应优先级以及NVIC寄存器组由于篇幅有限在此不再赘述,感兴趣的同学可自行查阅资料; 最后,我们需要配置EXTI等相关寄存器来配置外部中断,至此中断初始化完毕。 void GPIO_Config(void) { /*第一步:使能时钟*/ RCC-APB2ENR|=16;//使能PORTE时钟 RCC-APB2ENR|=10;//使能AFIO时钟 /*第二步:设置外部中断引脚工作模式 设置PE11为输入模式; 注意如果有外部上拉电阻 则可以设置成浮空输入, 如果没有的话则必须设置 成上拉输入*/ GPIOE-CRH=0xFFFF0FFF; GPIOE-CRH|=0 } 对于GPIO的配置部分,上一节实验我们已经讲过,在此不再赘述。 void NVIC_config(void) { NVIC_InitTypeDef NVIC_InitStructure;/*声明嵌套中断结构体*/ /*中断分组*/ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); /*外部中断15_10 */ NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn; /*抢占优先级 1*/ NVIC_InitStructure.NVIC_IRQChannelPreempti

文档评论(0)

卖报的小行家 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档