ПС. Собственно, на прерываниях тоже вполне устроит. Но пока не получается настроить. Код следующий:
Код: Выделить всё
//--- Конфиг USART1 --------------------------------------------------------------------------------------------------------
USART1->BRR = 0x88C;
USART1->CR1 = USART_CR1_UE | USART_CR1_TE | USART_CR1_RE | USART_CR1_RXNEIE | USART_CR1_TCIE;
NVIC_SetPriority (USART1_IRQn, 2);
NVIC_EnableIRQ(USART1_IRQn);
//-------------------------------------------------------------------------------------------------------------------------------
void put_char_rs232(uint8_t data){
while(!(USART1->SR & USART_SR_TC));
USART1->DR = data;
}
void USART1_IRQHandler(){
if (USART1->SR & USART_SR_RXNE){
USART1->SR&=~USART_SR_RXNE;
uart_data = USART1->DR;
}
if(USART1->SR & USART_SR_TC){
USART1->SR&=~USART_SR_TC;
if(UartAnswers--) USART1->DR = 'S';
}
}
Код: Выделить всё
UartAnswers = 2;
put_char_rs232('B');


