原程序是这样的void USART1_IRQHandler(void)
{
if(__HAL_UART_GET_FLAG(&Uart1Handle, UART_FLAG_RXNE))
{
uint8_t ch = READ_REG(Uart1Handle.Instance->DR);
WRITE_REG(Uart1Handle.Instance->DR,ch);
}
}
这样是可以将接收到的数据完整发送出去。我的想法,是将接收到的数据保存至数组缓冲区,但是我改成以下这样就会出现问题,只能接收到一帧数据的第一个字符,问题还未定位到。
void USART1_IRQHandler(void)
{
if(__HAL_UART_GET_FLAG(&Uart1Handle, UART_FLAG_RXNE))
{
RS485_RX_Buffer[g_cntRxd]=(uint8_t)(Uart1Handle.Instance->DR&(uint8_t)0x00FF);
g_cntRxd++;
}
}
|