目录
1.1简介
本教程使用STM32最小系统板(STM32F103VET6)加底板硬件平台进行学习。使用跳线可以完成任意硬件的连接,相比于成品的开发板方式,使用条线更有利于对点单片机的学习,而且也可以避免开发板的一些问题(如引脚冲突、引脚无法更改等)。优点:方便,缺点:没有明确指出引脚功能,所以连线时要更加细心一些。主要套件如下:
STM32是一款32位单片机(51单片机是8位单片机),其中“ST”是ST公司(得捷电子Digi-Key是其官方授权的分销商),“M”则是“MicroController Unit, MCU”的缩写,即STM32基于ARM Cortex-M内核开发的32位微控制器。
MCU 和单片机的区别:
原理不同:
mcu又称 单片 微型 计算机(Single Chip Microcomputer )或者单片机,重点在于单片。
单片机则是把一个计算机系统集成到一个芯片上,重点在于芯片,相当于微型计算机但缺少I/O设备。
指代对象不同:
MCU是指单片微型计算机或者单片机。单片机则是微型计算机家族中的一个分支而已。
范畴不同:
CPU有三个分支:DSP、MCU(Micro Control Unit,微控制器单元)、MPU(Micro Processor Unit,微处理器单元)。
单片机是MCU中最具有代表性,是MCU的实现。
功能不同。
MCU在不同的场合有不同的应用。例如手机、遥控器甚至汽车电子和机器手臂的控制等都有涉及。
单片机的使用领域比MCU的要更为广泛,从家用电器和通讯设备到智能仪表以及导航系统都有应用。
用途不同:
MCU倾向于不同信息源的多种数据的处理诊断和运算,更侧重于控制。
而单片机就是一块芯片,主要是对数据进行高速化处理。
STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器,常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等。
STM32家族MCU产品
1.2 STM32芯片内部的外设
STM32F103VET6主要指标:
系列:主流系列STM32F1
内核:ARM Cortex-M3
主频:72MHz
RAM(运行内存):64K(SRAM)
ROM(程序存储器):512K(Flash)
供电:2.0~3.6V(标准3.3V)。由于USB供电是5V,所以还要加稳压芯片。(注:51单片机为5V供电)
封装:LQFP100
表1-1 STM32F1系列的片上资源/外设
英文缩写 | 名称 | 补充说明 | 英文缩写 | 名称 | 补充说明 |
NVIC | 嵌套向量中断控制器 | 内核中用于管理中断的设备,如配置中断优先级。 | CAN | CAN通信 | 常用于汽车领域。 |
SysTick | 系统滴答定时器 | 内核中的定时器,给操作系统(如FreeRTOS、UCOS等)提供定时服务,以完成任务切换。 | USB | USB通信 | 可以做模拟鼠标、模拟U盘等设备。 |
RCC | 复位和时钟控制 | 使能各模块时钟,上电默认其他外设模块均无时钟。 | RTC | 实时时钟 | 可接备用电池,掉电保持运行。 |
GPIO | 通用IO口 | 可以用GPIO来点灯、读取按键等。 | CRC | CRC校验 | — |
AFIO | 复用IO口 | 可以完成复用端口的重定义,中断端口的配置。 | PWR | 电源控制 | 可使芯片进入睡眠模式,节能。 |
EXTI | 外部中断 | 引脚有电平变化会触发中断。 | BKP | 备份寄存器 | 接备用电池,掉电保存数据。 |
TIM | 定时器 | 最常用,功能最多的外设,可以测频率、生成PWM波等。分为高级定时器、通用定时器(最常用)、基本定时器。 | IWDG | 独立看门狗 | 当程序死机或死循环时,复位程序。 |
ADC | 模数转换器 | 芯片内的12位ADC外设,无需外接AD芯片。 | WWDG | 窗口看门狗 | |
DMA | 直接内存访问 | 帮助CPU搬运大量数据。 | DAC | 数模转换器 | — |
USART | 同步/异步串口通信 | 异步串口UART应用更多。 | SDIO | SD卡接口 | 用于读取SD卡数据。 |
I2C | I2C通信 | — | FSMC | 可变静态存储控制器 | 用于扩展内存,或配置成其他总线协议。 |
SPI | SPI通信 | — | USB OTG | USB主机接口 | 让STM32作为USB主机,读取其他设备。 |
1.3 STM32芯片系统结构
- Cortex-M3:内核。注意1ICode、2DCode、3System是直接从内核引出的三根总线。
- Flash:存储编写的程序。ICode总线和DCode总线主要用于连接Flash闪存。
- SRAM:用于存储程序运行时的变量数据。
- ICode:指令总线。加载程序指令。
- DCode:数据总线。加载数据,如常量和调试参数。
- System:系统总线。连接到Flash以外其他外设上,如SRAM、FSMC(FSMC基本不会用到)。
- AHB系统总线:先进高性能总线。用于挂载最基本的(如复位和时钟控制RCC、SDIO)、或者性能比较高的外设。
- APB2、APB1:先进外设总线。用于连接一般的外设。通常AHB(72MHz)性能总体高于APB,而APB2(72MHz)性能高于APB1(36MHz)。所以APB2连接外设中稍微重要的部分,如GPIO、各外设的1号接口;剩下的次要外设给APB1。
- 桥接2、桥接1:由于AHB和APB的总线协议、 总线速度、数据传输格式上的差异,需要加上2个桥接,来完成数据的转换和缓存。
- DMA2、DMA1:拥有和CPU相同的总线控制权,用于帮助CPU完成数据搬运这样简单但重复的活,相当于CPU的小秘书。若外设需要进行数据搬运,那么会直接找DMA(DMA请求),DMA就会获得总线控制权来搬运数据,整个过程无需CPU的参与。