Проблема с инициализацией UART через CMSIS
Господа, может кто сможет помочь? Не заводится USART через CMSIS. Проверял, параметрируя USART через CubeMX, оставив тот-же код в главном цикле (while(1)) — всё работает. Сделал вывод, что я не верно инициализирую USART… Работаю с платой STM32F411CEU6 (Black Pill). Вот код из раздела SysInit: /* USER CODE BEGIN SysInit */
/* Инициализация UART1 */
RCC->APB2ENR |= RCC_APB2ENR_USART1EN; // включаем тактирование UART1
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; // разрешаем тактирование порта GPIOA
/* Настройка вывода PA9 (TX1) на режим альтернативной функции с активным выходом */
GPIOA->MODER &= (~GPIO_MODER_MODE9_0); // сброс младшего бита MODER9 (Alternate function mode)
GPIOA->MODER |= GPIO_MODER_MODE9_1; // установка старшего бита MODER9 (Alternate function mode)
GPIOA->OTYPER &= (~GPIO_OTYPER_OT_9); // сброс регистра OTYPER9 (режим «Output push-pull)
GPIOA->OSPEEDR |= GPIO_OSPEEDR_OSPEED9; // установка регистра OSPEEDR9 в режим «High speed»
GPIOA->PUPDR &= (~GPIO_PUPDR_PUPD9); // установка регистра PUPDR9 в режим «No pull-up, pull-down»
/* Настройка вывода PA10 (RX1) на режим входа с подтягивающим резистором */
GPIOA->MODER &= (~GPIO_MODER_MODE10); // сброс битов MODER10 (Input)
GPIOA->PUPDR &= (~GPIO_PUPDR_PUPD10_1); // сброс старшего бита PUPDR10 (Pull-up)
GPIOA->PUPDR |= GPIO_PUPDR_PUPD10_0; // установка младшего бита PUPDR10 (Pull-up)
/* Конфигурация UART1 */
USART1->CR1 = USART_CR1_UE; // разрешаем USART1, сбрасываем остальные биты
USART1->BRR = 7500; // скорость 9600 бод
USART1->CR1 |= (USART_CR1_TE | USART_CR1_RE); // разрешаем приёмник и передатчик
USART1->CR2 = 0;
USART1->CR3 = 0;
/* USER CODE END SysInit */
Может кто-нибудь увидит, где я оплошал?