初识STM32
初识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℃
了解一下系统结构

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的引脚定义表


红色的是电源相关的引脚
蓝色的是最小系统相关的引脚
绿色的是IO口、功能口这些引脚
类型:S代表电源,I代表输入,O代表输出,IO代表输入输出
I/O口电平代表IO口所能容忍的电压:有FT的代表能容忍5V的电压,没有的代表只能容忍3.3V的电压
主功能就是上电后默认的功能,一般和引脚名称相同,如果不同的话,引脚的实际功能是主功能而不是引脚名称的功能
默认复用功能是IO口上同时连接的外设功能引脚,在配置IO口的时候可以选择是通用IO口还是复用功能
重定义功能的作用是当有两个共用功能同时复用在了一个IO口上,而确实需要用到这两个功能,可以把其中一个复用功能重映射到其它端口上,前提是这个重定义功能的表里有对应的端口
STM32的启动配置
启动配置的作用就是指定程序开始运行的位置。一般情况下,程序都是在Flash程序存储器开始执行,但是我们也可以让程序在别的地方开始执行去完成特殊的功能

主闪存存储器启动模式:主闪存储器被选为启动区域,也就是正常执行Flash闪存里面的程序,最常用
系统存储器启动模式:用来做串口下载用的,这个系统存储器存的是STM32中的一段BootLoader程序,BootLoader程序的作用就是接收串口的数据,然后刷新到主闪存中

当图中五个调试端口全部被配置成了IO口时可使用这种启动模式救急
在你没有STLINK,也没有JLINK,也可以使用串口来进行下载程序
内置SRAM启动模式:主要用来进行程序调试
注意:BOOT引脚的值是在商店复位后的一瞬间有效的

如这个引脚定义中,BOOT1和PB2是在同一个引脚上的,上电的一瞬间是BOOT1的功能,四个时钟后就是PB2的功能了
最小系统电路
单片机只有一个芯片是无法正常工作的,我们需要为它来连接最基本的电路,这些最基本的电路就叫做最小系统电路

像图中C3这种叫滤波电容,这个电容可以保证供电电压的稳定
我的STM32的板子上已经画好了学习需要的最小系统电路,这个内容先不纠结
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)