реклама на сайте
подробности

 
 
> stm32f091vc + USART, Нужна помощь в настройке USART.
keks9357
сообщение Apr 11 2017, 07:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 27-04-10
Пользователь №: 56 933



Всем привет. Суть проблемы такова: запускаю проект. Возникает прерывание 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]-для короткого!!!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 18:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01362 секунд с 7
ELECTRONIX ©2004-2016