编辑
2023-07-28
单片机杂谈
00
请注意,本文编写于 544 天前,最后修改于 542 天前,其中某些信息可能已经过时。

目录

为什么需要中断?
定义中断的过程
详细配置
信号如何消抖?

为什么需要中断?

循环中检查设备状态有可能因为未能及时捕捉信号导致丢失,所以需要使用中断的方式来让主程序暂时中断,及时接收信号。

定义中断的过程

  1. 平常一样外设连接的RCC时钟使能
  2. AFIO开启时钟使能(EXTI默认开启,NVIC为核心控制也默认开启)
  3. 外设中断引脚设置GPIO_EXTILineConfig
  4. EXTI_Init初始化EXTI
  5. NVIC_Init初始化NVIC

详细配置

  • GPIO_EXTILineConfig GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource14);AFIO选中GPIOB的PIN14通过
  • EXTI_InitTypeDef 初始化EXTI的结构体定义,成员有EXTI_Line:
    • EXTI_Line 指定中断事件线
    • EXTI_LineCmd 使能
    • EXTI_Mode 产生中断EXIT_Mode_Iterrupt,或者产生事件EXTI_Mode_Event
    • EXTI_Trigger 中断是在上升沿还是下降沿还是双延触发
  • NVIC_InitTypeDef
    • NVIC_IRQChannel 中断源
    • NVIC_IRQChannelPreemptionPriority 抢占优先级
    • NVIC_IRQChannelSubPriority 子优先级
    • NVIC_IRQChannelCmd 中断使能或者失能

信号如何消抖?

在发生中断事件的时候,可以再读取判断一次信号状态