- 中断
- 中断配置
- 使能中断请求
- NVIC→IPRx
- 配置优先级分组
- 优先比较主优先级
- NVIC_PriorityGroupConfig配置SCB
- 优先比较主优先级
- 配置NVIC
- NVICInitTypeDef_ NVIC-Init
- 编写中断服务函数
- 使能中断请求
- 串口中断
- 使能串口、GPIO的时钟
- 引脚复用映射
- GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);(复用PA9的串口1功能)
- 配置GPIO,GPIO_Init
- 配置串口
- USART_InitTypeDef
- 中断配置(接收中断,中断优先级)
- NVIC_Init(&IT_USART1_InitStructrue);
- 使能串口
- USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
- 编写中断处理函数
- USART1_IRQHandler
- 编写收发数据处理函数
- USARE1_detection
- 外部中断
- GPIO→EXTI→NVIC
- 编程要点如下
- 初始化要连接到EXTI的GPIO
- GPIO的RCC
- ,GPIO_Init
- 初始化EXTI(用于产生中断)
- RCC_APB2PeriphClockCmd
- 映射函数GPIO_EXTILineConfig
- EXTI_Init
- 初始化NVIC(用于处理中断(那一条中断线的优先级))
- NVIC_PriorityGroupCpnFig()
- NVIC_Init
- 编写中断服务函数
- main函数
- 初始化要连接到EXTI的GPIO
- 编程要点如下
- 通过AFIO_EXTICRx配置GPIO线上的外部中断,先使能AFIO时钟
- 初始化EXTI
- EXTI_InitTypeDef
- EXTI_Line:用于产生中断线
- 确定用哪一条(后面nvic的IRQChannel)
- EXTIMode:EXTI模式(中断/事件)
- EXTI?Trigger:触发(上升下降沿)
- EXTI_LineCmd:使能或失能
- EXTI_Line:用于产生中断线
- EXTI_InitTypeDef
- 将GPIO和中断线连接
- EXTILineConfig(GPIO_PortSource GPIO_PinSource)
- GPIO→EXTI→NVIC
- 配置中断服务函数
- 判断中断标志位if(EXTI_GetITStatus_(EXTI_Line0)!=RESET)//如果产生了中断会置1
- 中断函数之后要清除中断位
- EXTI_ClearITPendingBit(EXTI_Linex)
- 中断配置
要弄外部中断的时候,初始化GPIO的时候,EXTI_line后面的数字是跟中断源引脚的数字一一对应的