Как управлять непрерывной передачей и приемом UART на STM32? - PullRequest
0 голосов
/ 20 октября 2019

Я боролся с последовательной связью через UART в STM32. Я использую TrueStudio и хочу общаться с ПК, который будет отправлять 7 байтов каждые 30 мс и читать 7 байтов каждые 10 мс.

Я попытался получить байты в STM32 в режиме прерывания. Каждый раз, когда RX не был пустым, код должен идти к USART_Handler, а затем я использовал HAL_UART_Receive, чтобы получить семь байтов. Я знаю, что это не выглядит хорошо, но это сработало ...

Затем, чтобы передавать байты на ПК, я использовал опрос каждые 10 мс (называемый HAL_UART_Transmit внутри прерывания по таймеру), и это также сработало. Проблема в том, что, когда я пытаюсь сделать и передачу и прием вместе, происходит потеря нескольких байтов. Я не уверен, как, но я полагаю, что прерывание приема портит передачу. Кто-нибудь знает, что может происходить, и есть предположения о том, как с этим бороться? Спасибо уже.

...