OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5049|回复: 0

外部中断的解说

[复制链接]

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1635
金钱
1635
注册时间
2012-8-28
在线时间
71 小时
发表于 2013-4-12 10:19:18 | 显示全部楼层 |阅读模式
 EXTI是中断线。就像家里电灯的电线(有0~19根其中0~15对应0~15引脚,至于是PA的还是PB。。。PG的在AFIO_EXTICR[]里设置。 
16PVD。17RTC。18USB。19是以太网)。 
NVIC是中断号。就像家里电灯的灯泡(中断号从0~59以0的响应最高。比如0和1同时触发,会先运行0再运行1) 
#define EXTI0_IRQChannel             ((u8)0x06)  /* EXTI Line0 Interrupt */ 
#define EXTI1_IRQChannel             ((u8)0x07)  /* EXTI Line1 Interrupt */ 
#define EXTI2_IRQChannel             ((u8)0x08)  /* EXTI Line2 Interrupt */ 
#define EXTI3_IRQChannel             ((u8)0x09)  /* EXTI Line3 Interrupt */ 
#define EXTI4_IRQChannel             ((u8)0x0A)  /* EXTI Line4 Interrupt */ 
#define EXTI9_5_IRQChannel           ((u8)0x17)  /* External Line[9:5] Interrupts */ 
#define EXTI15_10_IRQChannel         ((u8)0x28)  /* External Line[15:10] Interrupts */ 
这里可以看到0~15引脚触发的中断线。但有些是共用的,0脚,1脚,2脚,3脚,4脚是独立的,5~9脚共用一中断号0x17;10~15脚共用一中断号0x28;比如说PE9脚和PA8脚配置中断后都是触发中断号0x17; 
用法如下: 
1宏定义引脚名字:#define    key   E8 
2GPIOE_CRL的第8脚配置下 
3GPIOE_ODR配置状态(上拉还是下拉,就是现在是高电平还是低电平) 
4void Ex_NVIC_Config(u8 GPIOx,u8 BITx,u8 TRIM)//端口,引脚号,边沿  
5void MY_NVIC_Init(u8 NVIC_抢占,u8 NVIC_子优,u8 NVIC_中断号,u8 NVIC_分组) //抢占优先级,子优先级,通道0~59,组号) 
这个1~5的步骤就是原子写的函数。 
我补充下,比如PA5,PB5,PC6,PE7,PB8,PC9都是触发的0x17这中断号(#define EXTI9_5_IRQChannel 因为5~9脚是共用一个中断号)当触发了0x17这中断号,那就要去判断下5~9引脚到底是哪一个脚被触发了。中断函数完了之后要写中断清除EXTI_PR=1右移对应位。




寄存器的流程:
1使能端口时钟,(比如PA,PB,PC,,,,,,,)
2GPIO_CRL或CRH    (配置输入输出)
3GPIO_ODR是   高电平还是低电平
4开复用时钟AFIO
5配置外部中断AFIO_EXTICR[]        (配置0~15引脚是PA,PB,PC还是。。。PG)
6EXTI_触发沿  (RTIR上升  还是    FTIR下降)   
7SCB_AIRCR    (设置分组  钥匙0x5FA0000&分组)
8NVIC_ISER[]   (开启对应的中断号)
9NVIC_IPR[]    (该中断号的抢占,子优先级的设置)

QQ750273008有好的资料记得发给我哦。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-21 16:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表