1400878695
发表于 2025-2-28 21:01:15
第十三集
1、回顾
前面的十二集主要学习了关于GPIO口、TIM的用法,怎么去运用寄存器进行代码的编写,理清代码编写的思路。
2、应用模块化编程
(1)首先要学会给重要的函数添加函数说明,这样方便去知道这个函数是用来干什么的,有没有返回值等。
(2)创建程序文件三步
新建文件并保存;
添加到工程;
添加引用路径。
(3)引脚定义都在.h文件,sbit 名称 = P10;#define 名称 P10。
(4)函数定义三步:定义、声明、调用。
(5)修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此引用”。注意extern修饰的变量不能赋初值。
(6)Bdata位寻址变量它可以单独的寻找每一个位。
3、按键需要的功能
4、for循环的用法
for (初始化表达式; 条件表达式; 更新表达式)
{
// 循环体语句
}
执行过程:
首先执行“初始化表达式”,通常用于初始化循环控制变量,只在循环开始时执行一次。
计算“条件表达式”的值,若为真(非零值),则执行循环体语句;若为假(零值),则结束循环,执行 for 循环后面的语句。
执行循环体中的语句,完成具体的操作任务。
执行完循环体后,执行“更新表达式”,用于更新循环控制变量的值,然后再次回到条件判断阶段,重复上述过程。
好难理解代码的逻辑。
1400878695
发表于 2025-3-1 14:10:05
第十四集
1、矩阵按键是什么
矩阵按键是一种常见的按键输入设备,矩阵按键由行线和列线组成矩阵结构,按键位于行线和列线的交叉点上。通常有多个按键排列成多行多列,如4行4列可组成16个按键的矩阵键盘,相比于独立按键,在实现较多按键功能时可节省单片机的I/O口资源。
2、控制原理
扫描方式:单片机通过I/O口对矩阵按键的行线和列线进行扫描。先使某一行线输出低电平,其余行线输出高电平,然后读取列线的电平状态。若某一列线为低电平,则说明该列与当前行交叉点上的按键被按下。
编码识别:根据按下按键所在的行和列的位置,单片机可通过预先编写的程序计算出对应的按键编码,从而识别出具体按下的是哪个按键,实现不同的功能操作。
3、优点、缺点
优点:当需要较多按键时,使用矩阵按键可大大减少占用单片机I/O口的数量。如要实现16个按键功能,若用独立按键需16个I/O口,而矩阵按键只需8个I/O口。可根据实际需求方便地扩展按键数量和功能,通过增加行线和列线的数量,就能轻松实现更多按键的布局。相比其他复杂的输入设备,矩阵按键结构简单、成本低廉,在各类电子设备中性价比高。
缺点:程序写的复杂。
3、switch函数
switch (表达式) {
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
...
case 常量表达式n:
语句n;
break;
default:
语句n+1;
break;
}
表达式:可以是整型、字符型、枚举型等表达式,编译器会计算该表达式的值,并与 case 后的常量表达式的值进行匹配。
case 常量表达式:每个 case 后的常量表达式的值必须互不相同,且与 switch 表达式的类型要兼容。当 switch 表达式的值与某个 case 常量表达式的值相等时,就从该 case 后的语句开始执行。
break语句:作用是跳出 switch 语句,使程序不再继续执行后续的 case 分支。若没有 break ,程序会从匹配的 case 开始,一直执行到 switch 语句结束,可能导致不符合预期的结果。
default分支:是可选的。当 switch 表达式的值与所有 case 常量表达式的值都不匹配时,就会执行 default 后的语句,常用于处理异常或默认情况。
1400878695
发表于 2025-3-1 14:48:28
第十五集
1、中断和中断系统
(1)什么是中断
中断指计算机在执行程序的过程中,当出现某些紧急或需要立即处理的事件时,暂时停止正在执行的程序,转去处理这些事件,处理完毕后再返回原来的程序继续执行的过程。例如,在单片机控制的智能温度控制系统中,温度传感器检测到温度超过设定阈值时,就会向单片机发出中断请求,让单片机暂停当前工作,立即处理温度过高的情况。
(2)什么是中断系统
中断系统是为使 CPU 具有对外界紧急事件的实时处理能力而设置的。实现中断功能的部件称为中断系统,请示CPU 中断的请求源称为中断源。微型机的中断系统一般允许多个中断源,当几个中断源同时向 CPU 请求中断,要求为它服务的时候,这就存在 CPU 优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规定每一个中断源有一个优先级别。CPU 总是先响应优先级别最高的中断请求。
(3)中断的类型
外部中断:由外部设备如按键、传感器等引发的中断。比如,按键按下时产生一个电信号,通过硬件电路发送给CPU,请求CPU进行相应处理。
内部中断:也叫软件中断,由CPU内部的事件或指令引发,如除法运算时除数为0、溢出等错误,或者是执行特定的中断指令引发。
定时中断:由定时器产生的中断。如在一些定时数据采集系统中,定时器每隔一定时间就会产生中断,通知CPU进行数据采集操作。
(4)中断系统的组成
中断源:即产生中断请求的设备或事件,如上述的外部设备、内部运算错误、定时器等。
中断请求寄存器:用于存放中断源发出的中断请求信号,CPU通过读取该寄存器来判断是否有中断请求。
中断屏蔽寄存器:可以通过软件设置来屏蔽某些中断源的请求,使CPU暂时不响应这些中断。
中断优先级仲裁电路:当多个中断源同时发出请求时,该电路根据预先设定的优先级,决定先响应哪个中断请求。
中断向量表:存储了各个中断服务程序的入口地址,CPU响应中断后,根据中断类型从中断向量表中找到对应的入口地址,从而跳转到相应的中断服务程序。
(5)中断嵌套
当 CPU 正在处理一个中断源请求的时候(执行相应的中断服务程序),发生了另外一个优先级比它还高的中断源请求。如果 CPU 能够暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低级中断服务程序,这样的过程称为中断嵌套。这样的中断系统称为多级中断系统,没有中断嵌套功能的中断系统称为单级中断系统。
(6)中断系统的作用
提高CPU效率:CPU不必一直查询外部设备状态,只有在设备需要服务时才响应中断,可让CPU有更多时间处理其他任务。
实时响应外部事件:对于一些实时性要求高的任务,如工业控制中的紧急故障处理,中断系统能让CPU及时响应,确保系统安全稳定运行。
实现多任务处理:多个设备可通过中断请求CPU服务,使计算机能同时处理多个任务,提高系统的并行处理能力。
2、什么是外部中断
外部中断是由计算机外部设备或外部事件引发的中断。这些外部设备包括键盘、鼠标、打印机、传感器等,当这些设备有数据需要传输、状态发生变化或完成特定操作时,就会向CPU发送中断请求信号,要求CPU暂停当前正在执行的任务,转而处理与该设备相关的事务。
3、外部中断的用法
1400878695
发表于 2025-3-1 15:46:43
第十六集
STC32G系列支持所有的I/O中断,且支持4种模式:下降沿中断、上升沿中断、低电平中断、高电平中断。千万不要在中断里加延时。软件清空是必须手写一行代码去清空,硬件清空是自动清零.相同优先级,靠前的中断源先执行,执行完之后在执行低中断源,且一个中断源在执行的时候不能被打断。外部中断只有单次触发,也就是上升沿下降沿或者单纯的下降沿才能执行。IO中断暂时只能用高电平中断或者低电平中断,他是可以持续进门中断的。
1400878695
发表于 2025-3-14 16:35:00
第二十三集
系统复位(上电复位、低压复位、复位脚复位、看门狗复位)
看门狗是一个计数器,它的基本功能是在软件问题和程序跑偏后重启系统。看门狗正常工作时会自动计数,程序进程会定时将其归零。如果系统在某个地方卡住了或者跑了,定时器就会溢出,是系统强制复位。
看门狗的意义:软件的可靠性一直是一个关键问题。任何使用软件的人都可能遇到电脑死机或程序失控的问题,为了保证系统在受到干扰后能自动恢复正常,看门狗定时器的使用是非常有价值的。
看门狗的实现原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定时间还不去清理看门狗(也叫喂狗),那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以,在使用有看门狗的芯片时要注意清理看门狗。
1400878695
发表于 2025-3-15 19:27:30
第三十一
按例程I2CCFG = 0xe0;//11100000
while(!(I2CMSST & 0x40));
I2CMSST &=~0x40;//软件清零
入口参数范围不对
slave是0-255,dat也是0-255.slave+1范围变为0-256。
1400878695
发表于 2025-3-17 17:16:51
第三十三
占空比:高电平的时间占整个周期的时间。
幅值:高低电平电压差
正脉宽:高电平时间t1
负脉宽:低电平时间t2
周期:高电平+低电平时间T
频率:周期的倒数1/T
占空比:一般指t1/T*100%。很重要
死区:两路方波之间高电平之间的时间差,不能让他们同时为高电平,延时一段时间。
相位差:方波移相
1400878695
发表于 2025-3-17 21:14:37
第三十四
1400878695
发表于 2025-3-18 11:12:36
第三十五