-при возникновении прерывания приема в 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);
}
}
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);
}
}