STM32开发硬件平台、ARM&STM32简介
硬件平台
STM32简介
STM32最基本的介绍
STM32的基本情况、ARM内核、参数、外设、命名规则、系统结构、引脚定义、启动配置、最小系统都介绍了
1.硬件平台:


1.1各个模块:
1.STM32最小系统板;
2.面包板(能完成任意电路的连接,连线和修改比较方便,相对成品的开发板有利于对硬件电路的学习,可以避免开发板的一些问题,比如引脚冲突,引脚无法更改。但是要注意接线要好)
3.0.96寸OLED作为调试和显示的屏幕(用现成的程序,方便快速入门)
4.STLINK 下载程序和供电
5.LED按键
6.蜂鸣器模块
7.电位器 用来进行AD转换实验
8.按键 两引脚小按键,正好可以跨接在面包板上引脚插孔和电源插孔之间
9.LED灯 点灯实验
10.USB转串口模块 STM32和电脑进行串口通信
11.有源蜂鸣器模块(内置振荡源),接上电就能响,相对无源蜂鸣器需要不断翻转IO口的操作方式要方便(基本和点灯类似了)
12.传感器模块:
12.1光敏电阻模块(两个供电、两个是光敏电阻信号的模拟输出和数字输出,可进行IO口读取实验和AD实验)
12.2热敏电阻模块(有模拟输出和数字输出)
12.3对射式红外模块(配合遮光片可以用来计次,或者配合编码盘用来测速)
12.4反射式红外模块(寻迹小车,发出红外光,再用红外接收管接收反射回来的红外光,通过判断接收光的强度,大致识别出地面的颜色变化))
13.W25Q64 FLASH存储模块 可以存储数据 SPI通信
14.MPU6050陀螺仪和加速度计、测量芯片自身的姿态,例如四轴飞行器上会配备·IIC通信
15.旋转编码器 可以输出两路正交的方波信号 用于指示旋转的方向和速度 STM32里有专门的编码器电路(可以方便的识别这种信号)(也可以当成快速的按键来使用)(现在的编码电机一般会配备霍尔传感器或者光电传感器,这些传感器的输出和这种旋转编码器是一样的)
16.直流电机和TB6612电机驱动模块(可进行直流电机的PWM调速实验)
17.SG90舵机(用PWM进行控制,输出端像船舵,根据给定的PWM信号的占空比固定在某一个角度上)(可用来做一些机器人或者机器臂的关节)
18.左上盒子里的:面包板专用跳线,可以贴在面包板上插线,适合长时间插在面包板上
19.公对公杜邦线飞线,比较长,适合挪动
20.公对母和母对母杜邦线,用于插接电路模块
1.2其他工具
万用表:测试电路连接情况
示波器:测出引脚电压波形变化
镊子、剪刀(方便面包板插线)
2.ARM简介
ARM既指ARM公司,也指ARM处理器内核(程序指令的执行、加减乘除的运算,都在内核里完成),(相当于整个芯片的CPU,)
类似电脑厂商,可以拿Intel或者AMD的CPU,完善外围电路,推出自己品牌的电脑。STM32也是一样的
ARM公司是全球领先的半导体知识产权(IP)提供商(只设计ARM内核,不生产实物,实际的内核是各大半导体厂商连同芯片一起制作出来,ARM授权各大厂商它的设计,再收取授权费作为盈利方式)(开放合作、利益共享、风险共担的商业模式),全世界超过95%的智能手机和平板电脑都采用ARM架构
ARM公司设计ARM内核,半导体厂商完善内核周边电路并生产芯片

ARM内核型号:
蓝色:以前生产的老版本内核。ARM7、9、11经典内核,也是从ARM1、2发展过来的直到ARM11
推出Cortex内核,三个子型号A R M适用不同场景
A系列适用于高端应用型领域 Application 主要应用于手机领域、苹果、高通、联发科用的芯片都是基于ARM架构的(A系列,性能最高,发展最快的系列,远不止图片的型号)。苹果的M1芯片系列将ARM推进到电脑领域
R系列和M系列适用于嵌入式领域(对比A发展比较慢)
RealTime 主要面向实时性很高的场景 比如硬盘控制器 应用场景比较小,型号也不多
Microcontroller 主要应用在单片机领域,M0、M1、M3、M4-M8
3.STM32简介

蓝色部分是整个STM32芯片,绿色部分内部CPU地位的是ARM公司设计的内核。橙色部分是ST公司设计的外围电路(如存储器、片上外设资源等,可增加外围电路扩展)
3.1STM32简介
STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器(STM32 ST公司,M微控制器Microcontroller MCU 32位单片机)(ARM Cortex-M内核 单片机的核心部分)
ST公司拿着ARM公司设计的内核,再完善外围电路,整个封装起来,做成STM32(基于ARM内核的芯片)
STM32常应用在嵌入式领域,如:
智能车、 寻迹小车,读取光电传感器或者摄像头的数据,然后驱动电机前进或者转弯
无人机、 STM32读取陀螺仪加速度计和姿态数据,根据控制算法控制电机的速度,从而保证飞行稳定
机器人、 驱动舵机,控制机器人的关节,然后让机器人运动
无线通信 连接2.4G无线模块、蓝牙、WiFi模块
物联网 2.4G无线模块、蓝牙、WiFi模块、ZigBee,再通过STM32驱动继电器控制220V电路的通断
工业控制 做PLC主控
娱乐电子产品等
STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器(需要单片机控制的东西都可以考虑STM32)
3.2STM32家族系列产品

四个系列:
高性能系列:F2、F4、F7、H7等
主流系列:本次主要学习这个F1
超低功耗系列:L0、L1、L4、U5等
无线系列:WL、WB
图中,CoreMark内核跑分,跑分越高,说明该产品的性能越好。下面是他的主频能到达多少
先学主流的芯片,后面再根据需求学习高性能、低功耗、无线的芯片。一个系列再学习的话比换别的芯片轻松很多。
3.3架构和学习芯片
学习以STM32F103C8T6为标准

系列:主流系列STM32F1
内核:ARM Cortex-M3
主频:72MHz
RAM:20K(SRAM) 运行内存RAM,实际存储介质是SRAM
ROM:64K(Flash) 程序存储器ROM,实际的存储介质是Flash闪存
供电:2.0~3.6V(标准3.3V)
封装:LQFP48
3.4片上资源(也叫外设) Peripheral
目前学习的就是外设,通过程序配置外设,完成我们想要的功能
深颜色的是位于cortex内核里的外设,剩下的是内核外的外设

STM32F1的所有外设:
1.NVIC 嵌套向量中断控制器 内核用于管理中断的设备,比如配置中断优先级
2.SysTick 主要用来给操作系统提供定时服务的,STM32可以加入操作系统,比如FreeRTOS,UCOS等,如果用了操作系统,就需要3.SysTick 来提供定时来进行任务切换功能(目前没用到RTOS,可以用这个定时器完成Delay函数)
4.RCC 对系统的时钟进行配置,使能各模块的时钟。STM32中,其他的剩下的外设(非内核的)上电的情况下默认没有时钟,没有时钟,操作外设无效,不会工作。目的:降低功耗(操作外设之前必须使能时钟)
5.GPIO 通用IO口,点灯,读取按键等
6.AFIO 完成复用端口的重定义,中断端口的配置、
7.EXIT 配置好外部中断,当引脚有电平变化时,就可以触发中断,让CPU来处理任务
8.TIM 最常用,功能最多的外设。分为高级定时器(最复杂),通用定时器(常用)、基本定时器三种类型。能完成定时中断的服务,还可以完成测频率,生成PWM波(电机、舵机基本要求)、配置成专用的编码器接口等功能
9.ADC 读取IO口的模拟电压值,无需外部AD芯片,使用方便
10.DMA 帮助CPU完成搬运大量数据的繁杂任务
11.USART 实际用异步比较多
12.IIC、SPI 常用接口协议(用通用IO口模拟也没问题)
13.CAN 一般用于汽车领域
14.USB 可以做一个模拟鼠标,模拟U盘等设备
15.RTC STM32内部完成计时功能,可以接外部备用电池,即使掉电也能正常运行
16.CRC 一种数据的校验方式,用于判断数据的正确性,有这个外设的支持,做数据校验就更加方便
17.PWR 可以让芯片进入睡眠模式等状态,来达到省电的目的
18.BKP 当系统掉电时,仍可由备用电池保持数据,根据这个需要,完成一些特殊的功能
19.IWDG、WWDG 当单片机因为电磁干扰死机或者程序设计不合理出现死循环时,看门狗可以及时复位芯片,保证系统的稳定
20.DAC 在IO口直接输出模拟电压
21.SDIO 可以读取SD卡
22.FSMC 可以用于扩展内存,或者配置成其他总线协议,用于某些硬件的操作
23.USBOTG 用OTG功能可以让STM32作为USB主机去读取其他USB设备
每个具体的芯片有哪些外设,还得看数据手册或者选型手册
3.5命名规则&型号分类

3.6系统结构图

可以分为四块(内核和3根总线;FLASH;DMA总线,其余外设小弟)
1.cortex-M3内核,引出了3根总线,DCode数据总线、ICode指令总线、System系统总线
DCode数据总线、ICode指令总线主要连接FLASH闪存,FLASH存储的是编写的程序,
ICode 加载程序指令的,DCode加载数据,比如常量和调试数据
System总线,连接到其他上面。
比如SRAM,用于存储程序运行时的变量数据。FSMC本课程芯片不会用到
AHB系统总线(先进高性能总线Advanced High bus) 挂载主要外设的,挂载最基本的,或者性能比较高的外设,比如复位和时钟控制这些最基本的电路、SDIO、两个桥接(接到APB1和APB2两个外设总线上)
APB(先进外设总线 Advanced Peripheral Bus)用于连接一般的外设。因为AHB和APB的总线协议、总线速度、还有数据传送格式的差异,所以中间需要加两个桥接,来完成数据的转换和缓存
性能:AHB>APB2>APB1
APB2一般和AHB同频率,都是72MHz,APB1一般是36MHz
所以APB2连接外设中稍微重要的部分,比如GPIO端口,外设的1号选手,比如UASRT1、SPI1、TIM1、TIM8(TIM8和TIM1一样,也是高级定时器)、ADC、EXTI、AFIO
APB1接次要一点的外设,还有外设的2345号选手,DAC、PWR、BKP等
使用的时候,个人感觉不到APB2和APB1的性能差异,只需要知道外设挂在哪个总线就可以了
DMA 可以看成内核CPU的小秘书,比如大量数据搬运的工作,让CPU来做太浪费时间,比如外设ADC模数转换,可配置成连续模式,比如1ms转换一次,转换完的数据必须转运出来,否则数据就会被覆盖,如果CPU来做,那么每1ms就要来转运数据,费时费力,影响CPU正常工作,而且这个活就是简单的数据搬运,没必要CPU来干,于是DMA来做。(像数据搬运这种简单反复要做的事情)。DMA通过DMA总线连接到总线矩阵上,拥有和CPU一样的总线控制权,用于访问外设小弟,当需要DMA搬运数据时,外设小弟就会通过请求线发送DMA请求。然后DMA获得总线控制权,访问并转运数据,整个过程不需要CPU参与,省下了CPU的时间来做其他的事情
3.7引脚定义


拿到一个新的芯片时,需要着重看一下芯片的引脚定义。看完引脚定义,就大概知道芯片如何使用了
小黑脚1号引脚,逆时针依次排列。
FT能容忍5V,没有FT但需要接5V,就需要加装电平转换电路
主功能就是上电后默认的功能,一般和引脚名称相同。如果不同的话,引脚的实际功能是主功能而不是引脚名称的功能(优先主功能)
默认复用功能是IO口上同时连接的外设功能引脚,配置IO口时选择通用IO口还是复用功能
重定义功能:如果两个功能同时复用在了一个IO口上,而确实需要用到这两个功能的时候,那可以把其中一个复用功能重映射到其他端口上。前提是重定义功能的表里有对应的端口
I输入 O输出 S电源 I/O输入输出 FT容忍5V
1号引脚 VBAT 备用电池供电引脚,当系统电源断电时,备用电池可以给内部的RTC和BKP提供电源
2号引脚 IO口或者侵入检测或者RTC,IO口可以根据程序读取或者输出高低电平(最基本也是最常用的功能)
侵入检测可以用来做安全保障的功能(比如产品安全性比较高,可以在外壳加一些防拆的触点,然后接上电路到这个引脚,若有人强行拆开设备,那么触点断开,引脚的电平变化),就触发STM32的侵入信号,然后清空数据来保证安全。RTC的引脚可以用来输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲
3、4号引脚 IO口或者接32.768KHz的RTC晶振 215,内部RTC经过2的15次方分频,就可以生成1秒的时间信号了
5、6号引脚 接系统的主晶振,一般是8MHz,然后芯片内有锁相环电路,可以对8MHz的频率进行倍频,最终产生72Mhz的频率,作为系统的主时钟
7号引脚 NRSR系统复位引脚,N代表低电平复位的
8、9号引脚 内部模拟部分的电源,比如ADC、RC震荡器等 VSS是负极,接GND,VDD是正极,接3.3V
10-19号引脚 都是IO口,其中PA0还兼具了WKUP(weak up)的功能,可以用于唤醒处于待机模式的STM32
20号引脚 IO口或者BOOT1引脚 BOOT用来配置启动模式的
推荐优先使用加粗的IO口,没有加粗的IO口可能需要进行配置,或者兼具其他功能,使用需要注意
21、22号引脚 IO口
23、 24号引脚 系统的主电源口 STM32内部采用分区供电的模式
25-33好引脚 IO口
34、37-40号引脚 IO口或者调试端口(调试程序和下载程序的)STM32支持SWD和JTAG两种调试方式。两根线SWDIO和SWCLK
JTAG需要5根线,分别是JTMS、JTCK、JTDI、JTDO、NJTRST(推荐使用SWD模式),PA15、PB3、PB4要配置才能成为IO口,否则默认不会是IO口
SW是ARM开发的,STlink是ST公司的,但STlink可以用到GD上
41-43、45-46都是IO口
44 BOOT0 BOOT用来配置启动模式的
3.7启动配置

指定程序开始运行的位置,一般情况下,程序都是在Flash程序存储器开始执行(BOOT0=0)
但是在某些情况下,我们也可以让程序在别的地方开始执行,用以完成特殊的功能
BOOT0=1,BOOT1=0时,串口下载用的,系统存储器存的就是STM32中的一段bootloader程序(BootLoader程序的作用,就是接收串口的数据,然后刷新到主闪存中,这样就可以使用串口下载程序了)(什么时候需要串口下载?如果把调试端口全部配置成了IO口,那就没有调试端口了,就要用到串口下载了)
BOOT0=BOOT1=1时,主要用来程序调试的,现阶段用的比较少,本套视频也不会用到
最小系统电路中,复位电路,用一个电容是因为从低到高的过程中,低电平持续一小段时间来保证单片机完成复位
例如第20号引脚,也就是说上电的瞬间是BOOT1的功能,第4个时钟过后,就是PB2的功能了
3.8最小系统电路

单片机的起振电容怎么算,晶振的
(复位脚要一个电容式因为:复位电路在上电的瞬间,电容是没有电的,电源通过电阻向电容开始充电,并且此时电容呈现短路状态,那NRST引脚就会产生低电平,电容逐渐充满电时,电容相当于断路,此时NRST被电阻上拉为高电平,上电瞬间波形就是先低电平,然后逐渐高电平,这个低电平就可以提供STM32的上电复位信号)(在我们看来,单片机就在上电的一瞬间就完成复位了)(还并联一个按键,提供手动复位的功能(一般设备上有一个小孔,当设备死机还不方便断电重启时,就可以拿针戳一下))
启动配置:用跳线帽充当开关。用拨码开关也可以,比插跳线帽还方便一点。
3.3V板子如果有供电可以不引出来,GND必须要引出来
4.推荐文档
想要学好STM32,看好这些文档是必须的

推荐手册
《STM32F10xxx参考手册》(中文)
《STM32F103x8B数据手册》(中文)
5.个人心得
在单片机领域,个人首推ARM内核的STM32处理器芯片、因为学习资料多,生态较为完善
同时HAL库和cubeMx是ST公司做的,有利于快速开发
国内厂商如GD32直接用HAL库的话会有兼容性问题(GD也有自己的库了),同时在一些极限情况下GD的指标还需要改进才行
5470

被折叠的 条评论
为什么被折叠?



