NAYEONyny 发表于 2025-3-4 11:50:58

32g学习贴,认真学习冲哥视频有感

进入大学的殿堂,我第一次接触到了单片机——51单片机。其貌不扬的板子,丰富的功能和插件,让我近距离感受到了现代技术的魅力。进行完了部分系统的51学习之后,听身边的人聊到了“51单片机太落后了...”,虽然心中怀揣着疑惑,我还是上网上搜索,发现了性能更强劲的32g。抱着认真学习获取知识的想法,我找到了冲哥的视频,并且选择在这里用短文的方式来记录我学习课程的总结

国芯人工智能 发表于 2025-3-4 11:53:00

在探索单片机领域的过程中,从51单片机到STC32G的进阶,体现了对技术深度与广度的追求。51单片机作为入门级芯片,其简洁的架构和丰富的资源为初学者提供了坚实的基础。然而,随着技术发展,STC32G以其更高的性能和更强大的功能,成为进阶学习的理想选择。通过系统学习冲哥的视频课程,不仅加深了对单片机原理的理解,更掌握了现代嵌入式系统的开发技巧。这种从基础到进阶的学习路径,不仅提升了技术能力,也为未来的创新应用奠定了坚实基础。

[本文内容由国芯人工智能辅助生成,仅供参考]

NAYEONyny 发表于 2025-3-4 11:57:18

第一集
在这一集里,冲哥用几个问题来引入课程,解答了包括我在内的众多初学者心中的疑惑。
1.51单片机虽然略显简略,但仍然有其自己的价值和不可替代之处
2.无论是否有基础,年龄大小,只要想尝试学习单片机,永远不算晚。
3.stc32g单片机的优势在于,能用较低的成本,提高办事效率,达到事半功倍的效果。
4.虽然很多课本都以汇编语言作为教学的基准,但c语言在应用方面已经在逐渐成为主流,被更多企业项目所运用认可。
5想要在单片机学习方面有所建树,一定要多练多学,不能只停留在听课,可以多刷刷电赛真题

NAYEONyny 发表于 2025-3-4 11:58:20

第二集
学习笔记:

课程名称:了解学习板硬件

课程内容:

学习板概述:图片中的学习板是基于STC32G型号单片机设计的,具有丰富的功能模块和接口,适用于多种项目开发。
主要功能模块:
红外发射与接收模块:用于红外遥控功能。
电压比较模块:用于电压监测和比较。
数码管显示模块:用于数字显示。
LED灯和万能板:用于实验和演示。
NTC测温模块(18B20):用于温度测量。
ADC按键模块:用于模拟信号采集。
独立按键和矩阵键盘:用于用户输入。
LCD接口:用于连接LCD显示屏。
USB接口:用于通信和供电。
FLASH扩展和RS232电路:用于数据存储和串口通信。
其他功能:学习板还具备蜂鸣器、PWM模拟、DAC输出、实时时钟(24C02)等功能,功能强大,扩展性强。
收获:通过本节课的学习,我对STC32G学习板的硬件组成和各模块功能有了初步了解,为后续深入学习打下了坚实基础。

NAYEONyny 发表于 2025-3-4 11:59:49

第三集


1. **开发环境搭建**
   - 安装**Keil MDK**:需注意安装路径避免中文,推荐使用MDK5版本,安装后需通过注册机激活(复制CID至注册机生成序列号)。
   - **器件支持包安装**:针对STM32G系列,需在Keil中安装对应的DFP(Device Family Pack)支持包,可通过在线安装或本地加载.pack文件完成。
   - **驱动配置**:使用ST-LINK下载器时,需安装对应驱动(如J-Link或ST-LINK驱动),确保设备管理器识别调试器。

2. **工程配置与程序下载**
   - 新建工程时选择STC32G对应型号,并配置启动文件、外设库及用户代码目录,需手动添加固件库文件(如CMSIS和标准外设库)。
   - 下载设置中需选择调试器类型(如ST-LINK),勾选“Reset after Connect”以自动复位,编译成功后通过“Load”按钮烧录程序至单片机。

**注意事项**
- 若使用USB转串口下载,需额外安装CH340等串口驱动。
- STC32G与F系列部分配置差异需参考数据手册,如时钟树配置或外设地址。

NAYEONyny 发表于 2025-3-4 12:01:47

第四集
控制单个引脚:
使用sbit关键字定义单独的引脚,例如:sbit P00 = P0^0; 用于选择P0.0引脚。
控制引脚输出电平:
通过直接赋值给引脚变量来控制输出电平,例如:P00 = 1; 输出低电平。
代码书写规范:
每行一句,使用大括号括起代码块(需要设置),缩进四格,确保注释完整。
注释符号:
单行注释使用//,多行注释使用/* */。
学习提示:
学会使用搜索功能(如Ctrl+F)快速定位代码中的特定部分,提高效率。
在课程的后半部分中:首先,我们需要了解STC32单片机的端口寄存器,包括PxM0、PxM1和Px,这些寄存器对于配置和控制端口非常重要。通过合理配置这些寄存器,我们可以控制LED的亮灭。

在课程中,我们还学习了sbit和#include的作用。sbit用于定义单个位操作,方便对端口位进行操作;#include用于包含头文件,使得我们可以使用标准库函数和寄存器定义,提高代码的可读性和可维护性。

此外,课程中提到了一些实用的编程技巧,例如实现自动下载工程和不断电下载的方法。通过USB模式ISP下载,我们可以在不停电的情况下将用户程序复位到系统区进行下载,大大方便了开发过程。最后,移植USB_CDC驱动也是课程中的一个重要环节,它使得我们可以通过USB进行通信,扩展了单片机的应用场景。
通过本课程的学习,我对STC32G系列单片机的开发环境配置和基本技能有了初步了解,特别是如何通过简单代码控制引脚点亮LED。这为后续学习更复杂的功能打下了基础。

NAYEONyny 发表于 2025-3-4 12:02:45

第五集

首先,视频开头讲解了C语言中`printf`函数的实现,包括如何打印数值、数字进制转换、常用运算符和数据基本类型。这些基础知识对后续学习非常重要,尤其是对初学者来说,理解这些概念是打下良好基础的关键。

接着,视频详细讲解了`printf`函数的实现,并通过示例代码展示了如何打印数值。这部分内容非常实用,通过实际操作可以加深对`printf`函数的理解。

在01:23,视频演示了如何在主函数中使用`printf`函数打印“Hello World”,并成功在串口显示。这一步骤对初学者非常有帮助,因为它不仅展示了基本的编程操作,还验证了开发环境的正确配置。

视频还讲解了`printf`函数中不同格式说明符的区别,例如`%u`只输出正数,`%d`可以输出正负数,`%f`用于输出浮点数。此外,`%.2f`可以保留两位小数,并会自动补零。这部分内容对掌握`printf`函数的高级用法非常有帮助。

在11:40,视频提到了不同操作系统中换行符的差异,如`\r\n`在Windows系统中表示回车换行,而在Unix和Mac系统中,`\n`表示换行,`\r`表示回车。这对于跨平台开发的程序员来说,是一个需要注意的细节。

随后,视频讲解了16进制数的表示方法,如以`0x`开头,以及16进制数的范围从0到f,其中f等于15,继续写为a到f。这部分内容对理解单片机中的数据表示方式非常重要。

在24:54,视频提到了二进制数的进位规则,即“逢二进一”,并讲解了如何快速将十进制数转换为二进制数,即每位乘以2的n次方再相加。这部分内容对理解二进制和十进制之间的转换非常有帮助。

视频详细讲解了二进制转十进制和十六进制的方法。通过修改二进制数,验证其值为251,并手动计算251除以16得到15.6875,对应十六进制的f。此外,还介绍了二进制转十六进制的方法,即四位二进制对应一位十六进制,例如7654转成f3210转成b。这部分内容对掌握不同进制之间的转换非常关键。我整理了一下这些学习笔记,主要是关于STC32G单片机的开发教程。
教程介绍了二进制与16进制的转换方法,并通过P4和P6端口控制LED,展示了这些转换在实际操作中的应用。接着,详细讲解了C语言中的基本运算符,如加减乘除、取余运算,以及位运算符的使用,通过示例验证了这些运算的正确性。
此外,还深入探讨了数据类型,特别是char和short int的取值范围及其重要性,强调了基础知识在单片机开发中的关键作用。通过实验观察和实际操作,进一步验证了左移操作、与运算和或运算的原理,以及二进制取反操作的结果。最后,通过发送数据验证了左移操作的正确性,确保了理论与实践的结合。我觉得这些内容对初学者非常有帮助,能够系统地了解STC32G单片机的基本操作和编程基础。

NAYEONyny 发表于 2025-3-4 12:05:16

第六集
第一部分讲的是STC32G单片机的LED闪烁功能实现,包括定义时钟频率和延时函数delay,以及变量定义和循环的使用。LED闪烁是单片机入门的经典项目,直观且容易上手。
第二部分重点介绍了循环语句的使用,特别是do-while和while循环的区别,强调了条件判断的重要性。循环和条件判断是编程的基础,理解它们的执行过程对后续的程序设计非常关键。
第三部分进一步讲解了循环语句的使用,包括循环变量的加减操作,以及--和--的区别,还简单介绍了延时的实现方法,为后续的精确延时内容做铺垫。循环变量的操作和延时函数的实现是单片机编程中常见的需求,掌握这些技巧可以更好地控制程序的执行流程。
此外,还提到了一些具体的编程技巧,比如u16数据类型的定义,#define和#define的区别,以及int变量的取值范围。这些细节在实际编程中非常重要,尤其是在资源有限的单片机上,合理选择数据类型和正确使用宏定义可以提高程序的效率和可读性。
关于do-while和while循环的执行过程,通过打印数字的例子展示了循环的控制效果。这些例子虽然简单,但能帮助我们更好地理解循环的工作原理。
最后,还有延时循环的测试,通过示例演示了如何使用ms进行延时控制,最终ms变为49。延时时间约为1ms,适合简单应用,但精确延时会在后续讲解。延时控制在单片机编程中很常见,尤其是在需要精确控制时间的场合,比如通信协议的实现。
视频详细介绍了函数的定义和调用。函数的基本结构包括返回值、函数名和入口参数,例如 void delay_ms(uint16_t pm1, uint16_t pm2)。函数名可以自由选择,但要避免与已有的关键词和函数名重复。函数的使用分为三步:定义、声明和调用。定义和声明需要包含返回值、函数名和入口参数,而调用时只需函数名和参数。
接着,视频讲解了循环的使用,特别推荐使用 while 循环,并通过实例演示了如何跳出循环。这让我想到,循环在单片机编程中非常重要,尤其是在需要等待某些条件满足时。
然后,视频强调了函数的定义、声明和调用的重要性,并通过实例演示了如何新建和调用 .c 和 .h 文件。在定义 .h 文件时,建议使用大写字母和下划线命名,以提高代码的可读性。在 .c 文件中,通过 if 语句判断来避免重复定义,同时使用预处理指令(如 #ifndef 和 #define)来防止重复定义。声明和定义函数时,.c 文件中定义,.h 文件中声明。通过添加引用路径和工程,可以引用 .h 文件,确保编译时没有错误和警告。
最后,作为课后作业,视频要求编写一个SOS求救灯光程序。这不仅是一个很好的练习,也是对所学知识的综合应用。通过这个练习,可以加深对函数定义、声明和调用的理解,同时也能提高编程能力。

NAYEONyny 发表于 2025-3-4 12:07:39

第七集
第一,主要讲解了按键的基本原理,包括按键的种类和通断状态,以及按键按下和松开时的电压变化。这部分还提到了按键消抖的概念,并演示了如何判断按键是否被按下,以及如何实现按键消抖。这部分内容对于理解按键的工作原理非常重要,尤其是消抖处理,这是实际应用中经常遇到的问题。
第二,通过代码示例展示了如何实现按键控制LED灯的亮灭。这里提到了通过取反操作来改变LED灯的状态,这让我想到可以利用简单的逻辑操作来控制硬件状态,非常实用。此外,还提到了通过加入延时和循环语句,实现了按一下按键,LED灯状态改变一次的效果。这说明了在编程中,延时和循环语句的合理使用可以实现很多有趣的功能。
第三,进一步解释了按键按下只执行一次的原因,并通过手机拍照和遥控器开机的例子,说明了这种设计的必要性。这让我意识到,在实际应用中,按键的响应方式需要根据具体需求来设计,以确保用户体验的流畅性和设备的稳定性。
第四,主要是通过代码分析,发现编写代码变得简单,心态接近成功。这部分内容让我感到很鼓舞,说明只要掌握了正确的方法,复杂的硬件编程也可以变得简单。

总结一下,这次学习让我对STC32G单片机的按键开发有了更深入的理解。从按键的基本原理到实际的代码实现,再到功能的优化和用户体验的考虑,每一步都非常重要。通过这次学习,我不仅掌握了按键控制LED灯的基本方法,还学会了如何通过编程技巧来优化功能,提高用户体验。这对我今后的单片机开发工作非常有帮助。

NAYEONyny 发表于 2025-3-4 12:08:45

第九集
首先,视频介绍了STC32G单片机视频教程的主要内容,重点在于认识数码管和控制原理。数码管由多个发光二极管组成,通过不同的段点亮方式可以显示0-9的数字。这部分内容让我对数码管的基本结构有了初步的了解。
接着,视频详细讲解了数码管的内部排布和供电方式,区分了共阳极和共阴极两种类型。通过定义数组实现数码管显示数字的方法,让我对如何用程序控制数码管有了更直观的认识。
然后,视频通过代码调试,展示了如何实现数码管显示0-9的循环以及按键控制加减功能。在调试过程中,遇到了一些问题,比如编译错误导致数码管显示异常。通过检查代码和变量命名,最终解决了问题,成功实现了数码管的正常显示和按键控制。这部分内容让我意识到,编程过程中细心和耐心的重要性。
最后,视频介绍了通过按键实现加和减功能,以及如何通过按键控制数码管显示数字并响铃,实现0-9循环及响铃次数对应的功能。这部分内容不仅涉及数码管的控制,还结合了声音输出,增加了项目的趣味性和实用性。
通过这次学习,我对STC32G单片机控制数码管的原理和方法有了更深入的理解。从数码管的基本结构到实际的代码实现,再到按键控制和声音输出,整个过程让我对单片机的应用有了更全面的认识。虽然过程中遇到了一些困难,但通过不断调试和优化,最终成功实现了预期的功能,这让我感到非常有成就感。
页: [1] 2
查看完整版本: 32g学习贴,认真学习冲哥视频有感