原程序是這樣的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++;
}
}
|