HC32L110串口收发不出去,也找不出哪错了
void USART0_IRQHandler (void)
{
uint8_t temp ;
uint8_t ClearFlag = ClearFlag;//这样赋值清除语法警告
if(Uart_GetStatus(UARTCH0, UartRxFull) == TRUE)//读数据寄存器非空, 接收中断(接收到的数据必须是0x0d 0x0a结尾)
{
if((M0P_UART0->ISR_f.RI==0xF7)&&(uart0_buf_add==0)) //F7地址开始自增
{
uart0_receive_buf[uart0_buf_add]=M0P_UART0->ISR_f.RI;
uart0_buf_add++;
return;
}
if((M0P_UART0->ISR_f.RI==0xF8)&&(uart0_buf_add==1)) //F8确认包头
{
uart0_receive_buf[uart0_buf_add]=M0P_UART0->ISR_f.RI;
uart0_buf_add++;
uart_flag.uart0_receive_start=1; //开始处理,置位串口1接收开始标志位
return;
}
else if(uart0_buf_add==1) //包头不正确之后不做处理
{
uart_flag.uart0_receive_start=0;
uart0_buf_add = 0 ;
return;
}
if((M0P_UART0->ISR_f.RI==0x03)&&(uart0_buf_add==2)&&(uart_flag.uart0_receive_start==1))
{
uart0_receive_buf[uart0_buf_add]=M0P_UART0->ISR_f.RI;
uart_flag.uart0_DMB_askadd=1; //置位地址请求标志位
uart0_buf_add++;
return;
}
if((M0P_UART0->ISR_f.RI==0xA3)&&(uart0_buf_add==3)&&(uart_flag.uart0_DMB_askadd==1))
{
Uart_DisableIrq(UARTCH0, UartRxIrq);//关闭串口1接收中断,等待串口1发送完成
Uart_DisableIrq(UARTCH0, UartTxIrq);
delay1ms(6);
temp =(u8)(0xA5 + muc_add);
Uart_SendData(UARTCH0,0xF7);
Uart_SendData(UARTCH0,0xF8);
Uart_SendData(UARTCH0,0x03);
Uart_SendData(UARTCH0,0xA2);
Uart_SendData(UARTCH0,muc_add);
Uart_SendData(UARTCH0,temp);
Uart_SendData(UARTCH0,0xFD);
uart_flag.uart0_DMB_askadd=0;//回地址完成,复位地址请求标志位
uart0_buf_add = 0;//复位缓存地址
uart_flag.uart0_receive_start = 0;//复位串口1接收开始标志位
Uart_EnableIrq(UARTCH0, UartRxIrq);//enable the receive interrupt
Uart_EnableIrq(UARTCH0, UartTxIrq);
delay1ms(2);
return;
}
}
} |