外部中断的设置和一些寄存器的介绍.docxVIP

外部中断的设置和一些寄存器的介绍.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
初始化 IO 口为输入。 外部中断输入的 IO 口的状态,可以设置为上拉/下拉输入,也可以设置为浮空输入, 但浮空的时候外部一定要带上拉,或者下拉电阻。否则可能导致中断不停的触发。在干扰较大的地方,就算使用了上拉/下拉,也建议使用外部上拉/下拉电阻,这样可以一定程度防止外部干扰带来的影响。 ①使能 IO 口的时钟 ②清除原来的相应的设置 ③设置成上拉输入 0x80 ④把 GPIO_ODR 相应的位设置成 1 开启 IO 口复用时钟,设置 IO 口与中断线的映射关系。 STM32 的 IO 口与中断线的对应关系需要配置外部中断配置寄存器 EXTICR,这样我们要先开启复用时钟,然后配置 IO 口与中断线的对应关系。才能把外部中断与中断线连接起来。 ①使能复用时钟 RCC_APB1ENR 第 0 位 AFIOEN:辅助功能 IO 时钟使能 RCC-APB1ENR |= 10 ②设置外部中断配置寄存器(AFIO_EXTICR1) 总共有三个配置寄存器,分别对应着 15 个中段线。每个寄存器存放四个。如上图。在设置这些位时仍然 2 步: 首先:清除原来的设置。AFIO-EXTICR[0]=~(0x000F0); //清除中断线 0 的原来的设置 然后:设置映射到那个端口。AFIO-EXTICR[0]|=00;//设置引脚为 0000 也就是 A 口 扩展:事件控制寄存器(AFIO_EVCR) 扩展:事件控制寄存器(AFIO_EVCR) 位 7 EVOE:允许事件输出(Event output enable) 位 7 该位可由软件读写。当设置该位后, Cortex 的 EVENTOUT 将连接到由 PORT[2:0]和 PIN[3:0]选定的 I/O 口。 位 6:4PORT[2:0]:端口选择 000:选择 PA 100:选择 PE 位 3:0 PIN[3:0]:引脚选择(x=A…E) 001:选择 PB 010:选择 PC 011:选择 PD 0000:选择 0000:选择Px0 0101:选择 Px5 1010:选择Px10 1111:选择 Px15 0001:选择Px1 0010:选择Px2 0011:选择Px3 0100:选择Px4 0110: 选择 Px6 0111:选择 Px7 1000:选择 Px8 1001:选择 Px9 1011:选择Px11 1100:选择 Px12 1101:选择Px13 1110:选择 Px14 开启与该 IO 口相对的线上中断/事件,设置触发条件 我们要配置中断产生的条件,STM32 可以配置成上升沿触发,下降沿触发,或者任意电平变化触发,但是不能配置成高电平触发和低电平触发。这里根据自己的实际情况来配置, 同时要开启中断线上的中断。 这里需要注意的是:如果使用外部中断,并设置该中断的EMR、位的话,会引起软件仿真不能跳到中断,而硬件上是可以的。而不设置EMR,软件 仿真就可以进入中断服务函数,并且硬件上也是可以的。建议不要配置 EMR 位 ①配置中断屏蔽寄存器(EXTI_IMR) 的相应中断线设置成 1 被设置成 1 也就是开放来自线上的中断请求。 ② 设置触发方式。上升沿触发选择寄存器(EXTI_RTSR) 下降沿触发选择寄存器 (EXTI_FTSR) 直接在相应的触发方式写 1 就行了。 扩展:事件屏蔽寄存器(EXTI_EMR)使用如图上面中断屏蔽寄存器 软件中断事件寄存器(EXTI_SWIER) SWIERx: 线 x 上的软件中断 位 18:0 当该位为’0’时, 写’1’将设置 EXTI_PR 中相应的挂起位。如果在 EXTI_IMR 和 EXTI_EMR 中允许产生该中断, 则此时将产生一个中断。 注:通过清除EXTI_PR 的对应位(写入’1’),可以清除该位为’0’。挂起寄存器(EXTI_PR)PRx: 挂起位(Pending bit) 位 18:0 0:没有发生触发请求 1:发生了选择的触发请求 当在外部中断线上发生了选择的边沿事件,该位被置’1’。在该位中写入’1’可以清除它,也可以通过改变边沿检测的极性清除。 配置中断分组(NVIC),并使能中断 //设置NVIC//NVIC_PreemptionPriority:抢占优先级 //设置NVIC //NVIC_PreemptionPriority:抢占优先级 //NVIC_SubPriority :响应优先级 //NVIC_Channel :中断编号 //NVIC_Group :中断分组 0~4 //注意优先级不能超过设定的组的范围!否则会有意想不到的错误 //组划分: //组 0:0 位抢占优先级,4 位响应优先级 //组 1:1 位抢占优先级,3 位响应优先级 //组 2:2 位抢占优先级,2 位响

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

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

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档