项目需要的硬件设施
1.STM32主板
将STM32最小系统板插在面包板上,作为基本的硬件单元。
STM32支持SWD和JTAG两种调试方式
项目所用为:
STM32F103C8T6:
系列:主流系列STM32F1,内核:ARM Cortex-M3,主频:72MHZ,RAM(运行内存):20K(SRAM:实际存储介质),ROM(程序存储器 ):64K(Flash:实际存储介质),供电:2.0V~3.6V(标准3.3V),封装:LQFP48。
项目使用STLINK来下载调试程序,STLINK用的是SWD的方式。
2.OLED
OLED作为调试和显示的屏幕。
3.STLINK:一款“下载器”兼“调试器”
STLIMK插在电脑上用于把程序烧录进芯片,以及实时调试芯片上正在运行的程序。和供电。
4.LED发光二极管(指示灯)
通过发光(或不发光)以及光的变化,来告诉你设备内部正在发生什么。
5.蜂鸣器(BZ/BUZ)
将电信号转换为声音信号,即发声。它主要用于向用户提供听觉反馈。
6.TB6612FNC直流电机驱动模块
连接控制大脑(如单片机)和动力心脏(电机),把大脑(单片机)的弱信号,转化成驱动电机的大电流,并实现精密控制。
软件设备
Keil5 MDK:专门用来给ARM架构芯片(特别是常用的STM32系列)编写和调试程序的。
其他的一些设备
电位器:通过改变电阻值,来连续地调节电路中的电压或电流。
USB转串口模块:使STM32和电脑进行串口通信。
光敏电阻模块:把“光线的强弱”这个物理量,转换成一个电路可以识别和处理的“电信号”(通常是电压高低或电阻大小)。进行IO口读取实验或者AD实验。
热敏电阻模块:把“温度的高低”这个物理量,转换成一个电路可以识别和处理的电信号(电压或电阻值)。
对射式红外模块:利用“红外线通路是否被阻断”来检测两个物体之间是否存在遮挡物。它相当于一个非接触式的、由光线控制的电子开关。
反射式红外模块:利用“红外线是否被反射回来”来判断前方一定距离内是否有物体存在。它相当于一个非接触式的、主动发射光线的“接近开关”。
W25Q64 Flash存储模块:用于存储数据并且是用SPI总线进行通信的。
MPU6050陀螺仪和加速度计:让电子设备能够精确地感知自身的运动姿态和受力情况,MPU6050 与主控芯片(如 Arduino、STM32)通过I2C 接口通信。
旋转编码器:可以输出两路正交的方波信号,用于指示旋转的方向和速度。
直流电机:把电能转换成机械能。
SG90舵机:用PWM进行控制,就是精确地旋转到一个指定的角度,并保持住这个位置。它不像普通直流电机那样连续旋转,而是像一只“机械手”,能够听从指令,将输出轴固定在0到180度之间的任意一个角度上。是一种特殊的位置伺服电机,它的核心任务就是定位。可以用来做一些机器人或者机械臂的关节。
STM32简介
STM32是基于ARM Coretx-M内核开发的32位微控制器。
STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等。
STM32功能强大、性能优异、片上资源丰富(除了内核和存储器,其他的就是片上资源(外设资源))、功耗低,是一款经典的嵌入式微控制器。
ARM
Cortex-R系列 和Cortex-M系列适用于嵌入式领域(单片机领域)。
Cortex-A系列适用于高端应用型领域(手机领域),性能最高。
片上资源/外设
STM32系统结构
ICode和DCode用来连接Flash和内核
Flash存放编写的程序
ICode指令总线用来加载程序指令
DCode数据总线用来加载数据,比如常量和调试数据
System系统总线连接内核和SRAM、FSMC
SRAM用于存储程序运行时的变量数据
AHB系统总线(AHB:先进高性能总线):用于挂载最基本或者性能高的外设,如复位和时钟控制、SDIO
APB:先进外设总线(用于连接一般的外设)
因为AHB和APB的总线协议、总线速度、数据传输格式的差异,所以需要两个桥接来完成数据的转换和缓存
性能:AHB(72MHz) > APB2(72MHz) > APB1(32MHz)
DMA:做一些简单反复的事情,如数据搬运
引脚定义
标橙色的是电源相关的引脚,标蓝色的是最小系统相关的引脚,标绿色的是IO口、功能口相关的引脚。
S代表电源,I代表输入,O代表输出,I/O代表输入输出
I/O口电平:代表IO口所能容忍的电压(FT:5V,没有FT容忍3.3V)
| 1号引脚 VBAT:备用电池供电的引脚,接3V的电池,当系统电源断电时,备用电池可以给内部的RTC时钟和备份寄存器提供电源 |
2号引脚 IO口或者入侵检测或者RTC:IO口可以根据程序输出或者读取高低电平,侵入检测用来做安全保障的功能,RTC引脚可以用来输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲 |
| 3、4号引脚 IO口或者接3.768KHz的RTC晶振 |
| 5、6号引脚 接系统的主晶振(一般为8MHz):芯片内有锁相环电路,可以对8MHz的频率进行倍频,最终产生72MHz的频率,作为系统的主时钟。 |
| 7号NRST是系统复位引脚,N代表它的低电平复位 |
8、9号引脚是内部模拟部分的电源,比如ADC模数转换器、RC振荡器 VSS是负极,接GND。VDD是正极,接3.3V |
| 10~19号引脚都是I/O口:其中PA0还兼具WKUP的功能,可以唤醒处于待机模式的STM32 |
| 20号引脚是I/O口或者BOOT1引脚(用来配置启动模式的) |
| 21,22号都是I/O口 |
23号VSS_1和24号VDD_1是系统的主电源口,VSS是负极,VDD是正极 35、36、47、48号都是主电源口 |
| 25~33号引脚都是I/O口 |
34号加上37~40号都是I/O口或者调试端口 调试端口:调试程序下载程序 STM32支持SWD和JTAG两种调试方式: JTAG需要5根线,分别是JTMS、JTCK、JTDI、JTDO、NJTRST 项目使用STLINK来下载调试程序,STLINK用的是SWD的方式,只需占用PA13和PA14两个I/O口 |
| 41~43和45、46号都是I/O口 |
| 44号BOOT0用来启动配置 |
STM32及供电
STM32及供电
STM32图中C4、C5、C6是滤波电容,电容可以保证供电电压的稳定,一般遇到供电都会加上滤波电容。
VBAT接备用电池,正极接VBAT,负极接GND。备用电池是给RTC和备份寄存器服务的。
晶振电路
接一个8MHz的主时钟晶振,8MHz经过内部锁相环倍频,得到8 * 9 = 7MHz的主频,引脚分别连接STM32 5和6对应的引脚,另外还需要接两个20pF的电容,电容的另一端接GND
复位电路
用来给单片机提供复位信号,NRST接STM327号引脚,NRST是低电平复位。
当复位电路在上电的瞬间,电容是没有电的,电源通过电阻开始向电容充电,并且此时电容呈现短路状态,此时NRST引脚产生低电平。当电容逐渐充满电时,电容相当于断路,此时NRST就会被R1上来为高电平。
上电瞬间的波形就是先低电平,然后逐渐高电平。
K1按键按下时,电容会放电,并且NRST引脚接地,相当于手动产生了低电平复位信号,K1松开后,NRST回归高电平,此时单片机从复位状态转为工作状态。
启动配置
| 0(低电平/接地) | X(任意) | 主Flash存储器(你烧写的用户程序) |
| 1(高电平/接VDD) | 0(低电平) | 系统存储器(芯片出厂内置的Bootloader,用于通过串口/USB重新烧录程序) |
| 1(高电平) | 1(高电平) | 内置SRAM(用于调试或临时运行程序) |
| 关键机制:芯片只在复位信号释放(从低变高)的瞬间采样这些引脚的电平,并锁存起来。在正常运行过程中,你再改变这些引脚的电平是无效的。 | ||
下载端口
下载端口"就是指把编译好的程序烧录到芯片内部Flash存储器的物理连接接口。它是在PCB上为烧录程序预留的一组引脚。