找回密码
 立即注册
查看: 3897|回复: 17

学习冲哥的视频课程观后感

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:494
  • 最近打卡:2025-05-03 08:27:45

4

主题

27

回帖

861

积分

高级会员

积分
861
发表于 2023-8-19 16:20:58 | 显示全部楼层 |阅读模式
8月19日 冲哥 STC MCU研讨会—USB 观后感及自己实验记录:

1.USB-CDC虚拟串口应用

  ① USB库文件下载和工程搭建

        1.库文件下载(下载官网:https://stcai.com/khs

          下载库文件.png

        2.将解压出来的库文件复制过来

          解压到库文件.png

        3.KEIL新建工程并选择STC的单片机,并在工程目录保存头文件

          保存头文件.png

        4.新建main.c文件,增加USB初始化代码

          新建main.c文件.png

         5.添加文件到工程里

          添加到工程.png

        6.设置工程选项(Target,Output,L251 Misc)

          设置.png

       7.使用最新的STC-ISP软件下载程序

          3合成.png

        8.下载完成后就会出现一个CDC串口 ---- 确实在Keil窗口出现了一个CDC串口 COM6

          COM6串口.png

        9.链接串口后即可实现串口数据发送和接受测试

          串口发送接收正常.png
              我自己在开发板试验 CDC串口发送接收 正常

        10.使用串口不停电下载!

        1)打开 "收到用户命令后复位到ISP监控程序区"的选项卡

        2)勾选 "使用默认的内部自定义命令“STCISP#”"

        3)勾选 "下次使用STC-HID接口进行ISP下载"

        4)勾选 "每次下载前都先发送自定义命令"

        5)点击下载

          6.png
        按照老师讲的 一步一步 操作下来,果然可以做到 不停电下载,比较方便调试。

------------ 后边 跟着冲哥的课继续学习-----



[size=1.5em]下载



回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:494
  • 最近打卡:2025-05-03 08:27:45

4

主题

27

回帖

861

积分

高级会员

积分
861
发表于 2023-8-20 15:47:01 | 显示全部楼层
本帖最后由 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闪烁.png
      根据 屠龙刀开发板 原理图,LED 接 P20~P27,没有晶体管,P40口暂时不用。


          led亮.png
      板子上P20和P27连接的LED闪烁正常(图片看不出 闪烁效果)


2. while 与 do while 的区别

          while语法分析.png
        通过这一段的学习,明白了 while 与 do while 的区别


3.分析 屠龙刀 的原理图 ,看到设计人员做的这个断电装置挺有意思:

          供电断电原理图.png
利用一支轻触开关和一个PNP晶体管,通过开关控制晶体管基极的高低电平,来达到晶体管的导通/截至,从而使集电极
输出或不输出,实现了正常供电和断电的作用。虽然是一个简单的装置,体现了设计人员的巧妙构思。值得学习和借鉴。



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:494
  • 最近打卡:2025-05-03 08:27:45

4

主题

27

回帖

861

积分

高级会员

积分
861
发表于 2023-8-21 10:57:13 | 显示全部楼层
本帖最后由 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 串口助手窗口观察 也是正常。


       0821-串口显示.png    




回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:494
  • 最近打卡:2025-05-03 08:27:45

4

主题

27

回帖

861

积分

高级会员

积分
861
发表于 2023-8-22 09:09:07 | 显示全部楼层
8月22日 继续跟着冲哥的视频课 学习 ---- 蜂鸣器:


1. 蜂鸣器  控制原理  


          蜂鸣器原理.png
        分析该电路原理图 可知 驱动采用一支PNP晶体管,当给晶体管基极输入高电平时,晶体管截止;给晶体管基极输入低电平时,晶体管导通。晶体管基极连接CPU的P5.4端口。

        P5.4引脚输出高电平 关闭 ; P5.4引脚输出低电平 打开。

        
          蜂鸣器代码.png
        因为没有蜂鸣器,用P21引脚的LED灯 亮灭来代替,模拟蜂鸣器。
        下载到屠龙刀板子上,实验结果:按一下P3.2按键,P2.1的LED亮;再按一下P3.2按键,LED熄灭。

          LED亮灭.png
        LED 亮灭状况对比,模拟蜂鸣器的打开与关闭。


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:494
  • 最近打卡:2025-05-03 08:27:45

4

主题

27

回帖

861

积分

高级会员

积分
861
发表于 2023-8-22 17:08:39 | 显示全部楼层
0822下  学习   #define 和 typedef 用法和区别:

1.表示方法  #define  [标识符]  [被标识符表示的字符串]    可以理解为文本替换

表示实例  #deline   ON  1                   //共阴LED,  高电平点亮
               #define  OFF 0                   //共阴LED,低电平熄灭

等同于     LED  =  ON;  ---> LED = 1;
               LED =  OFF; ---> LED = 0;


2.表示方法  typedef [数据类型]  [字符串]

表示实例  typedef  unsigned char u8;       //unsigned char     类型 用 u8   表示
               typedef  unsigned int u16;       //unsigned int      类型 用 u16 表示
               typedef  unsigned long int u32;  //unsigned long int 类型 用 u32 表示

   等同于     u8 i;        //unsigned char 类型变量  i
                 u16 j;       //unsigned int   类型变量  j
                 u32 k;       //unsigned long int 类型变量 k

          共阳LED亮.png
          点亮 P2.0~P2.7 的LED,下载到板子上实验 正常。


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:494
  • 最近打卡:2025-05-03 08:27:45

4

主题

27

回帖

861

积分

高级会员

积分
861
发表于 2023-8-23 16:23:29 | 显示全部楼层
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。

          定时器TM0D.png

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.


          定时器分频12.png

2.3、定时器的工作模式


          定时器模式选择.png


2.4、定时器设置


          定时器设置.png


2.5、中断



        EA: 总中断允许控制位。EA的作用是使中断允许形成多级控制,即各中断源首先受EA控制,其次受各中断源自己的中断允许控制位控制。
        ET0:定时器/计数器T0的溢出中断允许位。
                 0:禁止T0中断
                 1:允许TO中断




3.定时器的简单应用      


          定时器计算.png

4.定时器的快速使用方法



          定时器的快速使用.png
        通过实践,STC-ISP 自带的这个定时器计算器比较方便





回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:494
  • 最近打卡:2025-05-03 08:27:45

4

主题

27

回帖

861

积分

高级会员

积分
861
发表于 2023-8-24 10:48:24 | 显示全部楼层
8月24日 数码管

1.认识数码管

        每一支数码管都是由七段LED组成,通过控制不同段的显示,达到显示数字和字母。(A、B、C、D、E、F、G;如果有小数点,增加DP)
        多支数码管组合起来,就需要有位控制,通过控制位的高低电平,即可实现只显示需要位的数码管亮起。
   
          数码管图1.png
2.控制原理

        由原理图得知:位的控制电流比较大,所以在每一位控制端需要增加一支PNP晶体管做驱动,这样MCU的PIO端口输出的控制信号(高低电平),接到晶体管基极,再由集电极输出到各个位控制端(COM)。
   
          数码管2.png

3.数码管的动态显示

        要实现多位数码管的同时显示,就需要采用动态显示。实际上是利用人眼的延迟,设置数码管的延迟时间不能太短也不能太长。
        具体的控制流程如图所示:


          数码管图3.png

      其中需要注意,我们这边程序就以1ms为准,且需要保证总共一个循环结束的时间不能大于20ms,因为人眼的视觉不容易分辨出50HZ以上的动态刷新。




回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:494
  • 最近打卡:2025-05-03 08:27:45

4

主题

27

回帖

861

积分

高级会员

积分
861
发表于 2023-8-24 15:54:45 | 显示全部楼层
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个目录:



          TIM多任务1.png
9)分别在4个目录下创建 各自的 .c 和 .h 文件:



          TIM多任务2.png



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:494
  • 最近打卡:2025-05-03 08:27:45

4

主题

27

回帖

861

积分

高级会员

积分
861
发表于 2023-8-25 11:17:37 | 显示全部楼层
8月25日  矩阵按键

    1.在按键数量较多时,为了减少I/O口的占用,将按键排列成矩阵排列的形式,我们称为矩阵按键。
    2.矩阵按键的控制原理如图:
          矩阵按键1.png

      第一步:现将P0.0~P0.3输出低电平,P0.6~P0.7输出高电平,如果有按键按下,按下的那一列的I/O就会变成低电平,就可以判断出哪一列按下了。
      第二步:现将P0.0~P0.3输出高电平,P0.6~P0.7输出低电平,如果有按键按下,按下的那一行的I/O就会变成低电平,就可以判断出哪一行按下了。
      第三步:行列组合一下就可以判断出是哪个按键按下了。

          矩阵按键2.png
                 按照老师讲的,写入程序中,编译通过。



         
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:494
  • 最近打卡:2025-05-03 08:27:45

4

主题

27

回帖

861

积分

高级会员

积分
861
发表于 2023-8-25 15:31:08 | 显示全部楼层
8月25日 下  学习冲哥视频课 观后感

1、中断和中断系统


1.1什么是中断
        中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。
        当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完后,再回到原来被中断的地方,继续原来的工作。这样的过程称为中断。



1.2什么是中断系统
        实现这种功能的部件称为中断系统,请示CPU中断的请求源称为中断源。中断系统一般允许多个中断源,当几个中断源同时向CPU请求中断,要求为它服务的时候,这就存在CPU优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求,即规定中断源有一个优先级别。




1.3中断系统的优点
        CPU总是先响应优先级别最高的中断请求。当CPU正在处理一个中断源请求的时候,发生了另外一个优先级别比它还高的中断源请求,CPU能够暂停对原理中断源的服务程序,转而去处理优先级别更高的中断请求源,处理完后,再回到原低级中断服务程序,这样的过程称为中断嵌套。
        每一个中断源可以用软件独立地控制为开中断或关中断状态。
        部分中断的优先级别均可用软件设置。

          中断源1.png


1.4中断次序

          中断次序2.png


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、外部中断的程序



          中断程序3.png
            经过修改,纠正了几处错误,现在编译通过。






回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 15:09 , Processed in 0.147309 second(s), 102 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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