学习冲哥的视频课程观后感
8月19日 冲哥 STC MCU研讨会—USB 观后感及自己实验记录:1.USB-CDC虚拟串口应用
① USB库文件下载和工程搭建
1.库文件下载(下载官网:https://stcai.com/khs)
2.将解压出来的库文件复制过来
3.KEIL新建工程并选择STC的单片机,并在工程目录保存头文件
4.新建main.c文件,增加USB初始化代码
5.添加文件到工程里
6.设置工程选项(Target,Output,L251 Misc)
7.使用最新的STC-ISP软件下载程序
8.下载完成后就会出现一个CDC串口 ---- 确实在Keil窗口出现了一个CDC串口 COM6
9.链接串口后即可实现串口数据发送和接受测试
我自己在开发板试验 CDC串口发送接收 正常
10.使用串口不停电下载!
1)打开 "收到用户命令后复位到ISP监控程序区"的选项卡
2)勾选 "使用默认的内部自定义命令“STCISP#”"
3)勾选 "下次使用STC-HID接口进行ISP下载"
4)勾选 "每次下载前都先发送自定义命令"
5)点击下载
按照老师讲的 一步一步 操作下来,果然可以做到 不停电下载,比较方便调试。
------------ 后边 跟着冲哥的课继续学习-----
下载
本帖最后由 sun5304 于 2023-8-21 10:59 编辑
8月20日继续跟着冲哥的视频课 学习----LED闪烁:
1.基于 Delay函数 实现LED的闪烁
在工程中添加如下语句
#define MAIN_Fose 24000000UL
void delay_ms(u16 ms)
{
u16 i;
do
{
根据 屠龙刀开发板 原理图,LED 接 P20~P27,没有晶体管,P40口暂时不用。
板子上P20和P27连接的LED闪烁正常(图片看不出 闪烁效果)
2. while 与 do while 的区别
通过这一段的学习,明白了 while 与 do while 的区别
3.分析 屠龙刀 的原理图 ,看到设计人员做的这个断电装置挺有意思:
利用一支轻触开关和一个PNP晶体管,通过开关控制晶体管基极的高低电平,来达到晶体管的导通/截至,从而使集电极
输出或不输出,实现了正常供电和断电的作用。虽然是一个简单的装置,体现了设计人员的巧妙构思。值得学习和借鉴。
本帖最后由 sun5304 于 2023-8-21 11:08 编辑
8月21日 继续跟着冲哥的视频课 学习----按键点灯:
1.按键的代码实现过程
if(KEY == 0)
{
Delay_ms(10); //利用延时函数 检测按键按下 10ms ,可以消除抖动
if(KEY == 0) //延时结束后 如果按键 仍然 等于 1,再执行以下的功能
{
执行功能
}
}
2.在屠龙刀板子上实验,需要将LED改在P20\P27端口
//----------------------按下点亮,松开熄灭 ---------------------------------------
if( KEY1 == 0) //判断按键有没有按下
{
delay_ms(10);
if( KEY1 == 0 )
{
printf("按键P32已经按下\r\n");
P20 = 0; //LED0点亮
}
}
else //如果没有按下
{
P20 = 1; //LED0 熄灭
}
//--------------------------按下熄灭,松开点亮 --------------------------------
if( KEY2 == 0) //判断按键有没有按下
{
delay_ms(10);
if( KEY2 == 0 )
{
printf("按键P33已经按下\r\n");
P27 = 1; //LED熄灭
}
}
else
{
P27 = 0; //LED点亮
}
3. 下载到板子上,实验证明程序正常,在 USB-CDC 串口助手窗口观察 也是正常。
8月22日 继续跟着冲哥的视频课 学习 ---- 蜂鸣器:
1. 蜂鸣器控制原理
分析该电路原理图 可知 驱动采用一支PNP晶体管,当给晶体管基极输入高电平时,晶体管截止;给晶体管基极输入低电平时,晶体管导通。晶体管基极连接CPU的P5.4端口。
P5.4引脚输出高电平 关闭 ; P5.4引脚输出低电平 打开。
因为没有蜂鸣器,用P21引脚的LED灯 亮灭来代替,模拟蜂鸣器。
下载到屠龙刀板子上,实验结果:按一下P3.2按键,P2.1的LED亮;再按一下P3.2按键,LED熄灭。
LED 亮灭状况对比,模拟蜂鸣器的打开与关闭。
0822下学习 #define 和 typedef 用法和区别:
1.表示方法#define[标识符][被标识符表示的字符串] 可以理解为文本替换
表示实例#deline ON1 //共阴LED,高电平点亮
#defineOFF 0 //共阴LED,低电平熄灭
等同于 LED=ON;---> LED = 1;
LED =OFF; ---> LED = 0;
2.表示方法typedef [数据类型][字符串]
表示实例typedefunsigned char u8; //unsigned char 类型 用 u8 表示
typedefunsigned int u16; //unsigned int 类型 用 u16 表示
typedefunsigned long int u32;//unsigned long int 类型 用 u32 表示
等同于 u8 i; //unsigned char 类型变量i
u16 j; //unsigned int 类型变量j
u32 k; //unsigned long int 类型变量 k
点亮 P2.0~P2.7 的LED,下载到板子上实验 正常。
8月23日 学习冲哥课 定时器的作用和意义:
1.定时器是定时器和计数器的统称。
1)设置为定时器时,可以实现硬件计时,或者使程序每隔一固定时间完成一项操作
2)设置为计数器时候能够对脉冲进行计数
3)替代长时间的delay,提高CPU的运行效率和处理速度,能及时的响应某个事件
2.STC32G单片机定时器使用原理
2.1、先设置功能为定时器/计数器(本质都是加法计数器)
STC32G 系列单片机内部设置了5个24位定时器/计数器(8位预分频+16位计数)。5个16位定时器T0、T1、T2、T3和T4都具有计数方式和定时方式两种工作方式。
定时器\计数器的核心部件是一个加法计数器,其本质是对脉冲进行计数。只是计数脉冲来源不同:如果计数脉冲来自系统时钟,则为定时方式,此时定时器/计数器每12个时钟或者每1个时钟得到一个计数脉冲,计数值加1;如果计数脉冲来自单片机外部引脚,则为计数方式,每来一个脉冲加1。
2.2、 如何在定时器/计数器模式下,设置不分频或者12分频
当定时器/计数器T0、T1及T2工作在定时模式时,特色功能寄存器AUXR中的T0x12、T1x12和T2x12分别决定是系统时钟/12还是系统时钟/1(不分频)后让T0、T1和T2进行计数。
当定时器/计数器T3及T4工作在定时模式时,特色功能寄存器T4T3M中的T4x12和T2x12分别决定是系统时钟/12还是系统时钟/1(不分频)后让T3和T4进行计数。
当定时器/计数器工作在计数模式时,对外部脉冲计数不分频。
定时方式,此时定时器/计数器每12个时钟或者每1个时钟得到一个计数脉冲,计算值加1.
2.3、定时器的工作模式
2.4、定时器设置
2.5、中断
EA: 总中断允许控制位。EA的作用是使中断允许形成多级控制,即各中断源首先受EA控制,其次受各中断源自己的中断允许控制位控制。
ET0:定时器/计数器T0的溢出中断允许位。
0:禁止T0中断
1:允许TO中断
3.定时器的简单应用
4.定时器的快速使用方法
通过实践,STC-ISP 自带的这个定时器计算器比较方便
8月24日 数码管
1.认识数码管
每一支数码管都是由七段LED组成,通过控制不同段的显示,达到显示数字和字母。(A、B、C、D、E、F、G;如果有小数点,增加DP)
多支数码管组合起来,就需要有位控制,通过控制位的高低电平,即可实现只显示需要位的数码管亮起。
2.控制原理
由原理图得知:位的控制电流比较大,所以在每一位控制端需要增加一支PNP晶体管做驱动,这样MCU的PIO端口输出的控制信号(高低电平),接到晶体管基极,再由集电极输出到各个位控制端(COM)。
3.数码管的动态显示
要实现多位数码管的同时显示,就需要采用动态显示。实际上是利用人眼的延迟,设置数码管的延迟时间不能太短也不能太长。
具体的控制流程如图所示:
其中需要注意,我们这边程序就以1ms为准,且需要保证总共一个循环结束的时间不能大于20ms,因为人眼的视觉不容易分辨出50HZ以上的动态刷新。
8月24日下简易多任务处理
1)重点理清程序的逻辑思路,之前的课主要是熟悉写程序的方法、分析逻辑,实现我们所要的功能。
2)这一节课开始,我们要规范程序,符合我们工程师级别的代码规范。
3)应用模块化的编程(.c+.h)
一、LED&数码管 --led_seg.c , led_seg.h
二、按键 --key.c , key.h
三、蜂鸣器 --beep.c , beep.h
四、定时器 --tim.c , tim.h
修饰符 extern 用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。
注意:extern 修饰的变量不能赋初值。
4)创建程序文件三步:
新建文件并保存
添加到工程
添加引用路径
5)引脚定义都在 .h文件:
sbit 名称 = P10;
#define 名称 P10
6)函数定义三步:
定义
声明
调用
7)bdata 位寻址变量的使用:
a.c a.h
u8 bdata LED = 0x00; extern u8 bdata LED;
sbit LED0 = LED^0; extern bit LED0;
sbit LED1 = LED^1; extern bit LED1;
.... ....
8)新建工程目录并创建4个目录:
9)分别在4个目录下创建 各自的 .c 和 .h 文件:
8月25日矩阵按键
1.在按键数量较多时,为了减少I/O口的占用,将按键排列成矩阵排列的形式,我们称为矩阵按键。
2.矩阵按键的控制原理如图:
第一步:现将P0.0~P0.3输出低电平,P0.6~P0.7输出高电平,如果有按键按下,按下的那一列的I/O就会变成低电平,就可以判断出哪一列按下了。
第二步:现将P0.0~P0.3输出高电平,P0.6~P0.7输出低电平,如果有按键按下,按下的那一行的I/O就会变成低电平,就可以判断出哪一行按下了。
第三步:行列组合一下就可以判断出是哪个按键按下了。
按照老师讲的,写入程序中,编译通过。
8月25日 下学习冲哥视频课 观后感
1、中断和中断系统
1.1什么是中断
中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。
当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完后,再回到原来被中断的地方,继续原来的工作。这样的过程称为中断。
1.2什么是中断系统
实现这种功能的部件称为中断系统,请示CPU中断的请求源称为中断源。中断系统一般允许多个中断源,当几个中断源同时向CPU请求中断,要求为它服务的时候,这就存在CPU优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求,即规定中断源有一个优先级别。
1.3中断系统的优点
CPU总是先响应优先级别最高的中断请求。当CPU正在处理一个中断源请求的时候,发生了另外一个优先级别比它还高的中断源请求,CPU能够暂停对原理中断源的服务程序,转而去处理优先级别更高的中断请求源,处理完后,再回到原低级中断服务程序,这样的过程称为中断嵌套。
每一个中断源可以用软件独立地控制为开中断或关中断状态。
部分中断的优先级别均可用软件设置。
1.4中断次序
2、什么是外部中断
外部中断就是在单片机的一个引脚上,由于外部因素导致了一个电平的变化(比如由高变低),而通过捕获这个变化,单片机内部运行的程序就会被暂时打断,转而去执行相应的中断处理程序,执行完又回到原来中断的地方继续执行原来的程序。
哪些引脚能作为外部中断口?
引脚带有INTX标识的 如:INT0,INT1,INT2,INT3,INT4
3、外部中断的用法
外部中断0:
IT0
IE0
EX0
EA
外部中断1:
IT0
IE0
EX0
EA
外部中断X: X=2~4
INTxIF
EXn
EA
4、外部中断的程序
经过修改,纠正了几处错误,现在编译通过。
页:
[1]
2