ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
1207612 Топик полностью
LightElf (11.05.2022 21:04, просмотров: 310) ответил IBAH на У всех прошу прощения. Перебздел на рефакторинге. Все там нормально, потокобезопасно и подтверждено многолетними тестами. Хотя вот это мне не нравится (TxHead==TxTail) && (((USART1->ISR)&USART_ISR_TXE)!=0), какая то стрёмная проверка
Прошу пардону, но зачем же через жопу так? Есть же прекрасное прерывание по Transmit Data Register Empty? 

В вашей PutFifo просто кладете символ в TxFifo и взводите бит TXEIE. Если передатчик пуст - сразу же произойдет прерывание. Если не пуст - то ничего не изменится.

Обработчик прерывания смотрит, если ли данные в FIFO, если есть - отсылает следующий байт. Если данных нет - то сбрасывает бит TXEIE. Фсе!

Не надо делать мне как лучше, оставьте мне как хорошо