原理图:
STM32CubeMX配置:
打开软件。按照如图所示的顺序,根据题目要求配置好USART。注意:建议在配置了LCD之后再配置串口,不然引脚位置需要自己调整到PA9、PA10。
再使能NVIC。
配置成功,点击GENERATE CODE。
Keil5配置:
打开软件。
发送:
char temp[20];
sprintf(temp,"Hello World\r\n");
HAL_UART_Transmit(&huart1,(uint8_t*)temp,strlen(temp),50);
//选择的串口 发送的数据 数据大小 超时时间
//超时时间是指发送这个数据需要占用多少时间,在这个时间内,不能发送别的数据,只能等该数据发送完毕
下载到板子上,利用串口调试助手,可以接收到发送的信息:
接收:
在interrupt.c中添加中断:
char rxdata[30];
uint8_t rxdat;
uchar rx_p;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
rxdata[rx_p++]=rxdat;
HAL_UART_Receive_IT(&huart1,&rxdat,1);
}
记得需要添加头文件:
#include “usart.h”
在main.c中:
先将变量进行引用:
extern char rxdata[30];
extern uint8_t rxdat;
extern uchar rx_p;
在初始化位置,开启串口中断:
HAL_UART_Receive_IT(&huart1,&rxdat,1);//开启中断
在while循环中:
if(rx_p!=0)
{
int temp=rx_p;
HAL_Delay(1);
if(temp==rx_p) uart_rx();
}
然后可以在uart_rx()这个自定义函数中根据题目要求实现自己的业务逻辑。
最后下载到板子上,打开串口调试助手,发送对应格式的数据,看看接受是否成功。