STM32学习中的DMA实验中串口打印字符串数目怎样确定的?

在原子哥的DMA实验中,我们将代码烧进stm32中,按下K0会在串口打印很多行字符串,那么这些字符串的数目是怎确定的呢?一共有多少行?弄懂之后,我决定还是分享一下:

STM32学习中的DMA实验中串口打印字符串数目怎样确定的?_第1张图片

先看这一段代码,通过代码const u8 TEXT_TO_SEND[]={"ALIENTEK WarShip STM32F1 DMA 串口实验"};我们怎么来算j=sizeof(TEXT_TO_SEND);中j的值呢,在这里,先看const u8是什么意思

1:const 说明值常量
值常量的说明一般放在头文件或者文件的开始部分,也可以放在类中进行说明
2:"u8"是使用typedef或者define重新定义过的,
一般代表unsigned char ,指向无符号字符数据类型
3:const u8
表示定义无符号型字符常量
4举例
const u8 sum=10;
表示sum值是10,且sum值无法更改.
一般字库定义都用const u8 类型进行定义.

在头文件stm32f10x.h中可以找到u8的定义

STM32学习中的DMA实验中串口打印字符串数目怎样确定的?_第2张图片

继续追踪uin8_t可以得到如下结果

STM32学习中的DMA实验中串口打印字符串数目怎样确定的?_第3张图片

C语言中字符数组中字符串所占字节:英文字符(包括英文大小写字母、数字、空格等)占一个字节,汉字占两个字节,还有一个字符串结束标志‘\0’所以我们可以计算j的值=8+1+7+1+7+1+3+1+2*4+1=38个字节,字符串每输出一行,就要换行回车,所以还得加上'\n'和‘\r’"\r"是换行符,"\n"是回车符。换行相当于在键盘上按一下方向键下,回车符相当于把光标移动到一行开始的位置。所以还得加上两个字节38+2=40,通过定义的SEND_BUF_SIZE长度为 8200时,就可以计算出串口输出的字符数为8200/40=205条,得到的字符串数不好数,可以复制到excel表中就可以得到这样的结果

STM32学习中的DMA实验中串口打印字符串数目怎样确定的?_第4张图片

和我们计算的结果一样,我们也可以改变SEND_BUF_SIZE的长度,再验证,比如我改为200,那么理论推算应该是输出五条,再验证STM32学习中的DMA实验中串口打印字符串数目怎样确定的?_第5张图片

对于C语言字符数组与字符串的使用不清楚的可以参考

https://blog.csdn.net/smf0504/article/details/51673529

你可能感兴趣的:(stm32)