Пишу код под Nucleo L476. Кубом. И вручную. Результат тот же. Поднял UART1. UART работает. Но прерываний нет. Ни в коде от Куба ни в моем коде.
Вручную настраивал так:
Код
USART1->CR1 = 1<<7 | //Bit 7 TXEIE: interrupt enable
1<<6 | //Bit 6 TCIE: Transmission complete interrupt enable
1<<5 | //Bit 5 RXNEIE: RXNE interrupt enable
1<<3 | //Bit 3 TE: Transmitter enable
1<<2 | //Bit 2 RE: Receiver enable
1<<0; //Bit 0 UE: USART enable
USART1->CR2 = 1<<11; //Bit 11 CLKEN: Clock enable
USART1->BRR = 0x271; //Tx/Rx baud = f CK / BRR. Oversampling by 16
Если выполнить макрос, разрешающий 37-е прерывание:
Код
NVIC->ISER[(((uint32_t)(int32_t)37) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)37) & 0x1FUL));
То в моем варианте все виснет. Точно такой же макрос с параметром 37 есть в коде от Куба. Но он не вешает систему. Прерываний просто нет. И да, прерывания от SYSTIC работают в обоих случаях.
Мож кто подскажет в чем дело или примерчик рабочий... Хотя под L476 я мало чего нахожу в Сети.
Сообщение отредактировал Димон Безпарольный - May 11 2016, 08:06