Добавим фунцию получения символа, в которой мы будем осуществлять прием символа и запускать его обработку:
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, '#');