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

Ai8051U学习笔记

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-02-12 22:28:08
已绑定手机

7

主题

-1

回帖

52

积分

注册会员

积分
52
发表于 2025-2-12 22:27:09 | 显示全部楼层 |阅读模式

DAY1序言/硬件与工具的介绍
硬件
1.绿色板子叫做PCB板
2.元件全部焊接在PCB板上的叫做PCBA板,一般是成品,是加工好的线路板
3.USB Link1D是烧录调试的工具
4.USB转双串口的最高波特率可以到10M(兆),可以替换CH340
5.矩阵键盘是由横向四个引脚和纵向两个引脚组成
6.ADC键盘有16个都由一个引脚
7.AI8051U芯片是由LQFP48的48条脚的芯片
8.电源按键是控制板子或芯片的断电进入下载模式
9.Falsh芯片可以存储内容
10.RTC电池可以保证板子没有电时,RTC实时时钟保持运行。
11.24CO2EEPRDM存储重要的数据
软件
1.KEIL是编程软件
2.ISP软件将代码下载到单片机中
DAY2点亮一颗LED灯
c语言代码的主函数现在好像一般用int,void开头的现在好像不常使用
在写程序时也要反复验证,很容易出现小错误,我们要不断修正
DAY3USB不断电
USB不停电下载操作步骤
     1.实验对比演示
     2.下载所需文件:从STC官网的“软件工具库函数”中获取USB库文件。
     3.移植关键部分到工程
         3.1添加头文件
         3.2USB初始化函数
         3.3命令参数:文档未明确提及命令参数的具体设置和使用方法,可能需结合具体应用场景和相关库函数说明进行配置。
         3.4打开特定寄存器位
main.c文件下面要有一个.lib文件和.h文件
至少要一个.c或者.h文件才能生成一个.lib文件
.lib文件别人打不开,可以防止代码被人篡改。

DAY4C语言的基础
主要内容涵盖C语言在USB  CDC串口场景下`printf`函数的运用、数制转换、数据类型及常用运算符。
1. C语言USB  CDC串口之`printf`函数的实现
     开启宏定义:通过打开USB库中的`PRINTF_HID`宏定义(去掉`//`),实现`printf`函数重定向到USB HID接口输出 。
     理解函数原型:`printf`函数原型为`int printf_hid(const char *fmt, ...)`,`fmt`是格式控制字符串,包含普通字符和转换说明。普通字符原样输出,转换说明以`%`开头,控制参数的转换和打印 。
     转换说明要点
         类型:附加参数可为变量或常量,依据`fmt`字符串确定。
         位置:普通字符和转换说明在双引号内,附加参数在双引号外,以逗号分隔。
         数量:附加参数与转换说明符一一对应,若参数不足,可能输出内存任意值。
     常见格式字符与标志:介绍`%d`、`%f`等格式字符的输出形式,以及`n.m`、`%d`等标志的作用,还有`\n`、`\t`等转义字符的含义 。
     ASCII字符代码表:展示ASCII字符代码表,包括非打印控制字符和打印字符,便于理解字符与代码的对应关系。
2. 数的进制:介绍二进制、八进制、十六进制与十进制的表示方法及相互转换。二进制如`1011`转十进制通过位权展开计算;八进制`0123`、十六进制`0x34A`同理,分别以8、16为基数进行位权运算。
3. 数据的基本类型:C251编译器支持标准C数据类型和特定于该平台的数据类型。如`bit`型占1位,取值0或1;`signed char`占8位,范围是128到+127 。使用64位变量(`double`)需添加`#pragma float64`申明,还可通过`#define`自定义数据类型别名。
4. C语言常用运算符
     算术运算符:包括加(`+`)、减(``)、乘(`*`)、除(`/`)、取模(`%`)、自加(`++`)、自减(``)运算符,用于数值运算。
     关系运算符:如等于(`==`)、不等于(`!=`)、大于(`>`)等,用于比较操作数,结果为真(非0)或假(0),常用于`if`等判断语句。
     逻辑运算符:逻辑与(`&&`)、逻辑或(`||`)、逻辑非(`!`),根据操作数的真假组合得出相应结果。
     赋值运算符:基本赋值(`=`)及复合赋值运算符(`+=`、`=`等),用于给变量赋值或进行运算后赋值。
     位运算符:按位与(`&`)、按位或(`|`)、按位异或(`^`)、取反(`~`)、左移(`<<`)、右移(`>>`),对二进制位进行操作。
     其他运算符:条件运算符(`? :`)根据条件选择不同值;成员运算符(`.`和`>`)用于引用类、结构体和共用体成员;取地址运算符(`&`)获取变量地址;指针运算符(`*`)指向变量;逗号运算符顺序执行运算,以最后一个表达式的值为整个表达式的值。
DAY5I/O输入输出
GPIO:输入和输出端口(引脚),是输出和读取高低电平的

高电平:接近于电源正极电压的电平(“1”)
在单片机中:高电平是输出VCC电压
                    低电平是输出GND电压
I/O口对地电压<VDD+0.3V
端口施密特出发控制位
0:使能端口的施密特触发功能 (上电复位后默认使能施密特触发)
1:禁止端口的施密特触发功能
当电路不能出发时,可以用万用表测一个引脚电压来简单判断是不是电压的问题
任务三中取反的代码在按键按下时会一直进行可以用while语句简单实现一按一亮的效果
机械按键按下或松开会有20毫秒的抖动,可以使用延长20毫秒的代码来消除抖动
DAY6定时器中断
MCU是单核的,同一时间只能执行一个事情,没有特殊情况不能被打断
特殊情况:定时器中断
定时器的作用:
1.用于计时系统,可实现软件计时,或者是程序每隔一个固定时间完成一个操作
2.替代长时间的Delay,提高程序的运行效率和处理速度(可以打断主循环)

返回值类型 函数名(入口参数)
{
       //函数名
       //函数执行的代码
       return返回值
}


回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-30 23:02 , Processed in 0.101883 second(s), 46 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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