Всем привет. Суть проблемы такова: запускаю проект. Возникает прерывание FE(frame error), и кидает в обработчик прерываний. Если пошагово в отладчике проходить инициализацию USART, то USART работает. Пример взят с st.com и немного переделан для USART7(USART4 и USART1 заработали нормально). Добавление задержек не помогло. Нужен совет куда хотя бы смотреть? Скорее всего детская ошибка в инициализации, которую я в упор не вижу. Среда IAR 7.50.2 и St-Linkv2. Спасибо
Код
RCC->AHBENR |=RCC_AHBENR_GPIOFEN; /* Enable the peripheral clock of GPIO */
GPIOF->MODER = (GPIOF->MODER & ~(GPIO_MODER_MODER2|GPIO_MODER_MODER3)) | (GPIO_MODER_MODER2_1 | GPIO_MODER_MODER3_1); /* (1) Select AF mode (10) on PF3 and PF2 */
GPIOF->AFR[0] = (GPIOF->AFR[0] & ~(GPIO_AFRL_AFRL2 | GPIO_AFRL_AFRL3)) | (1 << 2*4) | (1 << 3*4); /* (2) AF1 (01) for USART signals */
RCC->APB2ENR |= RCC_APB2ENR_USART7EN; /* Enable the peripheral clock USART */
USART7->BRR = 480000 / 96; /* (1) oversampling by 16, 9600 baud */
USART7->CR1 = USART_CR1_TE | USART_CR1_RE | USART_CR1_RXNEIE | USART_CR1_UE; /* (3) 8 data bit, 1 start bit, 1 stop bit, no parity, reception and transmission enabled */
while((USART7->ISR & USART_ISR_TC) != USART_ISR_TC) /* polling idle frame Transmission */
{
/* add time out here for a robust application */
}
USART7->ICR |= USART_ICR_TCCF; /* Clear TC flag */
USART7->CR1 |= USART_CR1_TCIE; /* Enable TC interrupt */
NVIC_SetPriority(USART3_8_IRQn, 0); /* (4) Set priority for USART1_IRQn */
NVIC_EnableIRQ(USART3_8_IRQn); /* (5) Enable USART1_IRQn */
Сообщение отредактировал IgorKossak - Apr 11 2017, 07:35
Причина редактирования: [codebox] для длинного кода. [code]-для короткого!!!