STM32从零基础开始学习入门单片机和源码的路径

专栏目标:实现从零基础入门51单片机和STM32单片机,力求在玩好单片机的同时,能够了解一些计算机的基本概念,了解电路及其元器件的基本理论等。

☀️本专栏适合人群:适合想从零开始学习入门级单片机,并且有一定C语言基础的孩子。

专栏目标:从零开始接触51单片机和STM32单片机,努力在玩好单片机的同时了解计算机的一些基本概念和电路及其元件的基本理论。

⭐️专栏主要内容:主要学习STM32单片机的功能、各个模块、单片机的外设、驱动程序等,最后玩转单片机以及单片机的外设,全程手写代码处理,并实现我们想要实现的功能。

栏目说明:如果文章的知识点有错误,欢迎您随时在文章下面评论,我会尽快改正。 让我们一起学习,一起进步。

专栏首页:

本次学习过程参考:

STM3微控制器安装软件、各种资料和源代码的路径:

链接:#list/path=%2F

提取码:asdf

链接中压缩包的解压密码:32

本节是STM32单片机部分的第一节。 主要提供STM32的一些课程简介以及STM32单片机的简单介绍; 包括STM32介绍、ARM介绍、片上资源/外设、命名规则、系统结构和引脚。 定义、启动配置、最小系统电路等

文章目录

1.STM32课程简介

在STM32的学习过程中,会使用stm32最小系统板+面包板硬件平台进行学习和实践。 硬件平台如上图所示。 将STM32最小系统板(上图中的蓝色板)插入面包板作为基本硬件单元下方插入0.96英寸OLED(右下角黑色板)作为调试和显示屏幕。 调试程序时,可以将程序中的变量显示在该屏上,使调试更加方便; 右侧STLINK(紫色部分)插入电脑,用于下载程序和供电; 最上面一层是蜂鸣器模块;

使用面包板可以完成任意电路的连接,接线和修改都非常方便。 相比成品开发板方式,使用面包板更有利于我们学习硬件电路,也可以避免开发板出现一些问题。 例如引脚冲突、引脚无法更改等;

当然,使用面包板也会带来一些问题。 例如,如果程序在现场无法运行,可能不仅是程序的问题,还可能是接线的问题。 这就要求我们在连接的时候要更加小心; 注意软件。 编程时还应注意硬件电路;

硬件设备:

软件设备:

这次我使用Keil5 MDK这个软件来学习STM32。 Keil5 SDK用于对ARM系列微控制器进行编程。

套件介绍

中间的白色部分是面包板,左边的盒子是面包板专用的跳线。 这种跳线比较短,可以贴在面包板上进行插拔,比较适合长期插拔。 最上面的一个用于面包板。 板子的飞线比较长,方便移动,比较适合经常移动的接线场合; 飞线下面两排是杜邦线,有公对母、母对母的,可以用来插一些电路。 模块;

蓝色部分是STM32最小系统板。 板子中间的黑色小模块是STM32芯片。 我们主要研究这个小芯片。 STM32最小系统板的右侧是一块0.96英寸的OLED显示模块,用于显示参数和变量。 ,此显示器为 4 针版本。 现在网上有4针和7针版本出售。 最重要的是不要犯错误;

图中右上角是电位器,主要用于AD转换测试; 电位器下面是一个按钮,一个有两个引脚的小按钮,可以正好连接在面包板的引脚插孔和电源插孔之间。 ,插拔非常方便、整齐,如下图:

彩色的是LED灯; 左边紫色部分是STLINK,用于下载程序并提供电源; STLINK下面是USB转串口模块。 使用该模块,可以实现STM32与电脑之间的串口通信;

有源蜂鸣器模块内置振荡源,接通电源即可发声。 相比于无源蜂鸣器模块需要不断反转IO口的工作模式,有源蜂鸣器模块就方便多了。 基本上就可以开灯了。 就这么简单;

右边四个是传感器模块,第一个是光敏电阻模块,下面四个引脚中两个用于供电,另外两个是光敏信号的模拟输出和数字输出,可用于IO端口读实验或AD测试; 第二个是热敏电阻模块,同样有模拟输出和数字输出; 第三种是对射式红外模块,该模块可以与遮光罩配合使用来计数次数,或者与编码盘配合使用来测量速度; 第四种是反射式红外模块,它可以向地面发射红外光,然后用红外接收管接收地面反射回来的红外光。 通过判断接收到的光线强度,可以大致识别出地面。 颜色发生变化;

W25Q64 Flash存储器模块,可以存储数据并使用SPI总线进行通信,我们主要用它来学习SPI通信;

MPU6050陀螺仪和加速度计,可以测量芯片本身的姿态。 与四轴飞行器一样,它通常配备陀螺仪和加速度计。 它使用 I2C 总线进行通信。 我们主要用它来学习I2C通信;

旋转编码器,可以输出两个正交的方波信号来指示旋转方向和速度。 STM32中有专用的编码器电路,可以很方便地识别这个信号。 该模块可用作快速阅读器 使用按钮。 当然,本节主要用它来模拟编码器的测速。 现在的编码电机一般都配备有工作传感器或光电传感器。 这些传感器的输出与旋转编码器相同,因此请了解旋转。 一个编码器就足够了; 而且这种旋转编码器更容易插入面包板并且更便宜;

直流电机和TB6612电机驱动模块可用于进行直流电机的PWM调速实验;

SG90舵机也是采用PWM控制。 它的输出可以像舵一样。 根据我们给出的PWM信号的占空比固定在一定的角度。 它可以用来制作一些机器人或机械臂的关节。 ;

2.STM32简介 2.1 STM32简介

ST表示ST公司,M是Microcontroller的首字母; 微控制器就是MCU,也就是我们常说的单片机,​​所以STM32也是单片机; 32表示这是一台32位的单片机。 与8位51单片机相比,STM32的性能还是很强的。 当然,ST也推出了名为STM8的8位微控制器。 只要明白这一点;

这个ARM Cortex-M内核是STM32的核心部分; 该核由ARM设计,在STM32中占有极其重要的地位; 比如我们程序指令的执行,加、减、乘、除运算都是在核心完成的; 相当于整个芯片的CPU;

如图所示,目前STM32主要有四个系列,分别是高性能系列(High Performance)、主流系列(Mainstream)、超低功耗系列(Ultra-low power series)和无线系列(Wireless); 每个系列对应不同的产品;

例如:

以上是目前STM家族中的所有系列; 可以看出这个系列是比较完整的; 我们研究的是主流系列; 当然,如果你觉得性能不够,可以继续学习高性能系列; 如果你对功耗比较敏感的话,还可以了解一下低功耗系列; 如果你想做无线通讯产品,可以了解无线系列; 因为它们都是同一个家族的,所以换成其他系列会比换成其他芯片容易得多。 ;

2.2 ARM简介

本次学习过程中我们使用的STM32型号为STM32F103C8T6,如上图右侧所示; 根据其型号和前面的介绍对应,我们已经知道它是STM32F1的主流系列,核心是ARM Cortex-M3,主频72MHz,RAM大小20K,ROM大小64K 。 这里的RAM是运行内存,实际存储介质是SRAM; 这里的ROM是程序存储器,实际存储介质是Flash闪存。 ; 其供电电压为2.0~3.6V,标准为3.3V供电; 这里需要注意的是,我们之前学习的51单片机使用5V供电,USB输出电压也是5V,而5V不在STM32的供电范围内,所以不能直接给STM32供电; 如果STM32采用5V电压供电,中间需要加一个稳压芯片,将电压降到3.3V,然后给STM32供电; 它的封装是L QFP48,也就是上图中那种比较小的封装,总共48个引脚。

2.3 片上资源/外设

我们先来看看这款芯片上的片内资源。 片内资源也称为外设,英文为Peripheral。 上表列出了STM32F1系列的外设资源。 我们主要研究的是STM32的外设; 它们是通过程序配置的。 外设来实现我们想要的功能。

上表中,前两个深绿色的是位于Cortex-M3内核内部的外设,其余的是内核外部的外设。

接下来我们就来一一看看这些外设的作用:

以上是对STM32F1系列所有外设的粗略介绍。 在后续的学习中,我们会经常和这些缩写打交道,所以我们应该提前熟悉这些字母的含义。 至于具体的功能,我们稍后再介绍; 另外,一定要注意,这些是整个STM32F1系列的所有外设,并不是所有型号都有所有外设; 例如我们的C8T6芯片就没有以下四种外设; 具体型号包括具体的外设,需要查看对应的数据表; 例如,打开C8T6数据手册,查看外设资源表:

可以看到,这个C8T6有64K闪存,20K SRAM,3个通用定时器,1个高级定时器,没有基本定时器; 2个SPI、2个I2C、3个UART、1个USB、1个CAN总线、37个IO口、2个10通道12位ADC; 对于本表中未出现的外设,需要确认是否存在; 如果你操作一个不存在的外设,那么它就无法工作;

2.4 命名规则

我们先来看看这款芯片的命名规则以及这款型号的各个字母和数字的含义; STM32代表基于ARM内核的32位微控制器; F代表普通型; 103代表增强型,当然除了增强型之外,还有一些基本型(101)、USB型(102)、互连型(105或107)等; C表示其引脚数为48引脚(T表示36引脚,R表示64引脚(V表示100引脚,Z表示144引脚)。一般来说,引脚数越多,外围设备就越多;8表示它的Flash存储器容量是64K,当然还有其他容量,你可以看看;T表示它的封装类型是LQFP;6表示它的温度范围是-40~85摄氏度;

这些是这个STM32的命名规则; 现在有一个比较常用的型号叫STM32F103RCT6。 根据上面的命名规则,我们可以知道这款RCT6的芯片是64引脚、256K Flash、LQFP封装,以及-40~85摄氏度等参数;以后看到STM32的其他型号时,可以也可以参考这个命名规则来了解它的大概参数。

2.5 系统结构

我们先来看看这款芯片的系统结构。 这个结构看起来比较复杂。 这个阶段不需要了解每一个部分,有一个大概的了解即可。 了解这个系统结构,有助于我们加深对STM32的理解,方便以后的发展。 学习; 我们可以把这个图分成四个部分,如下图所示:

左上角是Cortex-M3核心。 核心引出3条总线,分别是ICode指令总线、DCode数据总线、System系统总线;

ICode总线和DCode总线主要用于连接Flash存储器。 我们编写的程序存储在Flash中; ICode指令总线用于加载程序指令; DCode数据总线用于加载数据,例如常量和调试数据。 ;

内核除了ICode总线和DCode总线外,还引出System系统总线。 如上图所示,System总线连接的是这些其他的东西,比如SRAM,用于存储程序运行时的可变数据; 以及FSMC,该课程不会使用芯片;

下面的AHB系统总线用于挂接主要外设。 AHB表示高级高性能总线; 一般都是挂载最基本或者高性能的外设,比如复位、时钟控制等最基本的电路。 ,并且SDIO也挂载在AHB上;

AHB后面有两个桥,分别连接两条外设总线APB2和APB1; APB表示高级外设总线,用于连接通用外设,由于总线协议、总线速度以及数据传输格式的差异,所以中间需要添加两个桥来完成数据转换和缓存; AHB的综合性能高于APB; APB2的性能高于APB1,APB2一般与AHB频率相同,均为72MHz,APB1一般为36MHz; 所以APB2连接的是一般外设稍微重要的部分,比如GPIO口,以及一些外设的一号玩家; 如USART1、SPI1、TIM1、TIM8等; TIM8和TIM1一样,也是高级定时器,因此也是重要的外设。 还有ADC、EXTI、AFIO,也接APB2; 其他外设如2、3、4、5号,以及DAC/PWR/BKP等,这些都是次要外设,将分配给APB1。 当然,个人在使用时一般感觉不到APB2和APB1的性能差异; 他们只需要知道外设安装在哪个系统总线上。 就是这样。

右下角很大一部分主要是我们刚才介绍的外设的种类和分布;

左下角剩下的部分就是DMA。 这个DMA可以作为内核CPU的小秘书。 例如,如果有大量的数据传输工作,让CPU来做就浪费时间; 例如,我有一个外围 ADC 模数转换。 该模数转换可以配置为连续模式。 例如,每1ms转换一次。 转换后的数据必须转出,否则数据将被覆盖而丢失。 如果直接用CPU来做这项工作的话,那么CPU就要每隔1ms传输一次数据,这样就费时费力,影响CPU的正常工作; 而且这个工作只是简单的数据传输,不需要CPU来做; 于是小秘书DMA就出现了。 主要做一些简单重复的事情,比如数据传输。 DMA通过DMA总线连接到总线矩阵。 它可以具有与CPU相同的总线控制权来访问这些外围设备。 ,当需要DMA传输数据时,外设兄弟会通过请求线发送DMA请求,然后DMA获得总线控制权,访问并传输数据; 整个过程不需要CPU的参与,节省CPU时间。 做其他事情; 这就是 DMA 的用途。

至此,我们的整个系统结构图就大致清晰了;

2.6 引脚定义

引脚定义对于我们使用这个芯片来说还是非常重要的。 一般来说,当我们拿到一个新的芯片时,我们需要重点查看它的引脚定义。 有时读完引脚定义后,我们就可以大致知道如何使用这个芯片了,上图是江科大老师制作的STM32F103C8T6的引脚定义表; 我们以后开发STM32的时候会经常用到这个表; 您可以保存此图片以方便以后查看;

图上方白色部分为C8T6芯片的引脚号及引脚名称示意图; 左上角有一个小黑点,表示左边的引脚为1号引脚,然后逆时针排列,直到48个引脚; 下面的绿色表格显示了每个引脚的名称和功能; 在这里,作者用颜色标记了它们。 橙色的是电源相关的引脚,蓝色的是最小系统相关的引脚。 绿色的是IO口和功能口引脚;

首先是表头,前两列是引脚号和引脚名称,对应上面的芯片引脚; 然后是类型,S代表功率,I代表输入,O代表输出,IO代表输入输出; 然后IO口的电平代表IO口可以承受的电压; 在此栏中,如果有FT,则表示该引脚可以承受5V的电压,如果没有FT,则表示该引脚只能承受3.3V的电压; 如果没有FT,则需要连接电平为5V的情况,需要安装电平转换电路; main 功能是上电后的默认功能,一般与引脚名称相同。 如果不同,则引脚的实际功能是主功能而不是引脚名称。 功能; 默认复用功能是同时连接到IO口的外设功能引脚。 配置IO口时,可以选择通用IO口或者复用功能; 最后一个是重定义函数。 这样做的作用是,如果一个IO端口上同时复用了两个功能,但是你需要使用这两个功能,那么你可以将其中一个复用的功能映射到其他端口上。 当然,前提是这个重新定义的函数的表有对应的端口;

接下来我们看一下引脚定义:

2.7 启动配置

我们刚刚在2.6节介绍了BOOT0和BOOT1这两个引脚的功能。 这个启动配置的作用就是指定程序开始运行的位置。 正常情况下,程序在Flash程序存储器中开始执行; 但在某些情况下,我们也可以让程序在别处开始执行,以完成特殊的功能;

在STM32F10xxx中,可以通过配置BOOT0和BOOT1引脚来选择三种不同的启动模式;

最后还有下面一段话。 系统复位后,BOOT引脚的值将在SYSCLK的第四个上升沿被锁定。 用户可以通过设置BOOT1和BOOT0引脚的状态来选择复位后的启动模式。 ;这意味着BOOT引脚的值在上电复位后的一段时间内有效,之后可以随意更改。 在上一节的引脚定义中,我们可以看到BOOT1和PB2在同一个引脚上。 脚上的那个,也就是上电那一刻,就是BOOT1的功能。 第四个时钟过​​去后,就是PB2的功能;

以上时序是关于BOOT引脚的; 看完引脚定义和BOOT引脚的配置,我们大概对这款芯片的使用方法有了一个大概的了解了。

总结:在引脚定义表中,想要STM32正常工作,首先需要连接电源部分和最小系统部分的电路,也就是引脚定义表中的橙色和蓝色部分;

2.8 最小系统电路

一般来说,我们的单片机不能只用一颗芯片来工作。 我们需要将最基本的电路连接到它。 这些最基本的电路称为最小系统电路。

1.STM32及电源部分

如上图所示,右侧部分是STM32和电源部分; 我们可以看到这三个分区的主电源和模拟部分电源都连接到电源引脚,VSS连接到GND,VDD连接到3V3。 即3.3V; 在这个3.3V和GND之间,通常连接一个滤波电容。 这个电容可以保证电源电压的稳定性。 我们在设计电路的时候,通常会遇到电源的时候加上去。 滤波电容若干个; 当然,添加这个滤波电容也是非常有必要的。 大家在设计自己的电路时可以注意一下。

还剩下另一个VBAT,连接到备用电池。 如果需要连接备用电池,可以选择3V纽扣电池,正极接BVAT,负极接GND。 备用电池用于 RTC 和备用寄存器服务。 ; 如果不需要这些功能,不需要连接备用电池,那么这个VBAT可以直接接3.3V,也可以悬空;

以上就是整个电源部分。 可以说STM32的电源比较大,芯片周围都有电源引脚。 如果你自己画板,你就会对此有深刻的理解;

2、晶振部分

接下来我们看一下晶振电路。 上图是典型的晶振电路,中间接有8MHz主时钟晶振。 STM32的主晶振一般为8MHz。 8MHz乘以内部锁相环得到72MHZ。 主频,这个晶振的两个引脚通过这两个网络标号(OSC IN和OSC OUT)连接到STM32的5、6引脚。 另外,还需要连接两个20pF电容作为启动振荡器。 电容,电容的另一端可以接地。

这就是晶体振荡器电路。 如果需要RTC功能,则需要另外连接32.768KHz晶振。 电路与此相同。 它连接到引脚3和4。引脚3和4上标记的OSC32是32.768KHz晶体振荡器。 意义; 为什么使用32.768KHz? 因为32768是2的15次方,所以内部RTC电路除以2的15次方后可以产生1秒的时间信号。

3.复位电路部分

该复位电路由10K电阻和0.1uF电容组成,用于向单片机提供复位信号;

中间NRST连接STM32的7脚,NRST低电平复位; 当复位电路上电时,电容没有电,电源开始通过电阻给电容充电,此时电容就出现了。 处于短路状态,则NRST引脚将产生低电平; 当电容器逐渐充满电时,电容器相当于开路。 此时NRST会被R1上拉至高电平,上电瞬间的波形是先低电平,然后逐渐高电平。 该低电平可以提供STM32的上电复位信号; 当然,电容充电速度非常快,所以我们认为单片机在上电的那一刻就完成了复位。 ,这就是复位电路的作用;

手动复位:

电容器左侧还并联了一个按钮。 该按钮可以提供手动复位功能。 当我们按下按钮时,电容器放电,NRST引脚也通过按钮直接接地。 这相当于手动产生低电压。 电平复位信号; 松开按钮后,NRST恢复高电平,单片机由复位状态转入工作状态; 通常我们也可以看到这种复位按钮,通常设备上有一个小孔,当设备死机并且不方便断电重启时,我们可以用针去戳这个小孔里的按钮。孔并查看这是否会重置设备。 这就是手动复位功能。 按下按钮,程序将从头开始运行。

4. 开始配置

上图是启动配置。 H1相当于开关。 通过翻转此开关,您可以选择 BOOT 引脚连接到 3.3V 还是 GND。

在我们最小的系统板上,下图所示的跳线帽用作开关。 当跳帽插入左侧两个插脚时,相当于接地; 插入右边两个插脚时,相当于接3.3V; 这样就可以配置BOOT的高低电平了;

5.下载端口

如果我们使用STLINK下载程序,需要将SWDIO和SWCLK这两个引脚引出,方便接线。 另外,我们需要引出3.3V和GND。 这个GND必须引出。 如果你的板子自带电源,3.3V的话,就不用引用了,但是把建议全部引用起来更方便;

单片机

单片机单片机入门视频教程,单片机也能播放SD卡音乐

2024-5-12 11:05:35

单片机

51单片机最小系统,VCC端接正向5V电压,GND端接地

2024-5-12 12:06:58

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索