配置波特率以及开启中断
串口的接收:
他这个接收一次只能接收一个字符,所以定义一个字符串数组,把字符一个一个存放进去。
char data[30];
char rx;
uchar rx_flag;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
data[rx_flag++] = rx;
HAL_UART_Receive_IT(&huart1,&rx,1);
}
主函数声明一下:HAL_UART_Receive_IT(&huart1,&rx,1);
接收例子:
void uart_porc(void)
{
sscanf(data,"%s",uart_rx); //把接受的字符串写到uart_rx字符串数组里面
if(rx_flag>0) //如果接收到字符
{
if(rx_flag == 3) //判断接受的字符串长度为3
{
char temp[20];
sprintf(temp,"%s",uart_rx);
LCD_DisplayStringLine(Line3,(unsigned char *)temp);
}
else
{
char temp[30];
sprintf(temp,"error\r\n");
HAL_UART_Transmit(&huart1,(uint8_t *)temp,strlen(temp),50);
}
}
rx_flag = 0;memset(data,0,30); //执行完接受记得把接收字符串数组和数组标记清零
}
串口的发送:
char temp[30];
sprintf(temp,"hello world\r\n");
HAL_UART_Transmit(&huart1,(uint8_t *)temp,strlen(temp),50);
串口的发送就很简单,只需调用下面的函数即可;
HAL_UART_Transmit(&huart1,(uint8_t *)temp,strlen(temp),50);