Создадим переменную где мы будем хранить принятый байт:
char byte = '\0';Проинициализируем порт к которому подключен УСАПП
/* enable usart port*/ RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN;А также сам УСАПП1:
/* enable usart1 */ RCC->APB2ENR |= RCC_APB2ENR_USART1EN;Зададим режим для линий порта - альтернативные функции:
/* setup usart1 pins to af mode */ GPIOB->MODER |= GPIO_MODER_MODER6_1 | GPIO_MODER_MODER7_1;Выберем тип периферии для альтернативных функций линий порта в/в:
/* select af block usart1..3(af7 function) to usart pins */ GPIOB->AFR[0] |= (GPIO_AF7_USART1_3 << GPIO_AFP6) | (GPIO_AF7_USART1_3 << GPIO_AFP7);Настроим частоту приема/передачи и активизируем линиии приема/передачи, сам УСАПП:
/* usart1 setup baudrate */ /** 115200 baud 16MHz/16/115200 = 8.68 */ USART1->BRR = (8 << 4) + 5; /* usart1 enable block and enable tx,rx lines */ USART1->CR1 |= USART_CR1_TE; USART1->CR1 |= USART_CR1_RE; USART1->CR1 |= USART_CR1_UE;В бесконечном цикле происходит весь процесс:
/* infinity loop */ while (1) { /* put intro char */ usart_sendb(USART1, '#');Прием байта:
byte = usart_receiveb(USART1); usart_sendb(USART1, '>');Его передача:
usart_sendb(USART1, byte); usart_sendb(USART1, '\r'); usart_sendb(USART1, '\n'); }