Добрый день!
Возникла следующая интересная проблема.
По ходу выполнения прошивки в какой то момент происходит зацикливание программы на прерывании от USART1.
То есть выполняется запуск обработчика прерываний с частотой примерно 100 кГц.
Основная программа успевает сделать несколько инструкций после чего снова происходит прерывание.
При этом если остановить обработку прерывания отладчиком и походить по инструкциям нормальный ход программы восстанавливается.
Прерывания разрешены только на прием, флаг готовых данных не взведен.
В регистре NVIC->ICSR указывается что активное прерывание от usart1.
С чем может быть связанно такое поведение?
Осциллографом контролировал линию - стабильная единица на обоих линиях.
Стабильно повторяется. Прерывания по приему не запрещается и разрешено постоянно.
Код
void USART1_IRQHandler (void) {
VD3R_ON;
VD3G_ON;
if (USART_GetITStatus(USART1,USART_IT_TXE)) {
// USART_ClearITPendingBit(USART1,USART_IT_TXE);
}
if (USART_GetITStatus(USART1,USART_IT_RXNE)) {
// USART_ClearITPendingBit(USART1,USART_IT_RXNE);
unsigned char receive_char=USART_ReceiveData(USART1);
if (!modemmode) {
}
VD3R_OFF;
VD3G_OFF;
}