初识STM32

STM32的含义:

STM32的ST指的是ST公司,M是微控制器Microcontroller的首字母,微控制器就是MCU(单片机),32的意思是这是一个32位的单片机

STM32的核心:

STM32的内部的核心部分是ARM Cortex-M内核,这个内核是ARM公司设计的

内核的含义:

它相当于整个芯片的CPU,我们程序指令的执行,加减乘除的运算,都是在内核里完成的

STM32的简介

STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器

STM32主要的四个系列及其产品

1.高性能系列:STM32F2、F4、F7、H7等

2.主流系列:STM32F0、F1、F3等(后续我们用来学习的就是F1)

3.超低功耗系列:STM32L0、L1、L4、L5等

4.无线系列:STM32WL和STM32WB

ARM的介绍

ARM既指ARM公司,也指ARM处理器内核

ARM公司是全球领先的半导体知识产权提供商,ARM公司设计ARM内核,半导体厂商完善内核周边电路并生产芯片

ARM Cortex内核的三个系列

R系列和M系列:适用于嵌入式领域

A系列:适用于高端应用型领域(主要是手机芯片领域)

STM32F103C8T6(后续学习的类型)

系列:主流系列STM32F1

内核:ARM Cortex-M3

主频:72MHz

RAM(内存):20k(SPAM)

ROM(程序存储器):64K(Flash)

供电:2.0~3.6V(标准3.3V)

封装:LQFP48(48个引脚)

片上资源(外设)介绍

NVIC(嵌套向量中断控制器):用于管理中断的设备,比如配置中断优先级这些东西

SysTick(系统滴答定时器):主要用于给操作系统提供定时服务来进行任务切换的功能

上面两个是内核里的

下面这些是内核外的

RCC(复位和时钟控制):对系统的时钟进行配置,还有就是使能各模块的时钟。在STM32中,其它的外设在上电的情况下默认是没有时钟的,不给时钟的话,操作外设是无效的,目的是降低功耗,所以要使能它的时钟

GPIO(通用IO口)

AFIO(复用IO口):可以完成复用功能的重定义,还有中断端口的配置

EXTI(外部中断):当引脚有电平变化时,触发中断,让CPU来处理任务

TIM(定时器):分为三种类型:

1.高级定时器:不仅可以完成定时中断的任务,还可以测频率、生成PWM波形、配置成专业的编码器接口等功能

2.通用定时器

3.基本定时器

ADC(模电转换器):这个STM内置了12位的AD转换器,可以直接读取IO口的模拟电压值,无需外部链接AD芯片

DMA(直接内存访问):帮助CPU完成搬运大量数据的繁杂任务

USART(同步/异步串口通信)

12C(12C通信)和SPI(SPI通信):两种常用的通信协议,STM32内置了它们的控制器,可以用硬件来输出时序波形

CAN(CAN通信)和USB(USB通信):也是通信协议,CAN一般用于汽车领域

RTC(实时时钟):在STM32内部完成年月日、时分秒的计时功能,可以接外部备用电池

CRC(CRC校验):是一种数据的校验方式,用于判断数据的正确性

PWR(电源控制):可以让芯片进入睡眠模式等状态,达到省电的目的

BKP(备份寄存器):这是一段存储器,当系统掉电时仍可由备用电池保持数据,这个根据需要,可以完成一些特殊功能

IWDG(独立看门狗)和WWDG(窗口看门狗):当单片机因为电池干扰死机或者程序设计不合理出现死循环时,看门狗可以及时复位芯片,保证系统的稳定

DAC(数模转换器):可以在IO口直接输出模拟电压,是ADC模数转换的逆过程

SDIO(SD卡接口):用来读取SD卡

FSMC(可变静态存储控制器):用于扩展内存,或者配置成其它总线协议,用于某些硬件的操作

USB OTG(USB主机接口):用OTG功能,可以让STM32作为USB主机去读取其它USB设备

STM32F103C8T6的含义

STM32上面解释过了

F:通用类型

103:代表产品子系列是增强型

C:代表引脚数目是48脚(一般引脚越多,外设越多)

8:64K字节的闪存存储器

T:代表封装类型是LQFP

6:代表工业级温度范围,-40℃~85℃

了解一下系统结构

img

Flash:闪存,存储我们编写的程序

ICode:指令总线,连接闪存,用来加载程序指令

DCode:数据总线,用来加载数据

System:系统总线,连接到其它上,如SRAM(用于存储程序运行时的变量数据)

AHB系统总线:用于挂载主要的外设。AHB的意思是先进高性能总线,挂载的一般是最基本的或者性能比较高的外设,比如复位和时钟控制以及SDIO

APB:先进外设总线,用于一般的外设

桥接的作用:AHB和APB总线协议、总线速度、数据传送格式的差异,中间需要加两个桥接来完成数据的转换和转存

AHB的整体性能比APB高一些,APB2的性能又比APB1高一些,APB2的频率一般和AHP频率相同,都是72MHz,APB1一般是36MHz,所以APB2连接的都是一般外设中稍微重要的部分,如GPOI端口、UASRT1、SPI1、TIM1、TIM8、ADC、EXTI、AFIO

DMA:用来帮CPU做数据搬运这种简单且反复要干的事情,拥有和CPU一样的总线控制权,用于访问这些外设。当需要DMA搬运数据时,外设就会通过请求发送DMA请求,DMA就会获得总线控制权,访问并转运数据

引脚定义

想知道芯片怎么使用,着重看引脚定义

STM32F103C8T6的引脚定义表

img

img

红色的是电源相关的引脚

蓝色的是最小系统相关的引脚

绿色的是IO口、功能口这些引脚

类型:S代表电源,I代表输入,O代表输出,IO代表输入输出

I/O口电平代表IO口所能容忍的电压:有FT的代表能容忍5V的电压,没有的代表只能容忍3.3V的电压

主功能就是上电后默认的功能,一般和引脚名称相同,如果不同的话,引脚的实际功能是主功能而不是引脚名称的功能

默认复用功能是IO口上同时连接的外设功能引脚,在配置IO口的时候可以选择是通用IO口还是复用功能

重定义功能的作用是当有两个共用功能同时复用在了一个IO口上,而确实需要用到这两个功能,可以把其中一个复用功能重映射到其它端口上,前提是这个重定义功能的表里有对应的端口

STM32的启动配置

启动配置的作用就是指定程序开始运行的位置。一般情况下,程序都是在Flash程序存储器开始执行,但是我们也可以让程序在别的地方开始执行去完成特殊的功能

img

主闪存存储器启动模式:主闪存储器被选为启动区域,也就是正常执行Flash闪存里面的程序,最常用

系统存储器启动模式:用来做串口下载用的,这个系统存储器存的是STM32中的一段BootLoader程序,BootLoader程序的作用就是接收串口的数据,然后刷新到主闪存中

img

当图中五个调试端口全部被配置成了IO口时可使用这种启动模式救急

在你没有STLINK,也没有JLINK,也可以使用串口来进行下载程序

内置SRAM启动模式:主要用来进行程序调试

注意:BOOT引脚的值是在商店复位后的一瞬间有效的

img

如这个引脚定义中,BOOT1和PB2是在同一个引脚上的,上电的一瞬间是BOOT1的功能,四个时钟后就是PB2的功能了

最小系统电路

单片机只有一个芯片是无法正常工作的,我们需要为它来连接最基本的电路,这些最基本的电路就叫做最小系统电路

img

像图中C3这种叫滤波电容,这个电容可以保证供电电压的稳定

我的STM32的板子上已经画好了学习需要的最小系统电路,这个内容先不纠结

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐