您好! 从 UART1接收 ISR 数据时遇到问题。 我从主程序的 main 发送一个响应
外部器件的请求。 设备在500毫秒内回复我、到达的数据是
由 ISR 接收、但由于来自外部器件的响应字符串已定义、因此数据到达顺序不一致
结构。 如果可能我配置了错误的中断、您能指导我吗?
int main(void)
{
//configurar el reloj del microcontrolador
g_ui32SysClock = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN |SYSCTL_USE_PLL |SYSCTL_CFG_VCO_240), 120000000);//120 MHz
INIT_UART();
CONFIG_UART();
while(1)
{
SysCtlDelay(10000);
sendStringUART1(S_P1);//?V913
SysCtlDelay(19000000);//569ms
GUARDA_ARREGLO();
// SysCtlDelay(22000000);//659ms
// sendStringUART1(S_P2);//?V914
// SysCtlDelay(22000000);//659ms
// GUARDA_ARREGLO();
// SysCtlDelay(22000000);//659ms
// cabecera(UART0_BASE,0x50);
/* SysCtlDelay(50000);
sendStringUART1(S_P2);//?V914
SysCtlDelay(500);
GUARDA_ARREGLO();
SysCtlDelay(500);
cabecera(UART0_BASE,0x50); */
}
}
void ISR_UART1(void)
{
ui32Status = UARTIntStatus(UART1_BASE,true);
UARTIntClear(UART1_BASE, ui32Status); //limpia las banderas de interrupción?
if (UARTCharsAvail(UART1_BASE))
{
char rxData = UARTCharGetNonBlocking(UART1_BASE); //recibe el dato UART entrante
if(i_rx < 26) //si el contador es menor a 26
{
BUFFER_UART[i_rx]=rxData;// Guarda el dato recibido en un arreglo
i_rx++; //aumenta el contador en uno
}
impedimenta=1; //breakpoint
}//cierra if(charsAvail)
lumos=1; //breakpoint
}