STM32 外部中断
- 中断类型个性设置
- NVIC设置(优先组,激活中断函数)
- GPIO设置:GPIO_Init(GPIOx,GPIO_InitTypeDef)
- 时钟:GPIO|AFIO
- 在使用引脚的重映射功能和外部中断时需要使用AFIO时钟
- 输入模式(无需配置速度)
- 时钟:GPIO|AFIO
- 外部中断设置:EXTI_Init(&EXTI_InitTypeDef);
- 选择线路:EXTI_Line=EXTI_Line0-16
- !如GPIOA.1和GPIOB.1同一时刻只能工作一个
- 设置模式:如EXTI_Mode=EXTI_Mode_Interrupt
- 事件:
- 中断:=事件+跳转一般选这个
- 选择触发:EXTI_Trigger
- 上升沿
- 下降沿
- 上升沿+下降沿
- 使能:EXTI_LineCmd
- ENABLE
- 选择线路:EXTI_Line=EXTI_Line0-16
- 中断优先组设置:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_x);
- 中断管理器设置:NVIC_Init(&NVIC_InitTypeDef)
- NVIC_IRQChannel:每一种中断对应一个通道,指向中断函数
- 各个线路对应的通道,
- NVIC_IRQChannel:每一种中断对应一个通道,指向中断函数
-
- NVIC_IRQChannelPreemptionPriority/NVIC_IRQChannelSubPriority:抢占优先级/响应优先级
- 数值越小,越高级
- NVIC_IRQChannelCmd
- ENABLE
- NVIC_IRQChannelPreemptionPriority/NVIC_IRQChannelSubPriority:抢占优先级/响应优先级
- 中断函数:
- 从startup_stm32f10x_md.s中找出中断函数(stm32f10x_it.c )
- 判断中断类型(状态):
- if(EXTI_GetITStatus(EXTI_Line0-15)==SET)
- 清除中断:[不会自动清除]
- EXTI_ClearITPendingBit(EXTI_Line0-15);