Skip to content

Instantly share code, notes, and snippets.

@futurelink
Last active April 6, 2020 13:34
Show Gist options
  • Select an option

  • Save futurelink/0230bf0f93fc66368348da01f1ca1f82 to your computer and use it in GitHub Desktop.

Select an option

Save futurelink/0230bf0f93fc66368348da01f1ca1f82 to your computer and use it in GitHub Desktop.
Конфигурация USART1 для STM32F051C8 на стандартных пинах PA9 и PA10 в синхронном режиме без HAL, SPL и прочего
/**
* Конфигурация USART1 для STM32F051C8 на стандартных пинах
* PA9 и PA10 в синхронном режиме без HAL, SPL и прочего..
*/
void USART1_Config() {
RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
/* TX это выход с альтер-функцией (GPIOB 6 pin) */
GPIOA->MODER &= ~GPIO_MODER_MODER9; // Сброс значения для PA9
GPIOA->MODER |= GPIO_MODER_MODER9_1; // Установка режима AF
GPIOA->OTYPER &= ~GPIO_OTYPER_OT_9; // Push-Pull
GPIOA->OSPEEDR |= GPIO_OSPEEDR_OSPEEDR9; // Максимальная скорость
GPIOA->PUPDR |= (GPIO_PUPDR_PUPDR9_0); // Pull-up
GPIOA->AFR[1] |= 0x00000010; // PA9 устанавливаем AF1
/* RX это вход (GPIOA 10 pin) */
GPIOA->MODER &= ~GPIO_MODER_MODER10; // Сброс значения для PA10
GPIOA->MODER |= GPIO_MODER_MODER10_1; // Установка режима AF
GPIOA->OTYPER &= ~GPIO_OTYPER_OT_10; // Не Push-pull
GPIOA->OSPEEDR |= GPIO_OSPEEDR_OSPEEDR10; // Максимальная скорость
GPIOA->PUPDR &= ~GPIO_PUPDR_PUPDR10; // Без pull-up или pull-down
GPIOA->AFR[1] |= 0x00000100; // PA10 устанавливаем AF1
USART1->BRR = 625; // 115200 на 72МГц формула (72000000+4800)/115200
USART1->CR1 |=
USART_CR1_UE | // USART1 включаем
USART_CR1_TE | // Включаем передачу
USART_CR1_RE; // Включаем прием
USART1->CR1 |= USART_CR1_RXNEIE; // Включаем прерывание по не пустому буферу приема
NVIC_EnableIRQ (USART1_IRQn); // Разрешаем прерывание по USART1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment