Solved
STM32F407 Discovery Board USART2 Read String
Hi I am using STM32F407 discovery board. Trying to receive string with USART2 interrupt in this video.
Here is my usart2 receive and interrupt codes:
uint8_t receiveUart(void)
{
uint8_t rxData = 0;
// IF THERE IS DATA IN THE RECEIVE DATA REGISTER
// USART_ISR_RXNE EXPANDS TO (1 << 5)
if(USART2->SR & USART_SR_RXNE)
{
// READ DATA FROM THE REGISTER
rxData = USART2->DR;
}
return rxData;
}void USART2_IRQHandler(void)
{
USART_2_msg[uart_2_mgr[0]] = receiveUart();
printf("mgr0: %d\n", uart_2_mgr[0]);
printf("char: %c\n", USART_2_msg[uart_2_mgr[0]]);
if(uart_2_mgr[3])
{
if(USART_2_msg[uart_2_mgr[0]] == uart_2_mgr[4])
{
uart_2_mgr[0] = 0;
uart_2_mgr[1] = 1;
}
else
{
uart_2_mgr[0]++;
}
}
else
{
// Timer strategy
uart_2_mgr[0]++;
uart_2_mgr[6] = uart_2_mgr[5];
//systick_int_start();
}
}
printf("message: %s\n", USART_2_msg);
}When I send a character by serial terminal, It is able to receive 1 character and store it to the buffer. If I send a string, it only stores the first character. I want to write the code without HAL libs. How can I receive the whole string?
Thanks in advance.
