Начал изучать UART STM32 на отладочной плате STM2F446RE. Включил UART2, по умолчанию включились порты PA2,PA3. Включил прерывания, подключил переходник UART/USB CH340, перед этим установив драйвера. Добавил простенький код в stm32f4xx_it.c: в нём объявил две переменные, когда принимается 8 бит buffrec в ответ должен отправляться "Hello world!".
/* USER CODE BEGIN Includes */
uint8_t buffrec[8];
uint8_t TX_data[]="Hello world!\n\r";
/* USER CODE END Includes */
void USART2_IRQHandler(void)
{
/* USER CODE BEGIN USART2_IRQn 0 */
/* USER CODE END USART2_IRQn 0 */
HAL_UART_IRQHandler(&huart2);
/* USER CODE BEGIN USART2_IRQn 1 */
HAL_UART_Transmit(&huart2,TX_data,14,0xFFFF);
HAL_UART_Receive_IT(&huart2, buffrec,8);
/* USER CODE END USART2_IRQn 1 */
}
В main.c объявил приём и передачу сигнала UART:
/* USER CODE BEGIN 2 */
__HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE);
__HAL_UART_ENABLE_IT(&huart2, UART_IT_TC);
/* USER CODE END 2 */
В компиляции нет никаких ошибок и предупреждений. Приём и передачу мониторю через Advanced Serial Port Terminal 6. В итоге при попытке отправить комбинацию "12345" записываются только первые 2 числа. При этом происходит отправка 2 сообщений "Hello world!" сразу.
При этом при записи двух бит, они записываются в пустые биты, а затем перезаписывают их.
Кроме того, результат приходит на COM3 (порт подключения отладочной платы), а не на COM4 (порт подключения CH340), к которым подключены пины UART2 PA2, PA3.
Из-за чего могут возникать эти проблемы?