找回密码
 立即注册
查看: 121|回复: 8

学习打卡

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:35
  • 最近打卡:2025-09-21 11:49:29
已绑定手机

2

主题

24

回帖

198

积分

注册会员

积分
198
发表于 2025-9-12 18:16:29 | 显示全部楼层 |阅读模式
最近学校也开始了单片机的课程,准备在这里深入学习一下,先开个帖子,之后发表学习感悟。
回复

使用道具 举报 送花

3

主题

1928

回帖

704

积分

等待验证会员

积分
704
发表于 2025-9-12 18:18:00 | 显示全部楼层
你好!欢迎开启单片机学习之旅。作为一名国芯人工智能助手,我非常乐意陪伴你一起探索这一充满魅力的嵌入式世界。单片机作为现代电子系统的重要基础,广泛应用于工业控制、智能家电、物联网、汽车电子等众多领域,掌握其原理与应用对于电子工程、自动化、计算机等相关专业的同学来说,具有重要意义。

本帖将作为你学习过程中的一个记录与交流平台,后续你可以在这里分享学习心得、遇到的问题、调试经验以及项目成果。为了帮助你更好地入门,以下是一些关于单片机学习的建议和方向,供你参考:

一、明确学习目标与方向

在开始学习之前,建议你明确自己的学习目标:
是为了课程学习、实验项目,还是为了参加比赛、开发个人作品?
是想掌握某一类单片机(如51、STM32、AVR、MSP430等),还是想了解通用原理?
是否打算结合硬件与软件,进行系统级开发?

根据目标选择合适的学习路径,可以提高效率,避免盲目学习。

二、推荐学习路线

1. 基础知识准备
数字电路基础:了解逻辑门、触发器、寄存器、计数器等基本概念。
C语言编程:掌握基本语法、指针、结构体、位操作等,这是单片机开发的主要语言。
微机原理:了解计算机体系结构、内存、地址、中断等基本概念。

2. 单片机入门
选择一款主流单片机平台:如ST公司的STM32系列,或国产芯驰、兆易创新等品牌,适合教学和项目开发。
熟悉开发环境:如Keil、IAR、STM32CubeIDE、Keil MDK等。
学习基本外设:GPIO、定时器、中断、串口通信(UART)、ADC/DAC、SPI/I2C等。

3. 实践与项目
从点亮LED开始,逐步实现按键控制、数码管显示、LCD显示、PWM控制电机等。
尝试小型项目:如电子钟、温度采集系统、红外遥控解码、蓝牙通信等。
结合传感器与通信模块:如DHT11温湿度传感器、ESP8266 WiFi模块等,提升系统集成能力。

4. 深入理解底层原理
寄存器配置:理解数据手册,学会直接操作寄存器。
中断系统与DMA:掌握中断嵌套、中断优先级、DMA传输等高级功能。
RTOS基础:了解实时操作系统(如FreeRTOS)的基本概念与应用。

三、推荐学习资源
教材推荐:
《单片机原理与应用》(张毅刚)
《STM32嵌入式微控制器实战教程》
《ARM Cortex-M3与STM32系列单片机原理及应用》
视频课程:
B站、慕课网、网易云课堂上有很多优质的单片机教学视频。
推荐关注“正点原子”、“野火”、“原子哥”等UP主的STM32系列教程。
开发板与工具:
推荐使用STM32F103C8T6最小系统板(俗称“蓝pill”)入门。
搭配ST-Link仿真器或使用板载串口下载程序。
学会使用示波器、逻辑分析仪等调试工具。

四、学习建议与注意事项

1. 动手为主,理论为辅:单片机是一门实践性极强的学科,建议边学边做。
2. 善用数据手册:学会查阅官方文档,理解芯片的每一个寄存器功能。
3. 记录与总结:养成写学习笔记、调试日志的好习惯,有助于查漏补缺。
4. 加入学习社群:可以加入QQ群、微信群、论坛(如CSDN、电子发烧友、开源社区)交流经验。
5. 保持耐心与兴趣:遇到问题不要急躁,多思考、多尝试,逐步积累信心。

五、结语

单片机学习是一个循序渐进、由浅入深的过程。希望你在这个过程中保持热情,不断探索,逐步建立起完整的嵌入式系统知识体系。未来,无论是走向嵌入式开发、物联网、智能硬件,还是深入到芯片设计与国产替代领域,这段学习经历都将为你打下坚实的基础。

欢迎你持续在本帖分享学习进展、心得体会或项目经验,我会一直在这里为你提供支持与解答。祝你学习顺利,早日成为嵌入式领域的高手!

如需具体问题解答、代码示例、电路设计建议等,请随时告诉我。

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:35
  • 最近打卡:2025-09-21 11:49:29
已绑定手机

2

主题

24

回帖

198

积分

注册会员

积分
198
发表于 2025-9-12 18:47:16 | 显示全部楼层
第一节课主要讲的是单片机的功能和用途。简单来说,单片机就是一块小芯片,把 CPU、内存、I/O 接口、定时器、中断系统这些东西都集成到一块硅片里,相当于一台小型计算机,只是功能精简了一些。在工业控制领域用得特别多。

它能做的事情其实挺多的,比如可以写程序进去,让它去采集电压信号,计时、计数,做数学运算和逻辑运算,顺序执行动作,还能和外部设备通信。说白了,它能干计算机能干的一些基础活儿,但是成本更低,更适合做专门的控制任务。

用途上也非常广,像仪器仪表(电压表、电流表、频率计)、工厂流水线、电梯控制、家电(冰箱、洗衣机、空调)、医疗设备,甚至航空航天都有它的身影。在网络和通信方面,比如手机、平板、电脑、列车通信系统里也能找到单片机的应用。

从发展来看,单片机最早是在上世纪 80 年代,刚开始是 4 位、8 位的,后来发展到现在能跑 300MHz 的高速单片机。发展方向主要集中在三个点:CPU 处理能力要更强,外设集成度要更高,同时功耗还要更低。现在很多以前需要外接的模块都被直接做到芯片里面去了,所以硬件部分越来越省事,工程师更多精力转向软件设计。未来的趋势就是 SoC,也就是片上系统化。

至于具体的类型,常见的有 8051 和 ARM 两种。8051 算是老牌的 8 位单片机,速度比较慢,每个机器周期要 12 个时钟,但胜在便宜、够用,常见的通信协议像 UART、I2C、SPI 都支持。ARM 就先进很多了,大多数是 32 位的,甚至有 64 位的,每个机器周期只要 1 个时钟,速度快,协议支持更多,功耗也更低,代表系列有 ARMv4 到 Cortex 这些。两者比起来,8051 就是传统、便宜、简单,ARM 就是现代、性能强、功能多。

总结一下,单片机其实就是一台小电脑,重点是低成本、适应性强,用在各种需要自动化和控制的地方。随着技术发展,它越来越集成化、功耗更低,也更智能化。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:35
  • 最近打卡:2025-09-21 11:49:29
已绑定手机

2

主题

24

回帖

198

积分

注册会员

积分
198
发表于 2025-9-12 20:36:58 | 显示全部楼层
这节课主要讲的是学习板的特点和硬件资源。这块板子已经板载了学习单片机常用的资源,比如下载电路、用户按键、用户 LED 灯,还有常用传感器的接口,所以我们可以很方便地接入各种传感器来做实验。

主控芯片用的是 STC32G12K128。板子上集成了不少外设,比如红外发射和接收(像电视遥控器那样),电压比较电路,数码管(可以用来显示温度、时间等信息),以及普通的 LED 灯。除了这些,还有一些专门的传感器接口:NTC 热敏电阻测温,特点是比较稳定;DS18B20 数字温度传感器,只能测某一时刻的数值。

另外,板子还支持 ADC 按键、基准电压输入、PWM 模拟、24C02 存储芯片、LCD 接口、USB/232 接口、Flash 扩展、RS232 电路,以及调试接口等等。可以说它把我们学习单片机时最常用的模块都准备好了,既能直接用,也可以自己扩展。

这一节课的重点,其实就是带我们认识学习板的功能,让大家知道它有哪些资源、能做什么实验,以及不同元器件在实际应用中的作用。以后我们做实验和编程,就会更清楚该用哪一部分。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:42
  • 最近打卡:2025-09-30 11:14:42

16

主题

131

回帖

1148

积分

版主

积分
1148
发表于 2025-9-13 08:34:49 | 显示全部楼层
推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接

上面是 小李 演示:STC8H8K64U, printf_usb("Hello World !\r\n")及usb不停电下载@AiCube之图形化程序自动生成

上面是 小赵 演示:STC8H8K64U, printf_usb("Hello World !\r\n")及usb不停电下载@AiCube之图形化程序自动生成
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:35
  • 最近打卡:2025-09-21 11:49:29
已绑定手机

2

主题

24

回帖

198

积分

注册会员

积分
198
发表于 2025-9-13 12:57:45 | 显示全部楼层
这节课主要是学会了怎么点亮LED灯,我自己也写了程序跑了一下。首先是LED的点亮原理,高电平就是输出电压等于VCC,低电平就是输出电压等于GND(一般是0V),用1和0来表示。GPIO就是通用输入输出口,可以通过软件去读电平或者控制它的高低电平,比如P4就是一组GPIO口,P4.0就是其中的一个。

然后写了一个小程序,主要是配置寄存器,把P4和P6的模式设置好,再通过while循环不断给P40和P60输出低电平,就能让灯亮起来。

接着是下载用户代码到目标芯片里。用USB模式对STC单片机进行ISP下载时,需要把P3.2口接地再重新上电,步骤有点繁琐。不过STC单片机提供了一个特殊寄存器,只要往里面写0x60,就能软件复位到系统区,这样就能不停电直接下载,方便很多。

在新建工程的时候,需要先建空工程,再加上ISP生成的头文件,把代码写进去编译就行了。KeilC251的使用也有一些设置要注意,比如C/C++配置里选4个缩进,编码用GB2312;Option里Target要选XSmall和Large,Output选HEX-80。

ISP工具里也挺方便,有自动生成的头文件(选AI8051U,保存到目录里),I/O口配置工具可以批量定义IO口直接复制进代码,还能随时查引脚封装定义,甚至有范例程序可以参考,学习起来顺手多了。

sfr P4=0XC0;
      sfr P4M1=0XB3;
      sfr P4M0=0XB4;
      sfr P6=0XE8;
      sfr P6M1=0XCB;
      sfr P6M0=0XCC;
      sbit P40=P4^0;
      sbit P60=P6^0;
      void main()
      {
        P4M0=0X00;
        P4M1=0X00;
        P6M0=0X00;
        P6M1=0X00;
        while(1)
        {
           P40=0;
           P60=0;
         }
       }
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:35
  • 最近打卡:2025-09-21 11:49:29
已绑定手机

2

主题

24

回帖

198

积分

注册会员

积分
198
发表于 2025-9-13 18:49:19 | 显示全部楼层
这一节主要是学习了C语言的运算符和进制数,还自己写了个用按位或运算符点亮LED的小程序。

先看运算符,C语言里常用的有四大类:算术运算(加减乘除和取余),判断运算(大小比较、是否相等),逻辑运算(与、或、非),以及位运算(左移右移、按位与或、异或和取反)。这些在写单片机程序时特别常用。

进制转换也复习了一下。十进制、二进制和十六进制的对应关系,比如10在二进制里是1010,在十六进制就是A,15就是1111,对应十六进制的F。这样在调试程序、看寄存器或者设置端口的时候就更直观了。

另外还接触了C语言里printf函数在USB-CDC串口模式下的实现。步骤是先打开USB库里的PRINTF_HID宏定义,然后理解printf函数的用法,比如普通字符会直接输出,%s这种格式符要注意。打开ISP软件,把USB-CDC/串口模式选上,主频设成24M,再下载程序后电脑里会多出一个COM口(比如COM8),速度也能选不同的,其实本质上是USB。调试时还可以通过设置来决定要不要显示发送的数据。

这节课也顺带把C语言的基本数据类型和常用运算符梳理了一下,算是为后面写更复杂的程序打基础。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:35
  • 最近打卡:2025-09-21 11:49:29
已绑定手机

2

主题

24

回帖

198

积分

注册会员

积分
198
发表于 2025-9-14 10:36:47 | 显示全部楼层
今天主要学习了I/O输入输出的基本概念和应用。首先认识了GPIO,它有四种常见模式:准双向口、推挽输出、高阻输入和开漏模式,不同模式对应不同的电流特性和使用场景。判断电平时,还要结合施密特触发器的设置来理解,比如在3.3V电源下,大概在1V左右是高低电平的分界点。

然后做了几个按键输入检测的小任务。比如:按下P32按钮时灯亮、松开则灭;反过来按下灯灭、松开灯亮;再比如实现按一下灯亮,再按一下灯灭的循环。后面还做了进阶练习:一个按键控制灯亮和熄灭,或者通过不断按键让灯逐个点亮直到所有灯全亮,这就涉及到变量和加法、乘法的配合使用。程序里还用到了延时消抖的处理,避免因为按键抖动导致逻辑出错。

另外,这一集还结合了LED的闪烁和花式点灯效果。这里主要是用delay延时函数实现的。延时函数的本质就是让单片机在某个时间段内“停下来”,这样灯就会按照预定的节奏闪烁。不同单片机会有不同的实现方式,可以用硬件定时器,也可以用软件延时。学到这里,感觉自己还需要再多看看视频,加深理解。

课程里还顺带讲到了函数的用法,包括函数的定义、声明和调用。比如函数定义时要注意返回值类型和函数名,避免和关键字冲突;函数声明就是提前告诉编译器函数的形式;函数调用则是直接通过函数名和参数来执行。通过这些学习,我感觉编程要学会模块化,把功能拆分成函数,这样既清晰又方便复用。

总之,这一节把GPIO输入输出、按键检测、LED点灯和函数的使用串在一起,内容挺丰富的,我觉得只要多总结和反复练习,就能掌握得更牢
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:35
  • 最近打卡:2025-09-21 11:49:29
已绑定手机

2

主题

24

回帖

198

积分

注册会员

积分
198
发表于 2025-9-16 23:52:00 | 显示全部楼层
这一节主要学习了按键点灯。按键的原理其实很简单,就是两个引脚之间的通断。有些按键是按下后导通,有些则是按下后断开,所以在实际使用时,一定要先搞清楚所用按键的规格。

在处理按键时,最大的麻烦就是“抖动”。机械开关在触点闭合或断开的瞬间,并不会立刻稳定,而是会有一小段时间的抖动。如果不处理,程序就可能误判。解决办法有两种:一种是软件消抖,比如在程序里加延时,或者用状态机的方法来确保只有真正稳定的按键才触发操作;另一种是硬件消抖,比如在电路里加电容、电阻,延长信号的上升沿或下降沿,让抖动被平滑掉。另外,还可以通过选择质量更高、更稳定的按键元件,从根本上减少抖动问题。

代码部分,常见的做法就是先检测到按键被按下,再延时10ms,确认按键状态仍然是按下,才执行相应的功能。如果还要等按键松开再执行,可以在检测到按下后进入一个 while(KEY==0) 循环,等按键释放后再继续运行程序。除此之外,这节课里还提到了一些位移操作的用法,不过重点还是放在按键检测和去抖处理上。
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-3 13:00 , Processed in 0.118558 second(s), 86 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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