找回密码
 立即注册
查看: 288|回复: 0

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

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:37
  • 最近打卡:2025-02-01 23:25:00

5

主题

16

回帖

261

积分

中级会员

积分
261
发表于 2024-11-29 17:17:54 | 显示全部楼层 |阅读模式
嗨嗨嗨,第四天咯!今天学习了使用USB-CDC串口打印数据+C语言基础学习。
截图202411291639048136.jpg
1:先来看看USB-CDC串口,printf函数打印数据:
(1)、在stc32_stc8_usb.h中把#define PRINTF_HID的注释给去掉。
截图202411291640515137.jpg
(2)、编写代码:
截图202411291642582003.jpg
代码的效果是USB如果接收到了数据,执行printf语句,输出”知道了知道了“\r\n是换行。
(3)、设置ISP里面的选项,烧录代码:
(1:注意这里的串口波特率需要和CDC-HID串口助手中的波特率一致,不然会出现通信超时(之前遇到了,找了好久才看到,我波特率不匹配
(2:芯片的主频选择是24mhz。
(3:串口的波特率可以随意选择,因为实际是USB通信。
截图202411291644387880.jpg
截图202411291644531656.jpg
(4)、实际测试:
截图202411291648453845.jpg
这里选择921600的波特率,CDC串口收发也是正常的。
(5)、可能的bug:


截图202411291650222019.jpg

接收乱码。编码格式不对,ASCII改成UTF-8就行了。
截图202411291651145553.jpg
(6)、printf代码大致讲解:
截图202411291652361465.jpg
这里说的fmt有两种参数:一种就是普通字符,就是在代码中原封不动打印到CDC串口上的数据
还有一种就是转换说明:不直接输出,用于参数的格式转化和打印,由%开始,表示输出数据的类型、宽度、精度。
比如: 截图202411291656042306.jpg
代码前面,已经定义X的数据为20。
fmt的参数可以有多个,但是得对应前面的%,不然大概率会报错,或者输出不合理的数据。
然后具体一点的解释和相对应的%后面的格式字符和转义字符可以看下面。
截图202411291657469072.jpg
截图202411291658019294.jpg

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

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

4、C语言的运算符:
(1):算术运算符:
截图202411291708594951.jpg
加减乘除取模加加减减。
(2)、关系运算符:
截图202411291709519562.jpg
比较关系的,然后0为假,1为真。
(3)、逻辑运算符:
截图202411291712148347.jpg
与或非!
(4)、赋值运算符:
截图202411291713302866.jpg
按位异或、与、或还是比较常见的
(5)、位运算符:
截图202411291714315927.jpg
位运算用的比较多,操作寄存器嘛。
(6)、其他运算符:
截图202411291715164845.jpg
得学,会用到的,特别是指针和结构体。

5:代码和附件(是前一天的代码基础上改的,其实没太多变化)
PS:加油,继续学习!

demo_code.zip

88.08 KB, 下载次数: 13

回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-9 03:38 , Processed in 0.137052 second(s), 48 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表