Я пытаюсь реализовать uart в режиме прерывания, но что-то go явно не так. Вот моя проблема: я хочу отправить несколько строк как можно скорее (пример: хочу отправить 10 раз строку «test123»), но по какой-то причине это невозможно (я делаю некоторую ошибку, но не могу понять, где это ошибка). Я использую STM32CubeIDE, mcu - это stm32f407vgt6. После первой успешной передачи код попадает в Error_Handler (), что недопустимо. Когда я использую задержки между каждой передачей, вся строка будет успешно передана, но почему это можно сделать таким образом. Вот код
uint8_t TxData[] = "test123\n";
bool flagTxCmpltUsart = true;
for(i = 0; i < 10; i++){`
if(HAL_UART_Transmit_IT(&huart3, TxData, strlen(TxData)) != HAL_OK)
{
Error_Handler();
}
Wait_Unit_Uart_Tx_Is_Complete();
Reset_Uart_Tx_Complete_Flag();}
void Reset_Uart_Tx_Complete_Flag(void)
{
flagTxCmpltUsart = false;
}
void Wait_Unit_Uart_Tx_Is_Complete(void)
{
while(!flagTxCmpltUsart){}
}
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART3)
{
flagTxCmpltUsart = true;
}
}