[uquote="jcxz",url="/forum/viewtopic.php?p=4758652#p4758652"]Код кривой.[/uquote]
неоч понятно, чем кривой код?
Не то что бы я большой спец по сям, но конкретно с этими ++ и -- уже вроде б разобрался... Оно эквивалентно:
Вообще, конечн, я оч не приветствую совмещение ++/-- с другими операндами. Именно из-за этой путаницы, когда сначала выполняется действие ++/--, а потом возвращается результат, а когда наоборот - возвращается результат, предшествующий этим операндам. Оно конечно там условно логично, но читаемость кода сильно лагает. Экономия строки тут на пользу не идёт.
Тут настройка прерываний выполняется после передачи крайнего байта. И типа есть вероятность ну успеть отключить прерывание до его следующего срабатывания. Но полагаю, что это возможно только на очень низких частотах проца и на высоких частотах UART, что кажется редкодостижимо. Но в таком виде имхо несколько привычнее читается, чем конструкции с проверкой предпоследнего байта.
Добавлено after 1 minute 10 seconds:
[uquote="linux_rulezz",url="/forum/viewtopic.php?p=4758813#p4758813"]Не крайнего, а последнего! Не нужно людей в заблуждение вводить![/uquote]
я авиатор, я так вижу
Код: Выделить всё
USART1->DR = *tx_buffer++;
if (--tx_size == 0) {
USART1->CR1 &= ~USART1_TXEIE; // Disable TXE interrupt
USART1->CR1 |= USART1_TCIE; // Enable TC interrupt
}
неоч понятно, чем кривой код?
Не то что бы я большой спец по сям, но конкретно с этими ++ и -- уже вроде б разобрался... Оно эквивалентно:
Код: Выделить всё
USART1->DR = *tx_buffer;
tx_buffer++;
tx_size--;
if (tx_size == 0) {
USART1->CR1 &= ~USART1_TXEIE; // Disable TXE interrupt
USART1->CR1 |= USART1_TCIE; // Enable TC interrupt
}Тут настройка прерываний выполняется после передачи крайнего байта. И типа есть вероятность ну успеть отключить прерывание до его следующего срабатывания. Но полагаю, что это возможно только на очень низких частотах проца и на высоких частотах UART, что кажется редкодостижимо. Но в таком виде имхо несколько привычнее читается, чем конструкции с проверкой предпоследнего байта.
Добавлено after 1 minute 10 seconds:
[uquote="linux_rulezz",url="/forum/viewtopic.php?p=4758813#p4758813"]Не крайнего, а последнего! Не нужно людей в заблуждение вводить![/uquote]
я авиатор, я так вижу
