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返回值
}
|