stm32---外部中断

一、EXTI       

 STM32F10x外部中断/事件控制器(EXTI)包含多达20个用于产生事件/中断请求的边沿检测器。EXTI的每根输入线都可单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或双边沿触发),还可独立的被屏蔽。总结一句话就是:STM32F10x外部中断/事件控制器(EXTI)一共有20个通道,其中16个通道映射到了GPIO口上。

        在stm32中文参考手册中我们可以找到如下图:

 框图:

 图解:从输入线开始,进入到边沿检测电路,边沿检测电路中可以设置为检测上升沿、下降沿或者双边沿触发,假设是上升沿触发,此时会经过一个或门(或门特点:有1则1),经过或门后可以通过一个与门,然后直接经过脉冲发生器产生事件,或者经过请求挂起寄存器,如果此时已经有一个中断存在,则较低优先级的中断会被挂起,较高优先级的中断会经过与门至NVIC中断控制器。

二、外部中断配置步骤

        要使用外部中断我们就需要先配置它,通常经过这几步:

(1)使能IO口时钟,配置IO口模式为输入

(2)开启AFIO时钟,设置IO口与中断线的映射关系,

RCC_APB2PeriphClockCmd(RCC_APB2periph_AFIO,ENABLE);

GPIO_EXTILineConfig();

(3)配置中断分组(NVIC),使能中断

(4)初始化EXTI,选择触发方式

void EXTI_Init();

    EXTI_InitStruct.EXTI_Line //中断/事件如PA0我们会映射到EXTI0
    EXTI_InitStruct.EXTI_Mode //EXTI 模式,有两种,一个是中断,一个是事件
    EXTI_InitStruct.EXTI_Trigger //EXTI触发方式,如:上升沿触发,下降沿触发,双边沿触发
    EXTI_InitStruct.EXTI_LineCmd //中断使能
    EXTI_Init(&EXTI_InitStruct);

(5)编写中断服务函数

其中5-9是共用一个函数 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钜锋王老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值