STM32的串口开启中断,在串口悬空(即不接外设)的情况下,CPU会不断的进串口中断服务函数
并且接收到的数据为0,当你把外设接上,一切OK。
void USART2_IRQHandler(void) { INT8U tmp; /* OK */ if(USART_GetITStatus(USART2, USART_IT_RXNE) == SET){ USART_ClearITPendingBit(USART2, USART_IT_RXNE); tmp = USART_ReceiveData(USART2); } }其实原因很简单,在初始化串口是输入引脚设置成了悬空输入-GPIO_Mode_IN_FLOATING。
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; GPIO_Init(GPIOA, &GPIO_InitStructure);
原文地址:http://blog.csdn.net/u013686019/article/details/46519689