xiao_a_bin 发表于 2024-11-29 17:17:54

跟着冲哥学习AI8051U第四天-C语言基础

嗨嗨嗨,第四天咯!今天学习了使用USB-CDC串口打印数据+C语言基础学习。

1:先来看看USB-CDC串口,printf函数打印数据:
(1)、在stc32_stc8_usb.h中把#define PRINTF_HID的注释给去掉。

(2)、编写代码:

代码的效果是USB如果接收到了数据,执行printf语句,输出”知道了知道了“\r\n是换行。
(3)、设置ISP里面的选项,烧录代码:
(1:注意这里的串口波特率需要和CDC-HID串口助手中的波特率一致,不然会出现通信超时(之前遇到了,找了好久才看到,我波特率不匹配{:4_184:})
(2:芯片的主频选择是24mhz。
(3:串口的波特率可以随意选择,因为实际是USB通信。


(4)、实际测试:

这里选择921600的波特率,CDC串口收发也是正常的。
(5)、可能的bug:




接收乱码。编码格式不对,ASCII改成UTF-8就行了。

(6)、printf代码大致讲解:

这里说的fmt有两种参数:一种就是普通字符,就是在代码中原封不动打印到CDC串口上的数据
还有一种就是转换说明:不直接输出,用于参数的格式转化和打印,由%开始,表示输出数据的类型、宽度、精度。
比如:
代码前面,已经定义X的数据为20。
fmt的参数可以有多个,但是得对应前面的%,不然大概率会报错,或者输出不合理的数据。
然后具体一点的解释和相对应的%后面的格式字符和转义字符可以看下面。



2、数的进制:2进制、10进制、16进制
(1):主打一个其他进制转化成10进制的计算方法:(对,这个叫做按权相加)
可看博客:二进制、八进制、十六进制与转换_计算机二进制八进制十六进制转换成十进制例题-CSDN博客


3、数据的基本类型:

如果需要用到double,就需要加上#pragma float64
因为double在C251中是64位的。
然后基本的数据类型就多看多用就好了。

4、C语言的运算符:
(1):算术运算符:

加减乘除取模加加减减。
(2)、关系运算符:

比较关系的,然后0为假,1为真。
(3)、逻辑运算符:

与或非!
(4)、赋值运算符:

按位异或、与、或还是比较常见的
(5)、位运算符:

位运算用的比较多,操作寄存器嘛。
(6)、其他运算符:

得学,会用到的,特别是指针和结构体。

5:代码和附件(是前一天的代码基础上改的,其实没太多变化)
PS:加油,继续学习!{:4_164:}
页: [1]
查看完整版本: 跟着冲哥学习AI8051U第四天-C语言基础