Добавим фунцию получения символа, в которой мы будем осуществлять прием символа и запускать его обработку:
void get_char(void) {
inter_menu(usart_receiveb(USART1));
/* put intro char */
usart_sendb(USART1, '#');
}
Также необходимо в коде функции work() активировать прерывания по приему байта для УСАПП №1:
/* usart1 enable interupt if receive register not empty */
USART1->CR1 |= USART_CR1_RXNEIE;
Не забудем включить прерывание для этого блока:
/* enable interrupt */
NVIC_EnableIRQ(USART1_IRQn);
И выведем приглашение, т.к. прерывание сработает после приема символа:
/* put intro char */
usart_sendb(USART1, '#');