Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: F103 глюк при работе с UART
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
dimone
Код нормально работал на SТМ32F101 и пересобрался для работы на F103 (платы анологичные) , и начались странные глюки..
-при возникновении прерывания приема в USART в обработчике при проверке средствами StdPeriph_Lib_V3.5.0 (на плате с 101 отлично работающем), иногда не детектится условие приема , на которое собственно настроено прерывание , и соответственно не вычитывает принятый байт возвращаясь в это же прерывание по циклу..
сбрасывает ситуацию условие "по умолчанию", с холостым вычитыванием .., причем именно чтением, "закоменченые" строки не работают!
Буду благодарен за конструктивные идею..
Код
..
  USART_Init(USART2, &USART_InitStructure);  
  USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
  USART_Cmd(USART2, ENABLE);                          
  }    
                  
                                      
void USART2_IRQHandler(void)
{
  if(USART_GetITStatus(USART2, USART_IT_RXNE))
  {    
      com_rx_buf[com_rx_pnt]=USART_ReceiveData(USART2);
      if(com_rx_pnt<com_rx_siz){com_rx_pnt++;}else {com_rx_pnt=0;}         
  }
  else
  {
         USART_ReceiveData(USART2);
         //USART_ClearFlag(USART2, USART_FLAG_RXNE);
         //USART_ClearITPendingBit(USART2, USART_IT_RXNE);
  }
}
Golikov A.
есть мнение что там возникает не флаг что RX не пусто, а какой-то другой, например что передача прошла с ошибкой, или флаг что были перегрузки данных. То есть старый байт переписался новым, потому сбросы флага RXNE не помогли, а при вычитывании наверное флаг овердрайве снимается...

Чтобы не гадать на кофейной гуще, самое простое это при входе в прерывание, из регистра считать что там стоят за флаги на самом деле и поглядеть что они значат... Только не функциями библиотеки которые отлично работали, а прям по мануалу, по адресу считать и узнать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.