在使用串口接受字符串時,可以使用空閑中斷(IDLEIE置1,即可使能空閑中斷),這樣在接收完一個字符串,進入空閑狀態時(IDLE置1)便會激發一個空閑中斷。在中斷處理函數,我們可以解析這個字符串。
需要注意的是,IDLE標志位需要軟件清零,否則由於會不斷進入中斷,而使正常程序無法運行。當再次收到數據時(即RXNE再次置1),等到空閑便會重新進入中斷。
在STM32F4中,IDLE標志位清零的過程是:先讀SR,再讀DR寄存器。
而在STM32L0中, idle標志清除的過程是:對ICR寄存器的IDLECF位寫1
切記使用正確的方式清零IDLE標志位,不同系列的清零方式有可能不同!在移植時需要注意,我將F4的程序移植到L0上時,忽略了這個問題找了很久才找到問題根源。