Question
STM32F04xx USART Idle line detection
Posted on March 09, 2018 at 13:19
I have been trying to use the USART idle line detection flag to detect when an incoming transmission stream has ended.
if
((USART1->
ISR&
USART_ISR_RXNE)!=
RESET) {if
((1+
RX_BUFFER_POS)<
RX_BUFFER_SIZE) { RX_Buffer[1
+
RX_BUFFER_POS++
]=
USART1->
RDR; } }if
(__HAL_UART_GET_FLAG(&
huart1,UART_FLAG_IDLE)) { can_read=
1
; __HAL_UART_CLEAR_FLAG(&
huart1, UART_FLAG_IDLE); }I used this code to set a flag, can_read which is checked in the main loop. If the flag is true, then I parse the data.
The problem is that the IDLE flag is being set after each character received, not after the end of the string.
Please can I have some clarification on when the IDLE interrupt is triggered.
Many thanks.
#hal-usart #usart-idle #usart-pins