ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
27 апреля
870606 Топик полностью
evgeniy1294 (12.09.2018 11:03 - 11:12, просмотров: 106) ответил IBAH на STM32 как узнать, что УАРТ занят передачей, т.е. в состоянии от старта до стопа . Все регистры просмотрел, не нашел никакого подходящего флага. Неужели самому писать?
Три способа навскидку: Хитрый, работает только при использовании DMA: inline bool isStarted(DMA_Stream_TypeDef* DMA) { return (bool)(DMA->CR & DMA_SxCR_EN); } if (mcu::dma::isStarted(TDMA)){делаем что-нибудь} Т.е флаги есть, но они запрятаны в DMA. Разработчики МК посчитали, что этого достаточно. Либо ещё один вариант, гораздо проще: if (!(USART->SR & USART_SR_TXE)) return error_t::busy; Ещё можно по окончании передачи вырубать сам передатчик и использовать соответствующий бит как флаг. U->CR1 &= ~USART_CR1_TE;