前言
开发板上的DAP Link即可作为SWD调试下载程序,同时支持串口调试功能,其串口连接的是STM32G431RBT6的PA9、PA10。
STM32CubeMX配置
配置好参数后使能中断,点击“GENERATE COOE”等待软件更新工程配置。
keli
串口发送数据使用HAL库内置的一个函数:
HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout);
参数1:串口编号
参数2:要发送的数据
参数3:要发送数据的长度
参数4:发送超时时间
要发送数据的长度一般通过函数 sizeof 获取 。
串口接收通过重编写中断函数:
u8 huart1_buf[30];//串口接收数据
u8 _huart1_buf;//接收串口数据缓冲区
u8 huart1_buf_num=0;//接收到串口数据的个数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
huart1_buf[huart1_buf_num++%30] = _huart1_buf;//取出接收完的一字节数据
HAL_UART_Receive_IT(&huart1,&_huart1_buf,1);//开始下一字节数据的接收
}
串口接收完一字节数据后会调用中断函数,此时取出接收完的一字节数据,并开启下一个字节数据的接收。
处理字符串数据时常用的函数:
/* sprintf 格式化字符串 */
unsigned char buf[20] = {""};
unsigned int data = 10;
sprintf(buf,"Hello World!");
sprintf(buf,"data:%d",data);
/* sizeof 获取字符串长度 */
unsigned char buf[] = {"Hello World!"};
unsigned int data = 0;
data = sizeof(buf);
/* memset 用于清空字符数组 */
unsigned char buf[20] = {"Hello World!"};
memset(buf,0,sizeof(buf));
/* sscanf 按格式切割字符串 */
unsigned char buf[] = {"2024-04-16"};
unsigned char year[5]={0},month[3]={0},day[3]={0};
unsigned int dat1=0,dat2=0,dat3=0;
sscanf((u8*)buf,"%4s-%2s-%2s",year,month,day);//按格式、位数切割字符串,以字符格式数据赋值给变量
sscanf((u8*)buf,"%4s",year);//只取固定长度数据
sscanf((u8*)buf,"%4d-%2d-%2d",dat1,dat2,dat3);//按格式、位数切割字符串,以整形格式数据赋值给变量