STM32常用函数整理
标准库使用的API 用的都是 **char *** 数据类型
1./清空缓冲区/
memset((char *)uart2RxBuff, 0, UART2RXBUFF_SIZE);
把uart2RxBuff中长度为UART2RXBUFF_SIZE的字符都写为0
2.拷贝
memcpy(数组1, 数组2, len);
把数组2的len长度的数据拷贝到数组1中
数组1与数组2都是指针
eg:
memcpy(&uart2ResponseBuff[uart2ResponseLen], uart2RxBuff, uart2RxLen);
把uart2RxBuff中该长度uart2RxLen的数据,拷贝到uart2ResponseBuff中(从uart2ResponseBuff中的第uart2ResponseLen开始拷贝
3.查找 —— 返回指针类型数据
strstr((char *)Buff, "+IPD"); //从左向右找字符串
strrchr("abc/def", '/'); //从右向左找字符
4.切割字符串
strtok((char *)Buff, ":"); //用:切割,第一次切割得到Buff数组中:前的数据指针
strtok(NULL, ":"); //第二次切割得到:后的数据指针
printf 、scanf 等衍生
1.printf
(1)
printf("%.*s", Len, uart2RxBuff);
从 uart2RxBuff 中 打印Len长度的数据
(2)%20s:宽度为20,高位用0补;
%4d:宽度为4,高位用空格补齐
sprintf(buff, "%04d-%02d-%02d %02d:%02d:%02d", //%04d:宽度为4,高位用0补
datetime.year,
datetime.mon,
datetime.day,
datetime.hour,
datetime.min,
datetime.sec
);
(3)`"%#x"输出前面带0x的十六进制数
"%#X" 输出前面带0X的十六进制数
printf
函数输出一个以0x
开头的十六进制数,使用"%#x"
或者"%#X"
格式化字符串。
%#x
会输出小写字母的十六进制数,而%#X
输出大写字母的十六进制数。
sprintf(cmd, "AT+CIPSEND=%d\r\n", dataLen);
把整合的数据(AT+CIPSEND=dataLen)给放到cmd中
uart2RxBuff: +IPD,3,"192.168.43.197",9999:abc
sscanf((char *)uart2RxBuff,
"%*[\r\n]+IPD,%d,\"%[^\"]\",%d",
dataLen,
dip,
port);
拆分读取数组:(1)%*[\r\n] - 跳过多个\r\n (2)% [ ^ \ " ] - 匹配非双排引号
标签:十六进制,常用,函数,02d,uart2RxBuff,%#,datetime,STM32,数组 From: https://www.cnblogs.com/petard/p/18297359