-
- Если массив на передачу готовый, то удобно через DMA отправлять, тогда вообще прерывание передачи не нужно. - Andreas(21.04.2024 22:51)
- Нужен. И на прием и на передачу. Риторический вопрос: как поведет
себя HAL_UART_Transmit_IT() если передача уже идет? На прием,
кстати, кольцевой буфер красиво делается через ДМА. На передачу
тоже можно через ДМА но не очень красиво, при передаче строки два
прерывания таки случаются. - IBAH(21.04.2024 21:32)
- Ага, спасибо. Про буфер согласен полностью. Спасибо всем, прояснили
в голове туман. А что за 2 прерывания при передаче строки? - Mty1(21.04.2024 21:36)
- Контроллер ДМА можно презагружать только в прерывании "буфер ДМА закончился". Соответственно два вызова прерывания, на первый символ и на последний. Длинна строки контроллеру ДМА не известна на момент записи первого символа. Что на строку, что на один символ будет два прерывания, отличии от буфера по прерыванию, там на каждый символ по прерыванию. IBAH(1754 знак., 21.04.2024 21:51 - 22:37)
- Ага, спасибо. Про буфер согласен полностью. Спасибо всем, прояснили
в голове туман. А что за 2 прерывания при передаче строки? - Mty1(21.04.2024 21:36)
- я лично чаще всего для UART использую HAL. Уж для передачи - однозначно. Чего там бояться? У меня что для обмена с колонками, что для GSM-модема всегда HAL_UART_Transmit_IT(). Прием по разному. - Лaгyнoв(21.04.2024 21:25)
- Кольцевой буфер всегда оправдан и никак не связан с абстракциями библиотек пользователя (HAL) конкретного микроконтроллера. Это метод расположения и хранения данных, особенно непредсказуемой "хаотики" из внешних сред в прерывании например. Предполагающий планомерную вычитку по возможности процесса. - bnb62(21.04.2024 21:24)