您的位置:首页 > 其它

STM32外部中断

2014-04-16 19:45 232 查看
                 文章转自: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、编写中断服务函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stm32