蓝桥杯嵌入式学习笔记——串口

前言

开发板上的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);//按格式、位数切割字符串,以整形格式数据赋值给变量







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值