一、实验器材介绍
二、STM32简介
1.STM32 名词解释
STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器。
- ST,指ST公司(意法半导体);
- M,MicroController 微控制器(MCU,MicroController Unit 微控制器单元/单片机);
- 32,32位的单片机;
表示CPU一次可以处理32位数据宽度,即4个字节(现在电脑大多数都是64位);
这也决定了CPU能直接处理的最大内存地址空间是2^32字节(4GB),也意味着32位CPU最多只能利用4GB的RAM,即使物理上安装了更多的内存,也无法全部访问; - ARM Cortex-M内核,即STM32的内部核心部分(包括CPU),由ARM公司设计的;
ARM公司设计内核,芯片厂商完善外围电路,生产芯片。这些芯片,都叫做基于arm内核的芯片;
2.STM32在嵌入式领域的应用
- 智能车:例如寻迹小车:读取光电传感器或者摄像头的数据,然后驱动电机前进和转弯;
- 无人机:读取陀螺仪加速度计的姿态数据,根据控制算法去控制电机的速度,从而保证飞机稳定飞行;
- 机器人:驱动舵机来控制机器人的关节,让机器人运动;
- 无线通信/物联网:连接2.4G、蓝牙、WiFi、Zigebee、4G等无线通信模块;
- 工业控制:PLC,Programmable Logic Controller,可编程逻辑控制器,一种数字运算操作的电子系统,专为工业环境应用而设计。被广泛应用于制造业和过程工业中,用来自动化控制机械流程和设备;
- 娱乐电子产品:穿戴电子产品、玩具;
- STM32功能强大、性能优异、片上资源丰富、功耗低、是一款经典的嵌入式微控制器;
3.STM32系列产品
4.ARM介绍
- ARM既指ARM公司,也指ARM处理器内核;
- ARM公司是全球领先的半导体知识产权(IP,intellectual property,知识产权)提供商,即只设计芯片,不生产芯片。全世界超过95%的智能手机和平板电脑都采用ARM架构;
- ARM公司设计ARM内核,半导体厂商完善内核周边电路并生产芯片;
- ARM系列内核
5.课程使用的STM32(STM32F103C8T6)芯片介绍
- 参数介绍
- 系列:STM32F1主流系列;
- 内核:ARM Cortex-M3内核;
- 主频:最大72MHz;
- RAM(运行内存):20K(实际存储介质:SRAM);
- ROM(程序存储器):64K(实际存储介质:Flash);
- 供电电压:2.0~3.6V(标准3.3V)【注意:USB输出电压是5V,不能直接给STM32供电,需要加一个稳压芯片,把电压降到3.3V,再给STM32供电】
- 封装:LQFP48,共48个引脚,如下图所示:
6.STM32的片上资源/外设(Peripheral)
(注意:以下外设为STM32F1整个系列的所有外设,并不是所有型号都拥有全部外设,具体型号拥有的外设需要查询对应的数据手册)
- 片上外设的概念
- 片上外设/片内外设:芯片内部的外设;
- 片外外设:芯片外部的外设;
- NVIC,Nested Vectored Interrupt Controller,嵌套向量中控制器。内核里用于管理中断的设备,比如配置中断优先级等。
- SysTick,系统滴答定时器。主要用来给操作系统提供定时服务的。STM32可以加入Free RTOS、RT-Thread、Ucos等实时操作系统,当加入这些操作系统时就需要SysTick提供定时来进行任务切换的功能。
- RCC,Reset and Clock Control,复位和时钟控制。 STM32中其他的外设在上电后默认是不开启时钟的,此时操作外设是无效的(这样能降低功耗,所以在使用外设之前,需要先用RCC开启对应的时钟)。
- GPIO, General-purpose I/O,通用IO(Input/Output,输入/输出)。可以用来电灯和读取按键。
- AFIO,Alternate functions I/O, 复用IO。用来完成复用端口的重定义和中断端口的配置。
- EXTI,External Interrupt ,外部中断。配置好外部中断后,当引脚的电平按照中断触发条件变化时,就会触发中断,来让CPU处理对应的情况。
- TIM,Timer,定时器。STM32中最常用,功能最多的外设,分为基本定时器、通用定时器和高级定时器三种类型。高级定时器最复杂,通用定时最常用。这两种定时器都可以完成定时中断、测频率、生成PWM波形、配置成专用的编码器接口等功能。
- ADC, Analog to Digital Converter,模数转换器。STM32内置了12位的ADC,可以直接读取IO口的模拟电压值,无需外部连接ADC芯片。
- DMA,Direct Memory Access,直接内存访问。可以帮助CPU完成搬运大量数据的繁杂任务。
- USART,Universal Synchronous Asynchronous Receiver Transmitter,通用同步异步收发器。既支持同步串口也支持异步串口,实际中使用异步串口比较多。
- I2C,Inter-Integrated Circuit,集成电路间通信。实现集成电路(IC/芯片)间以半双工串行方式通信的设备。
- SPI,Serial Peripheral Interface,串行外设接口。实现集成电路(IC/芯片)间以全双工串行方式通信的设备。
- CAN,Controller Area Network,控制器局域网。一般用于汽车领域。
- USB,Universal Serial Bus,通用串行总线。可以用该设备做一个模拟鼠标、模拟U盘等设备。
- RTC,Real Time Clock,实时时钟。实现年月日、时分秒的计时功能。需要接外部电池,即使掉电也能正常运行。
- CRC,Cyclic Redundancy Check,循环冗余校验。一种数据校验的方式,来判断数据的正确性。
- PWR, Power Control, 功率控制。可以让芯片进入睡眠模式等状态,来实现省电/低功耗的目的.
- BKP, Bakup registers,备份寄存器。一段存储器,当系统掉电时,这段存储器由备用电池供电,保持数据。
- IWDG,Independent WatchDog,独立看门狗。
- WWDG,Window WatchDog,窗口看门狗。
当单片机因为程序干扰死机或程序设计不合理出现死循环时,看门狗可以及时复位新芯片,保证系统的稳定。 - DAC,Digital-to-Analog Converter,数模转换器。可以在IO口直接输出模拟电压。
- SDIO,Secure digital input/output interface,安全数据输入/输出接口,即SD卡接口。可以用来读取SD卡。
- FSMC, Flexible static memory controller, 可变静态存储控制器。用于扩展内存或配置成其他总线协议,来操作某些硬件。
- USB OTG,USB On-The-GO,USB主机接口。一种USB接口标准,允许设备在不需要计算机的情况下直接连接和交换数据。即可以让STM32作为主机去读取其他USB设备。
7.STM32的命名规则
8.STM32系统结构
9.STM32F103C8T6引脚定义
在使用一款芯片时,一般需要先着重地看一下其引脚定义。
- 引脚划分
- 橙色的是电源相关的引脚:
- 蓝色的是最小系统相关的引脚;
- 绿色的是IO口、功能口相关的引脚;
- 表头介绍
- 引脚号和引脚名称:
与芯片引脚一一对应; - 类型:
S:代表电源;
I:代表输入;O:代表输出;I/O:代表输入/输出; - I/O口电平:代表IO口所能容忍的电压;
有FT(Five Tolerate),代表能容忍5V的电压;没有FT,代表只能容忍3.3V电压;
如果没有FT需要接5V的电平,就需要加装电平转换电路; - 主功能:
一般就是上电后默认的功能,一般和引脚名称相同。如果不同的话,引脚的实际功能就
是主功能,而不是引脚名称对应的功能。 - 默认复用功能:
IO口上同时连接的外设功能引脚: - 重定义功能:
如果两个都需要使用的功能同时连接在同一个IO口上,可以把其中一个功能重映射到其他的端口上(前提是重定义功能的表里有对应的端口);
- 引脚号和引脚名称:
- 具体引脚介绍
- pin1:VBAT
备用电池供电引脚。该引脚可以接一个3V的电池,当系统电源断电时,备用电池可以给内部的RTC时钟和备份寄存器供电。 - pin2:PC13-TAMPER_RTC
- 普通IO口,输出或读取对应引脚的高低电平;
- tamper(篡改)用来做入侵检测,实现安全保障功能。当产品的安全性要求比较高时,可以在外壳上加一些防拆的触点,然后把这些触电接到这个引脚上。如果有人强拆设备,触点断开,这个引脚的电平变化,就会触发STM32的入侵信号,STM32就会清空数据来保证安全。
- pin3~pin4:PC14-OSC32_IN、PC15-OSC32_OUT
- 普通IO口:
- 接32.768KHZ的RTC晶振;(32.768K = 215,内部RTC电路经过215次方分频,就可以产生1HZ的时间信号了)
- pin5~pin6:OSC_IN、OSC_OUT
- 接系统的主时钟,一般是8MHZ。(芯片内部有锁相环电路可以对8MHZ的频率进行倍频,最终产生72MHZ的频率,作为系统的主时钟)
- pin7:NRST
系统复位引脚,N代表是低电平复位。 - pin8~pin9:VSSA、VDDA
内部模拟部分的供电引脚,比如:ADC,RC振荡器等。
VSS是负极,接GND;VDD是正极,接3.3V; - pin10~ pin19:PA0~ PA7、PB0~PB1;
普通IO口;
其中PA0还兼具了WKUP功能(可以用来唤醒处于待机模式的STM32); - pin20、pin44:PB2/BOOT1、BOOT2
普通IO、BOOT1引脚;
BOOT2引脚;
【BOOT引脚用来配置启动模式】 - pin21~pin22
普通IO; - pin23、pin24;pin35、pin36;pin47、pin48:VSS_1、VDD_1;VSS_2、VDD_2;VSS_3、VDD_3;
这些都是系统的主电源口。STM32内部采用了分区供电的方式,在使用时,把VSS接GND,VDD接3.3V即可。 - pin25~ pin33:PB12~ PB15;PA8 ~PA12;
普通IO; - pin34、pin37~pin40:
- 普通IO;
- 调试端口;(默认的主功能都是调试端口,用来调试程序或下载程序)
- STM32支持SWD和JTAG两种调试方式。
- SWD需要两根线,分别是SWDIO和SWDCLK;
- JTAG需要5根线,分别是JTMS、JTCK、JTDI、JTDO、NJTRST;
【教程中使用STLINK来下载和调试程序,STLINK用的是SWD的方式,只需要使用PA13、PA14两个端口,剩下的PA15、PB3、PB4可以在程序中配置为普通IO口来使用】
- STM32支持SWD和JTAG两种调试方式。
- pin41~ pin43:PB5~PB7
普通IO; - pin45、pin46:PB8~PB9
普通IO;
- pin1:VBAT
10.STM32的启动配置
启动配置,即指定程序开始运行的位置,一般程序都是在Flash程序存储器(主闪存存储器)开始执行的。
- BOOT1接0(接GND),BOOT0接x(无论BOOT1接什么都可以)
启动模式都是主闪存存储器模式,这时候主闪存存储器被选为启动区域,也就是正常的执行Flash闪存里面的程序,这种模式是最常用的模式,一般情况下都是这个配置。 - BOOT1接0,BOOT0接1(接3.3V)
启动模式是系统存储器模式,这时候系统存储器被选为启动区域。这个模式就是用来做
串口下载用的(系统存储器中存的是STM32中的一段BootLoader程序,用来接收串口的数据,然后刷新到主闪存中。)
一般使用串口下载时,就需要配置成该模式。(当把下载SWD和JTAG的调试端口全部配置成IO口时,就不能使用SWD和JTAG的方式下载程序了,此时就需要使用串口来下载程序;如果没有STLINK和JTLINK,也可以使用串口来下载程序) - BOOT1接1,BOOT0接1
启动模式是内置SRAM模式,这时候内置RAM被选为启动区域。这个模式主要用来程序调试的,用的比较少。
【BOOT引脚的值是在上电复位后的一瞬间有效的,之后就随便了。】
11.STM32的最小系统
如果要STM32正常工作,就需要把电源部分和最小系统部分的电路连接好。单片机只有一个芯片是无法工作的,需要连接最基本的电路才能正常工作,这个最基本的电路就叫做最小系统电路。