Tangwx

Tangwx

博客网站

01.STM32基础知识综述

1 STM32 基础知识综述#

1.1 STM32 简介#

STM32 是 ST 公司基于 ARM Cortex-M 内核开发的 32 位微控制器

MMicrocontroller的意思

STM32 常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等

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

image-20220809082441069

1.2 ARM 简介#

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

ARM 公司是全球领先的半导体知识产权(IP)提供商,全世界超过 95% 的智能手机和平板电脑都采用 ARM 架构

ARM 公司设计 ARM 内核,半导体厂商完善内核周边电路并生产芯片

image-20220809083032037

image-20220809083101283

1.3 STM32F103C8T6 简介#

系列:主流系列 STM32F1

内核:ARM Cortex-M3

主频:72MHz

RAM:20K(SRAM)

ROM:64K(Flash)

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

封装:LQFP48

image-20220809084122792

1.4 片上资源 / 外设 (Peripheral)#

STM32 可以加入操作系统,例如 FreeRTOS、UCOS 等,如果使用了这些操作系统则需要SysTick提供定时来进行任务切换功能。

UART是异步串口的意思,而STM32USART既支持异步串口也支持同步串口,异步串口使用相对较多

英文缩写名称英文缩写名称
NVIC嵌套向量中断控制器CANCAN 通信
SysTick系统滴答定时器USBUSB 通信
RCC复位和时钟控制RTC实时时钟
GPIO通用 IO 口CRCCRC 校验
AFIO复用 IO 口PWR电源控制
EXTI外部中断BKP备份寄存器
TIM定时器IWDG独立看门狗
ADC模数转换器WWDG窗口看门狗
DMA直接内存访问DAC数模转换器
USART同步 / 异步串口通信SDIOSD 卡接口
I2CI2C 通信FSMC可变静态存储控制器
SPISPI 通信USB OTGUSB 主机接口

1.5 芯片命名规范#

image-20220809084423056

1.6 系统结构#

Cortex-M3内核引出三条总线,ICode指令总线,DCode数据总线,System系统总线

ICode总线和DCode总线主要是用来连接Flash闪存的

Flash里面存储的是我们编写的程序

ICode指令总线用来加载程序指令

DCode数据总线用来加载数据,例如常量和调试数据等

System系统总线连接到SRAM,FSMC

SRAM用于存储程序运行时的变量数据

AHB系统总线用于挂载主要的外设,AHB 的意思是先进高性能总线,挂载的一般是最基本的或者性能比较高的外设,例如复位和时钟控制这些最基本的电路,还有SDIO也是挂载在AHB上的

APB1 APB2两个外设总线,APB的意思是先进外设总线,用于连接一般的外设,

因为AHBAPB的总线协议,总线速度,数据传送格式的差异,所以中间需要加两个桥接来完成数据的转换和缓存,AHB的整体性能比APB高一些,其中APB2的性能又比APB1的性能高一些,APB2一般和AHB同频率,都是 72MHz,APB1一般是 36MHz, 所以APB2连接的一般都是外设中稍微重要的部分,如GPIO端口还有一些外设的 1 号选手 (USART1,SPI1,TIM1,TIM8等),TIM8TIM1一样也是高级定时器,所以也是重要的外设,ADC,EXTI,AFIO也是接在APB2上面的;其他的像 2,3,4,5 号外设,DAC、PWR、BPK 等次要一点的外设都会分配到APB1上去;当然在使用时,个人一般感觉不到APB2APB1的性能差异,只需要知道这个外设是挂载到哪个总线上的就可以了

DMA可以当做内核 CPU 的小秘书,比如大量数据搬运的活,让 CPU 来干就太浪费时间了,DMA主要干这些简单且反复要干的事情,DMA通过DMA总线连接到总线矩阵上,他拥有和 CPU 一样的总线控制权,用于访问这些外设,当需要DMA搬运数据时,外设就会通过请求线发送DMA请求,DMA就会获得总线控制权,访问并转运数据,整个过程不需要 CPU 的参与,省下了 CPU 的时间用来干其他的事情

image-20220809084538311

1.7 引脚定义#

红色的是电源相关的引脚

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

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

S类型代表电源

I类型代表输入

O类型代表输出

IO类型代表输入输出

FT代表这个引脚能容忍5V的电压,没有FT的只能容忍3.3V的电压

STM32内部采用分区供电的方式,供电口较多,使用时VSS都接GNDVDD都接3.3V

STM32支持SWDJTAG两种调试方式

SWD需要两根线,分别是SWDIOSWCLK

JTAG需要 5 根线,分别是JTMS,JTCK,JTDI,JTDO,NJTRST

STLINK使用的是SWD的方式下载调试程序,所以只需要占用PA13PA14这两个IO

使用SWD方式下载时,PA15 PB3 PB4可以切换为普通IO口来使用,但是需要在程序中进行配置,不配置的划默认是不会用作 IO 口的

image-20220810080019866

image-20220811092650888

引脚号引脚名称引脚定义主功能
1VBAT备用电池供电引脚,此引脚可外接一个 3V 电池,当系统电源断电时,备用电池可以给内部的 RTC 时钟和备份寄存器提供电源VBAT
2PC13-TAMPER-RTCI/O 口或侵入检测或 RTC,IO 口可以根据程序输出或读取高低电平,侵入检测可以用来做安全保障的功能,RTC 可以用来输出 RTC 校准时钟、RTC 闹钟脉冲或秒脉冲PC13
3、4PC14-OSC32_IN/PC15-OSC32_OUTIO 口或者接 32.768KHz 的 RTC 晶振PC14/PC15
5、6OSC_IN/OSC_OUT接系统的主晶振,一般是 8MHz,芯片内部有锁相环电路,可以对这个 8MHz 的频率进行倍频,最终产生 72MHz 的频率作为系统的主时钟OSC_IN/OSC_OUT
7NRST系统复位引脚,N 表示低电平复位NRST
8,9VSSA/VDDA内部模拟部分的电源,如 ADC、RC 振荡器等;VSS 是负极接是 GND,VDD 是正极接 3.3VVSSA/VDDA
10PA0-WKUPIO 口兼具 WKUP 功能,可以唤醒处于待机模式的 STM32PA0
11-19PA1、PA2、PA3、PA4、PA5、PA6、PA7、PB0、PB1IO 口PA1-PB1
20PB2IO 口或 BOOT1 引脚,BOOT 引脚用来配置启动模式PB2/BOOT1
21,22PB10、PB11IO 口PB10,PB11
23,24VSS_1/VDD_1系统主电源口,VSS 是负极,VDD 是正极VSS_1/VDD_1
25-33PB12、PB13、PB14、PB15、PA8、PA9、PA10、PA11、PA12IO 口PB12、PB13、PB14、PB15、PA8、PA9、PA10、PA11、PA12
34PA13IO 口或调试端口JTMS/SWDIO
35,36VSS_2/VDD_2系统主电源口,VSS 是负极,VDD 是正极VSS_2/VDD_2
37-40PA14/PA15/PB3/PB4IO 口或调试端口 (用来调试和下载程序)JTCK_SWCLK/JTDI/JTDO/NJTRST
41-43PB5/PB6/PB7IO 口PB5/PB6/PB7
44BOOT0与 BOOT1 一样也是用来做启动配置的BOOT0
45,46PB8/PB9IO 口PB8/PB9
47,48VSS_3/VDD_3系统主电源口,VSS 是负极,VDD 是正极VSS_3/VDD_3

1.8 启动配置#

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

BOOT1=0 BOOT0=1 模式用来做串口下载,系统存储器存的就是STM32中的一段BootLoader程序,BootLoader程序的作用就是接收串口的数据然后刷新到主闪存中,这样就可以使用串口下载程序了,一般我们需要串口下载程序的时候会配置到这个模式上

BOOT0=0 启动模式为主闪存存储器的模式,主闪存存储器被选为启动区域,此时正常执行 Flash 闪存里面的程序,这个模式是最常用的模式,一般情况下都是这个配置

BOOT1=1 BOOT0=1 配置的是SRAM启动,这个模式主要用于程序调试,现阶段使用较少

BOOT引脚的值是在上电复位的一瞬间有效的,之后就随意了

image-20220809084630785

1.9 最小系统电路#

OSC32是 32.768KHz 晶振的意思,32768 是 2 的 15 次方,内部 RTC 电路经过 2 点 15 次方分频就可以生成 1s 的时间信号了,

image-20220809084704647

RTC晶振是 32.768KHz 晶振

img

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。