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个空格


页: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17
查看完整版本: 第一次:环境的创立 | 送实验箱