wuzhengmin
发表于 2025-8-12 11:50:27
最终测试:
一切顺利,到此我们就结束纪念堂的学习,感谢STC,感谢冲哥!!!
wuzhengmin
发表于 2025-8-13 08:50:51
第八次:《8051U深度入门到32位51大型实战教学视频》实验五
8051U深度入门到32位51大型实战视频
哪怕梦想让我们拼的遍体鳞伤,这一次我们也要勇往直前主讲人:冲哥
第五集C语言基础
摘要
1.C语言 USB-CDC串口之printf函数的实现
2.数的进制:2进制、10进制、16进制
3.数据的基本类型
4.C语言常用运算符.
本节课是C251入门基础, 特别是C语言 USB-CDC串口之printf函数的实现
调试程序的时候,printf()可以快速的帮我们打印出变量的类型,当前值等等信息!所以我们要用这个USB_CDC串口的printf函数的实现!!!
1.打开USB库中的PRINTF_HID宏定义(去掉//)
先开个新目录--C语音初步,接着把上一节课的项目复制过来
先打开项目,在STC3232_STC_8_USB.H文件里,把第6行的//去掉:
wuzhengmin
发表于 2025-8-13 09:02:33
2.理解PRINTF的函数原型的定义
#define printf printf_hid
int printf_hid(const char*fmt;...)
观察头文件里的这几句:
#if defined PRINTP_SEGLED
#define printf SEG7_ShowString
Helif defined PRINIF_HID
#define printf prints_hid
#endit
printf重定向到了这个上面,我们以后所有出现printf的地方,它都可以用 prints_hid去代替。
#define printfprintf_hid//#define 替换名被替换名
wuzhengmin
发表于 2025-8-13 09:07:18
2.理解PRINTF的函数原型的定义
#define printf printf_hid
int printf_hid(const char*fmt;...);
参数fmt--是格式控制字符串,包含了两种类型的对象:普通字符和转换说明。
普通字符:在输出时,普通字符将原样不动地复制到标准输出。
printf("8051U深度入门到32位51大型实战视频\r\n");
wuzhengmin
发表于 2025-8-13 09:10:38
转换说明:不直接输出,用于控制printf中参数的转换和打印。
每个转换说明都由一个百分号学符(%)开始,以转换说明符结束,从而说明输出数据的类型、宽度、精度等。
printf("80510深度入门到32位51大型实战视频,%s\r\n","加油");
执行结果是:
wuzhengmin
发表于 2025-8-13 09:39:36
这里%s 的意思是转义符%之后,是逗号之后的字符串
“ ” 自然是英文的!
if (bUsbOutReady)//如果接受到了数据
{
//USB_SendData(UsbOutBuffer,OutNumber); //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
printf("STC YYDS\r\n");
usb_OUT_done();//清除当前的接收区
}
编译下载后,COM口会出现CDC 串口
wuzhengmin
发表于 2025-8-13 10:19:34
这个USB-CDC ,和我们普通的串口有什么区别呢?
任意的波特率它都是可以工作的!!!而普通的COM是不可能的!!!
因为它的本质是USB在通信,所以说这里我们不管任意的波特率,都是可以正常工作!这是有硬件芯片的支持的!
转换说明简介:
1·类型:根据不同的fmt字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了fmt参数中指定的每个%标签。
关于附加参数,既可以是变量,也可以是常量。
2.位置:printf()函数的普通字符和转换说明放在""双引号内,附加参数放在双引号外,每个附加参数之间用逗号隔开。
3·数量:printf()的附加参数与转换说明符是一一对应关系,如果有n个转。
换说明符;printf()的参数就应该有n+1个。如果参数个数少于对应的转换说明符,printf()可能会输出内存中的任意值。
猜猜下面这句语句結果
printf("今天是%d年%d月%d日\r\n",24,11,16);
前面有三个%,那么这后面就应该有三个数字。这个数既可以是变量,也可以是常量
百分之s输出字符串,字符串就是双引号里扩起来的一个叫字符串,再来看一下这个百分之d,就是以十进制整数的形式输出。
所以上面的输出结果的:今年是 24年11月16日
wuzhengmin
发表于 2025-8-13 10:24:21
标志 含义 实例
n.m n表示整数占几行,m表示小数占 %2.3f
大家感兴趣可以自己去试一下
wuzhengmin
发表于 2025-8-13 10:26:48
前面的图片看不清:
再来一次!
wuzhengmin
发表于 2025-8-13 10:33:08
这里重点要关注的一个就是\t ,就是水平制表符,可以看到这里一个是8个空格