- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)