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_Mode = GPIO_Mode_IPD;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Init(GPIOA, &GPIO_InitStructure);
上一篇:stm32不斷的進入中斷形成死循環
下一篇:串口1中斷服務函數的解析
推薦閱讀
史海拾趣