Пробую USART2.
Такая же картина: заходит в обработчик прерывания, при этом никаких флагов не выставлено. И разрешено одно прерывание RXNEIE.
Кто генерирует прерывание? Как узнать?
Код:
|
void STM32_UART_USART2_Init(void)
{
//Настройка тактирования
RCC-›AHB1ENR |= RCC_AHB1ENR_GPIOAEN; //Тактирование GPIO
RCC-›APB1ENR |= RCC_APB1ENR_USART2EN; //Тактирование модуля USART
//Настройка порта
GPIOA-›AFR[0] |= 0x00000700 | 0x00007000; //Альтернативная функция
GPIOA-›MODER |= GPIO_MODER_MODER2_1 | GPIO_MODER_MODER3_1; //Режим работы
GPIOA-›OSPEEDR |= GPIO_OSPEEDER_OSPEEDR2 | GPIO_OSPEEDER_OSPEEDR3; //Скорость порта
//GPIOA-›OTYPER |= //Тип порта когда он является выходом
GPIOA-›PUPDR |= GPIO_PUPDR_PUPDR2_0 | GPIO_PUPDR_PUPDR3_0; //Подтяжка порта
USART2-›CR1 |= USART_CR1_RE | USART_CR1_TE | USART_CR1_RXNEIE | USART_CR1_UE; //Разрешить прием, передачу и прерывание по приему
USART2-›BRR = 0x000016C9; //Скорость передачи: 115200
NVIC_SetPriority(USART2_IRQn, 0); //Установка приоритета
NVIC_EnableIRQ(USART2_IRQn); //Разрешение прерывания
} |
oleg110592:
Бит TE потом вручную отключил, чтоб не мешал.
Можно посмотреть настройку портов и альтернативных функций?