Перейти к содержанию
    

Передача HAL_UART_Transmit_DMA() - как узнать когда кончится передача?

Приветствую!

Передаю данные в UART при помощи HAL_UART_Transmit_DMA() - все ок, но нужно понять когда закончится передача?

while ( HAL_UART_GetState( &huart1 ) == HAL_UART_STATE_BUSY){}
или
while ( HAL_UART_GetState( &huart1 ) == HAL_UART_STATE_BUSY_TX){}

Почему то не работает.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, Mty said:

Почему то не работает.

Тут вопрос скорее не в том, почему "это" не работает, а зачем Вам DMA, если потом Вы будете ждать все в while{}? Njlf e; Тогда уж можно просто блокирующей простой передачей, и ничего ждать не надо.

Правильно конечно как уже подсказали - через прерывание в конце передачи по ПДП. Можно там какой-нибудь флажок сбрасывать (а взводить его перед запуском HAL_UART_Transmit_DMA), а его уже поллить где надо.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2024-05-06220449.jpg.79351e279522c66c4361d8a836b30387.jpg

Тут показано, как это работает. Включаем генерацию DMA-запросов на передачу и прерывание по TCIF (выполнение передачи) у DMA, запускаем TX UART, DMA передает заданное число байтов в модуль UART, срабатывает прерывание в DMA, в этом прерывании включаем TCIE в UARTe (можно и сразу при запуске), и ожидаем его. Это прерывание будет означать завершение передачи заданного числа байтов по UART.  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...