STM32 外部中断

  • 中断类型个性设置
  • NVIC设置(优先组,激活中断函数)

  • GPIO设置:GPIO_Init(GPIOx,GPIO_InitTypeDef)
    • 时钟:GPIO|AFIO
      • 在使用引脚的重映射功能和外部中断时需要使用AFIO时钟
    • 输入模式(无需配置速度)
  • 外部中断设置:EXTI_Init(&EXTI_InitTypeDef);
    • 选择线路:EXTI_Line=EXTI_Line0-16
      • !如GPIOA.1和GPIOB.1同一时刻只能工作一个
    • 设置模式:如EXTI_Mode=EXTI_Mode_Interrupt
      • 事件:
      • 中断:=事件+跳转一般选这个
    • 选择触发:EXTI_Trigger
      • 上升沿
      • 下降沿
      • 上升沿+下降沿
    • 使能:EXTI_LineCmd
      • ENABLE
  • 中断优先组设置:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_x);

        

  • 中断管理器设置:NVIC_Init(&NVIC_InitTypeDef)
    • NVIC_IRQChannel:每一种中断对应一个通道,指向中断函数
      • 各个线路对应的通道

          

    • NVIC_IRQChannelPreemptionPriority/NVIC_IRQChannelSubPriority:抢占优先级/响应优先级
      • 数值越小,越高级
    • NVIC_IRQChannelCmd
      •   ENABLE
  • 中断函数:
    • 从startup_stm32f10x_md.s中找出中断函数(stm32f10x_it.c )
    • 判断中断类型(状态):
      • if(EXTI_GetITStatus(EXTI_Line0-15)==SET)
    • 清除中断:[不会自动清除]
      • EXTI_ClearITPendingBit(EXTI_Line0-15);
原文地址:https://www.cnblogs.com/2cats/p/3578558.html