STM32外部中断

                 文章转自:http://blog.sina.com.cn/s/blog_643e988c0100yhkj.html


STM32外部中断包括硬件中断、事件中断和软件中断。

 

总共有19个外部事件/中断要求的边缘检测器,各个事件之间相互独立;


每一个IO口都可以作为外部中断源,具有相同数值编号的IO口被分配为同一组,共用一条中断请求线

如图:


    在NVIC定义过程中,EXTI0、EXTI1、EXTI2、EXTI3、EXTI4各自占用一个中断向量号,EXTI5~9一个中断向量号,EXTI10~15一个中断向量号。
   PA1-PE1共用一段中断服务程序;
   PA2-PE2共用一个中断向量号,对应同一个中断服务函数;
   而EXTI5~9中的25个IO口和EXTI10~15中的25个IO口共用一段中断复位程序。
   这就意味着对于内核来说,它自身能够区分PA1、PA2的中断,却不能区分PA1和PB1产生的中断;使用时必须加以区分。
 
寄存器:1、外部中断配置寄存器    AFIO_EXTxCR1------->用于选择输入中断源  Pin 0..3
                                 AFIO_EXTxCR2------->用于选择输入中断源  Pin 0..7
                                 AFIO_EXTxCR2------->用于选择输入中断源  Pin 8..11
                                 AFIO_EXTxCR2------->用于选择输入中断源  Pin 12..15
                                 (说明:5个端口PORTA..E,每个端口各有16位可供选择)
        2、中断屏蔽寄存器        EXTI_IMR----------->屏蔽线上的中断请求         共19路
        3、事件屏蔽寄存器        EXTI_EMR----------->屏蔽线上的事件             共19路
        4、上升沿触发选择寄存器  EXTI_RTSR---------->设置相应线为上升沿触发       19位
        5、下降沿触发选择寄存器  EXTI_FTSR---------->设置相应线为上升沿触发       19位
        6、挂起寄存器            EXTI_PR------------>中断线上发生了选择的边沿事件时置1   19位
        7、软件中断事件寄存器    EXTI_SWIER--------->写该位可以将EXTI_PR中相应的位值高,如果
           EXTI_IMR或EXTI_EMR使能,则可以产生相应的中断
 
配置流程:中断在使用前必须对中断线进行配置并激活
       1、配置相应的IO口为输入,浮空输入时一定要加上拉或者是下拉
       2、开启IO口复用时钟,设置IO与中断线的映射关系---->AFIO_EXTxCR1
       3、设置相应中断触发条件---------->EXTI_IMR、EXTI_RTSR、EXTI_FTSR
       4、在NVIC中开启并使能中断,对中断分组进行配置
       5、编写中断服务函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值