找回密码
 立即注册

32G12K128学习心得=====实验箱已安排发出

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:235
  • 最近打卡:2025-05-03 08:35:47

61

主题

818

回帖

1498

积分

金牌会员

积分
1498
发表于 2025-2-16 08:37:08 | 显示全部楼层
加油。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-03 10:42:54
已绑定手机

46

主题

1694

回帖

2548

积分

金牌会员

积分
2548
发表于 2025-2-16 08:43:45 | 显示全部楼层
加油加油
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-14 02:03:54
已绑定手机

1

主题

15

回帖

41

积分

新手上路

积分
41
发表于 2025-2-16 21:57:32 | 显示全部楼层
STC32G12K128学习心得 <十一>
冲哥的第十一集视频,讲述的内容是关于定时器的内容,学习完冲哥的教学视频,让我对定时器有了重新的认识,以下是我对定时器的理解与补充:
1. 定时器的基本概念
定时器是能够按照设定的时间间隔产生定时信号的模块,通常用于生成时间延迟、计时、事件触发等功能。
计数器则是对外部事件进行计数的模块,例如脉冲计数。
2. 工作原理
定时器一般通过系统的时钟频率(如晶体振荡器提供的时钟)进行计数。当计数到设定的值后,会触发定时器中断或输出信号。
3. 定时器的类型
8位定时器和16位定时器:根据定时器的位数,决定了其计数范围和精度。
可自由计数定时器:可以配置为增计数或减计数模式。
PWM定时器:用于生成脉冲宽度调制信号,广泛应用于电机控制和灯光调节。
4. 寄存器配置
定时器通常包括多个寄存器,用于设置计数值、模式、控制位等:
计数寄存器:保存当前计数值。
预分频器:用于调整计数频率。
控制寄存器:用于设置定时器的工作模式、启动和停止等。
5. 工作模式
单次模式:定时器计数到设定值后停止,并可能产生中断。
自动重载模式:计数到设定值后自动重置为初始值,继续计数。
6. 中断处理
定时器通常与中断功能结合使用,当定时器计数到设定值时,可以产生中断信号,触发相应的中断服务程序(ISR)来执行特定任务。
冲哥在视频教程中,用定时器做了一个秒表的实验,我跟随冲哥的视频,也完成了响应的实验代码的编写,代码如下:
void Timer1_init(void)
{
        TR1 = 0;    //停止计数

    #if (Timer1_Reload < 64)    // 如果用户设置值不合适, 则不启动定时器
        #error "Timer1设置的中断过快!"

    #elif ((Timer1_Reload/12) < 65536UL)    // 如果用户设置值不合适, 则不启动定时器
        ET1 = 1;    //允许中断
    //  PT1 = 1;    //高优先级中断
        TMOD &= ~0x30;
        TMOD |= (0 << 4);   //工作模式, 0: 16位自动重装, 1: 16位定时/计数, 2: 8位自动重装
    //  T1_CT = 1;  //计数
        T1_CT = 0;  //定时
    //  T1CLKO = 1; //输出时钟
        T1CLKO = 0; //不输出时钟

        #if (Timer1_Reload < 65536UL)
            T1x12 = 1;  //1T mode
            TH1 = (u8)((65536UL - Timer1_Reload) / 256);
            TL1 = (u8)((65536UL - Timer1_Reload) % 256);
        #else
            T1x12 = 0;  //12T mode
            TH1 = (u8)((65536UL - Timer1_Reload/12) / 256);
            TL1 = (u8)((65536UL - Timer1_Reload/12) % 256);
        #endif

        TR1 = 1;    //开始运行

    #else
        #error "Timer1设置的中断过慢!"
    #endif
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-14 02:03:54
已绑定手机

1

主题

15

回帖

41

积分

新手上路

积分
41
发表于 2025-2-16 22:05:49 | 显示全部楼层
STC32G12K128学习心得 <十二>
在十一集中,冲哥讲述了定时器定时的作用,我们在学习中知道,定时器还有一个作用就是计数的作用。在第十二集中,主要就讲述了定时器的计数的功能。
我通过冲哥的教学视频,对计数器的应用有了一定的掌握,我对定时器在计数器中的应用的理解如下:
STC32G单片机是一款基于8051内核的高性能单片机,在其应用中,定时器不仅可以用作计时器,还可以非常灵活地作为计数器使用。下面总结了STC32G单片机定时器应用于计数器的一些关键知识点:

1. 定时器/计数器基本概念
STC32G单片机具有多个定时器/计数器(如T0、T1),可以配置为定时器模式或计数器模式。
计数器是用来对外部事件(如脉冲信号)进行计数的模块。
2. 计数器模式
STC32G的定时器可以设置为计数模式,当计数器模式被选择时,计数器可以通过外部引脚(通常是T0或T1的引脚)接收脉冲信号进行计数。
在计数器模式中,定时器的计数寄存器会根据接收到的脉冲信号进行增计数。
3. 配置过程
设置相关寄存器:
TMOD寄存器:用来设置定时器工作模式。要将定时器设为计数器模式,需要将相应的位设置为1。
THx和TLx寄存器:可用来设置初始计数值。
IE和IP寄存器:配置中断使能和优先级,如果希望在计数器溢出时产生中断。
4. 外部中断触发
STC32G的定时器/计数器可以通过外部引脚(例如INT0或INT1)触发条件,设置为边沿触发,能够有效地对外部脉冲进行响应。
计数器可以设为边沿触发(升高或降低)或电平触发,具体取决于应用需求。
5. 溢出与中断
当计数器的值达到最大值(通常是255或65535,取决于定时器位数)后,会发生溢出。
溢出后,可以设置触发中断,允许程序执行特定操作(如读取当前计数值、清零计数器、进行数据处理等)。
6. 计数精度与范围
计数器的最大计数值取决于其位数,8位定时器最大计数为255,16位定时器最大计数为65535。
通过合理的预分频和外部信号频率设计,可以实现高精度、高频率的计数。
7. 应用实例
事件计数:监测外部事件如开关操作、物体经过传感器等,可以用于物体计数、流量计等应用。
频率测量:使用计数器在已知时间内计数外部脉冲,进而计算外部信号的频率。
脉冲宽度调制:将计数器与PWM功能结合,实现对外部设备的控制。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-14 02:03:54
已绑定手机

1

主题

15

回帖

41

积分

新手上路

积分
41
发表于 2025-2-16 22:34:00 | 显示全部楼层
STC32G12K128学习心得 <十三>
在前面的十二集中,主要学习了单片机的gpio和定时器,在十三集中,主要学习多任务的处理,这一集相对于其他几集,难度相对较高一点,所以,我在学习过程中,也花了比较多的时间去学习。
通过本节课,把之前所学的知识做了一个巩固,用模块化编程的方式,对代码进行管理。方便与后续项目的代码编写,只有进行分模块的编程,才能够更好的进行代码管理。
于STC32G单片机的定时器(TIM)多任务处理,我做了以下一些关键知识点的总结:

1. 定时器基本概念
定时器功能:STC32G单片机的定时器可以用于时间延迟、事件计时、PWM信号生成等多种功能。
工作模式:定时器通常有多种工作模式,如定时模式、计数模式等,用户可以根据需求选择合适的模式。
2. 多任务处理
任务调度:通过定时器中断实现多任务调度。定时器可以定期产生中断,触发不同任务的执行。
时间片轮转:可以使用时间片轮转的方法来管理多个任务,每个任务在定时器中断中运行一定的时间片。
3. 中断管理
中断优先级:STC32G支持中断优先级设置,确保高优先级任务能够及时响应。
中断服务程序:在定时器中断服务程序中,需清除中断标志位,以避免重复触发。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-14 02:03:54
已绑定手机

1

主题

15

回帖

41

积分

新手上路

积分
41
发表于 2025-2-16 22:43:32 | 显示全部楼层
STC32G12K128学习心得 <十四>
关于第十四节讲述的内容是关于矩阵键盘的内容,我之前在stm32中学过矩阵键盘,对矩阵键盘的原理与代码实现,具有一定的理解与掌握,在看完本节视频以后,我对矩阵键盘的理解更加透彻,以下是我对矩阵键盘的理解与总结:
1. 矩阵键盘的结构
组成:矩阵键盘通常由若干行和列组成,形成一个矩阵结构。每个按键连接到一行和一列。
按键识别:通过行和列的组合,可以唯一识别每个按键的状态。
2. 工作原理
扫描方式:单片机通过逐行或逐列扫描的方式检测按键。通常,单片机会将某一行设为低电平,同时读取其他行的状态。
按键检测:当某个按键被按下时,连接的行和列形成一个闭合电路,单片机可以检测到这一状态变化。
3. 硬件连接
引脚配置:根据矩阵的行列数,配置单片机的GPIO引脚。行引脚和列引脚需要正确连接到矩阵键盘的相应引脚。
电阻:在某些设计中,可能需要使用上拉或下拉电阻,以确保在未按键时引脚的状态稳定。
4. 软件实现
按键扫描程序:编写程序定期扫描矩阵键盘的行和列,检测按键状态。可以使用定时器中断来实现定时扫描。
去抖动处理:按键按下时可能会产生抖动,导致多次触发。可以通过软件延时或状态检测来消除抖动影响。
5. 应用实例
用户输入:矩阵键盘广泛应用于用户输入界面,如密码输入、菜单选择等。
控制功能:可以结合其他模块(如LED显示、蜂鸣器等)实现更复杂的控制功能。
以下代码,是我在stm32中矩阵键盘的主要代码:
uint8_t Matrx_Key_Scan(void)
{
        unsigned char i=0,j=0;
        for(i=0;i<Dimension;i++)
        {
                delay_ms(5);
                GPIO_ResetBits(Matrix_Key_Row[i].GPIO_x,Matrix_Key_Row[i].GPIO_pin);
                for(j=0;j<Dimension;j++)
                {
                        delay_ms(5);
                        if(GPIO_ReadInputDataBit(Matrix_Key_Col[j].GPIO_x,Matrix_Key_Col[j].GPIO_pin) == 0)  
                        {
                                Key[i][j] = 1;
                        }
                        else Key[i][j] = 0;
                }
                GPIO_SetBits(Matrix_Key_Row[i].GPIO_x,Matrix_Key_Row[i].GPIO_pin);
        }
        if(Key[0][0] == 1)       return 1;
        else if(Key[0][1] == 1)  return 2;
        else if(Key[0][2] == 1)  return 3;
        else if(Key[0][3] == 1)  return 4;
        else if(Key[1][0] == 1)  return 5;
        else if(Key[1][1] == 1)  return 6;
        else if(Key[1][2] == 1)  return 7;
        else if(Key[1][3] == 1)  return 8;
        else if(Key[2][0] == 1)  return 9;
        else if(Key[2][1] == 1)  return 10;
        else if(Key[2][2] == 1)  return 11;
        else if(Key[2][3] == 1)  return 12;
        else if(Key[3][0] == 1)  return 13;
        else if(Key[3][1] == 1)  return 14;
        else if(Key[3][2] == 1)  return 15;
        else if(Key[3][3] == 1)  return 16;       
        else return 0;       
}
这是通过库函数实现的矩阵键盘的扫描,在stc单片机中,矩阵键盘的扫描原理还是如此
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-14 02:03:54
已绑定手机

1

主题

15

回帖

41

积分

新手上路

积分
41
发表于 2025-2-16 22:52:14 | 显示全部楼层
STC32G12K128学习心得 <十五>
在十五节的视频中,主要学习的是关于外部中断的内容。同样,在stm32学习过程中已经学习了外部中断,所以在本次学习过程中,还算比较轻松。以下是我在学习了冲哥的外部中断视频以后,对外部中断内容的理解与总结:
1. 外部中断概述
定义:外部中断是由外部事件触发的中断信号,通常用于响应外部设备的状态变化,如按键、传感器信号等。
中断源:STC32G单片机支持多个外部中断源,通常包括INT0、INT1等。
2. 中断配置
引脚配置:外部中断引脚需要正确连接到外部信号源,通常为GPIO引脚。
中断触发方式:可以配置为边沿触发(上升沿或下降沿)或电平触发。选择合适的触发方式可以提高系统响应速度。
3. 中断服务程序(ISR)
ISR编写:需要编写中断服务程序来处理外部中断。在ISR中,通常会执行特定的任务,如读取传感器数据或更新状态。
中断优先级:STC32G支持中断优先级设置,确保高优先级的中断能够及时响应。
4. 中断管理
中断使能:在使用外部中断之前,需要使能相应的中断源。可以通过设置中断使能寄存器来实现。
中断标志位:在ISR中,需要清除中断标志位,以避免重复触发。
5. 应用实例
按键输入:外部中断常用于按键输入的检测,能够快速响应用户操作。
事件驱动:可以用于实现事件驱动的程序设计,如传感器数据采集、状态监测等。

我在平时的项目中,用外部中断主要用于按键输入,使得按键的检测更加的灵敏。我将继续保持学习,学习在学校中学不到的知识。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 22:19 , Processed in 0.114194 second(s), 85 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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