Published

- 10 min read

[学习笔记]从零开始的STM32学习笔记(1)

Thumbnail

STM32 学习笔记(1):开启嵌入式开发之旅

为什么选择 STM32?

相比 51 单片机,STM32 的学习曲线会更陡峭一些。如果你是初学者,建议你先学习 51 单片机,掌握一些基础知识,再来学习 STM32 会更加轻松。当然,教程中经常用 51 单片机来举例比较,帮助大家更好地理解。

课程简介:面包板搭建硬件平台

本套课程有以下几个特点:

  • STM32 最小系统板 + 面包板硬件平台: 我们将使用 STM32 最小系统板作为核心硬件,并插在面包板上进行电路的搭建。同时,我们会使用一块 0.96 寸的 OLED 显示屏作为调试和显示的工具,它可以实时显示程序中的变量,方便我们调试。和 51 单片机教程一样,我对这种小巧的显示屏情有独钟。当然,OLED 显示屏的驱动程序我会直接提供给大家,并且调用方法和参数定义与 51 单片机教程中的一致,方便大家快速上手。
  • 硬件连接方式: 除了最小系统板和 OLED 屏幕,我们还会用到 ST-Link 下载器(用于下载程序和供电)、LED、按键以及各种模块。ST-Link 连接到电脑,LED 和按键插在最小系统板两侧,其他带排针的模块(例如蜂鸣器模块)将跨接在面包板中间,然后使用杜邦线进行连接。

使用面包板的优点:

  • 可以灵活地搭建各种电路。
  • 连线和修改都非常方便。
  • 更深入地理解硬件电路原理。
  • 避免成品开发板引脚冲突、引脚无法更改等问题。

使用面包板的缺点:

  • 程序运行出现问题时,需要排查软件程序和硬件接线两方面的原因。

但是大家不用担心,我们这套课程使用的硬件都是一些小模块,整体电路非常简单,只要细心一些,接线问题很容易排查。

硬件设备:STM32 入门套件及常用工具

学习本套课程,你需要准备以下硬件设备:

  1. STM32 面包板入门套件: 套件包含的内容可以参考后续的“套件介绍”部分,虽然东西不多,但作为入门学习完全足够。
  2. Windows 电脑: 建议使用 Windows 系统的电脑,因为我们的编程软件和一些小工具都是基于 Windows 平台的。
  3. 工具: 万用表、示波器、镊子、剪刀等。
    • 万用表: 用于检查电路的连接情况,因为使用面包板搭建电路,可能会出现接错线或者接触不良的情况。
    • 示波器: 可以用来测量引脚的电压波形变化,在学习 PWM 或者通信协议时,观察波形对调试程序非常有帮助。当然,示波器价格相对较高,如果预算有限,也可以不准备,因为我们最终的实验现象都会在硬件电路上呈现。我目前使用的是一种插在电脑上使用的虚拟示波器,也可以使用实验室里的台式示波器或者逻辑分析仪,只要能观察波形即可。
    • 镊子、剪刀: 用于面包板插线,建议提前准备。

软件设备:Keil5 MDK

我们将使用 Keil5 MDK 软件进行 STM32 的开发。需要注意的是,Keil5 MDK 和 Keil5 C51 是两个不同的软件,分别用于 ARM 系列单片机和 51 系列单片机的编程。如果你电脑上已经安装了 Keil5 C51,仍然可以再安装一个 MDK,两者互不影响。如果你之前没有安装过 Keil 软件,直接安装 MDK 即可。关于软件的安装,我会在后面的课程中详细讲解。

套件介绍:丰富的模块,开启探索之旅

我们的 STM32 面包板入门套件包含以下内容(参考“课程简介”部分的第二张图片,从左上角开始,顺时针依次介绍):

  1. 面包板跳线(长): 这种跳线比较长,也方便挪动,适合经常挪动的接线情况。
  2. 面包板跳线(短): 这种跳线比较短,可以贴在面包板上插线,适合长时间固定连接的情况。
  3. 面包板: 用于搭建电路,其他模块和导线都插在面包板上完成连接。关于面包板的使用方法,我们后面会详细讲解。
  4. 杜邦线(公对母): 用于连接一些模块。
  5. 杜邦线(母对母): 用于连接一些模块。
  6. OLED 显示屏模块: 0.96 寸,用于显示参数和变量。这是一个四引脚版本的,网上也有七引脚版本的,购买时需要注意。
  7. STM32 最小系统板: 我们的主角,黑色的小芯片就是 STM32F103C8T6。
  8. LED 灯: 五颜六色的 LED 灯,用于点灯实验,让我们一起成为“点灯大师”!
  9. 按键: 我选择的是两引脚的小按键,可以跨接在面包板的引脚插孔和电源插孔之间,连接方便。
  10. 电位器: 蓝色的模块,主要用来进行 AD 转换实验。
  11. ST-Link 下载器: 用于下载程序和供电,粉色的模块。
  12. USB 转串口模块: 用于 STM32 和电脑进行串口通信。
  13. 有源蜂鸣器模块: 黑色的小模块,内置震荡源,接上电就可以响,使用方便。

传感器模块(从左到右):

  1. 光敏电阻模块: 有四个引脚,两个用于供电,另外两个是光敏电阻信号的模拟输出和数字输出,可以用来进行 IO 读取实验或者 AD 实验。
  2. 热敏电阻模块: 同样有模拟输出和数字输出。
  3. 对射式红外模块: 配合遮光片可以用来计次,配合编码盘可以用来测速。
  4. 反射式红外模块: 可以向地面发射红外光,并接收地面反射的红外光,通过判断接收光的强度来识别地面颜色变化,常用于巡迹小车。

其他模块:

  1. W25Q64 Flash 存储模块: 可以存储数据,使用 SPI 总线进行通信,我们主要用它来学习 SPI 通信。
  2. MPU6050 陀螺仪和加速度计: 可以测量芯片自身的姿态,常用于四轴飞行器等设备,使用 I2C 总线进行通信,我们主要用它来学习 I2C 通信。
  3. 旋转编码器: 可以输出两路正交的方波信号,用于指示旋转的方向和速度。STM32 内部有专门的编码器电路可以方便地识别这种信号。我们可以用它来模拟编码电机的测速,因为编码电机通常配备霍尔传感器或光电传感器,它们的输出和旋转编码器类似。旋转编码器可以直接插在面包板上,使用方便且价格便宜。
  4. 直流电机和 TB6612 电机驱动模块: 用于直流电机的 PWM 调速实验。
  5. SG90 舵机: 使用 PWM 进行控制,它的输出端可以根据 PWM 信号的占空比固定在某个角度上,常用于机器人或机械臂的关节。

总结

本期,我们主要对 STM32 的学习进行了初步的介绍,包括课程简介、软硬件设备、套件内容等。希望大家能够对 STM32 的学习有一个初步的认识,并准备好相关的软硬件环境。

在接下来的笔记中,我们将一起深入学习 STM32 的各个模块,并动手实践,构建各种有趣的项目。让我们一起开启 STM32 的学习之旅吧!