ST的移植三步走都正常,就是这个新唐的移植一直有问题。
void uart2ISR(void)
{
UINT32 volatile uRegISR, uRegFSR, uRegMSR, uRegFUN_SEL ,uRegIER;
UINT8 volatile uRegRBR;
UINT8 ch;
uRegISR = inpw(REG_UART2_ISR) & 0x0f;//REG_UART2_ISR寄存器的值为0x103
uRegIER = inpw(REG_UART2_IER);
uRegFUN_SEL = inpw(REG_UART2_FUN_SEL);//REG_UART2_FUN_SEL寄存器初始值为0
if(uRegISR & UART_ISR_THRE_INT_Msk)
{
prvvUARTTxReadyISR(); // 发送中断子程序 ,通知modbus数据可以发松
}
else if(uRegISR & UART_ISR_RDA_INT_Msk)
{
// Get all the input characters
while ((uRegISR & UART_ISR_RDA_IF_Msk) >> UART_ISR_RDA_IF_Pos)
{
prvvUARTRxISR(); // 接收中断子程序 ,通知modbus有数据到达
}
}
uRegRBR = inpb(REG_UART2_RBR); //清除UART接收中断的挂起标志位,确保下一次正常触发中断。读取RBR,清除中断标志位.
}
|