在初始化串口后。
HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)&receivedChar, 1);
if( HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)&receivedChar, 1)!=HAL_OK){
Error_Handler();
}
串口回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart==&hlpuart1){
buffer[bytesRead] = receivedChar;
bytesRead++;
if (receivedChar == '\n') {
// 数据包结束,进行处理
processReceivedData();
// 重置状态以接收下一个数据包
memset(buffer,0,MAX_PACKET_SIZE);
bytesRead = 0;
HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)&receivedChar, 1);
return;
}
HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)&receivedChar, 1);
}
}
处理函数
void processReceivedData() {
// 在这里可以根据接收到的数据做相应处理,例如回复OK
if (strcmp(buffer, "AT+STATUS\r\n") == 0) {
printf("OK\r\n");
}
}