① STM32介绍(低成本学习)

1 STM32介绍

STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex-M0,M0+,M3, M4和M7内核。产品有STM32F0、STM32F1、STM32F3)、超低功耗产品(STM32L0、STM32L1、STM32L4、STM32L4+)、高性能产品(STM32F2、STM32F4、STM32F7、STM32H7)等。

  • 高性能Cortex-M内核

    • -采用ARM公司流行的标准内核Cortex-M3

    • -低动态功耗上实现的高性能

  • 哈佛结构上实现1.25DMIPS/MHZ,功耗只有0.19mv/MHZ

    • -比ARM7TDMI改进了30%

      单周期的乘法和硬件除法
      不可分的位操作,实现对RAM,I/O和寄存器的最优访问。

  • 最佳的代码密度

    Thumb-2指令集以16位指令的密度实现32位指令性能(与ARM7TDMI的ARM模式比减少了30%-45%的代码量)

  • 可预见的运行时间

    • -中断控制器嵌在内核之中,中断之间的间隔最少可达6个 CPU周期。

    • -从低功耗模式唤醒只需6个CPU周期

  • 改进的调试功能

`* -串行单步调试和JTAG调试

1.1 F103性能

  • 内核:ARM32位Cortex-M3 CPU,最高工作频率72MHz1.25DMIPS/MHz。单周期乘法和硬件除法。
  • 存储器:片上集成32-512KB的Flash存储器。6-64KB的SRAM存储器。
  • 时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。上电复位POR、掉电复位PDR和可编程的电压探测器(PVD)。4-16MHz的晶振。内嵌出厂前调校的8MHz RC振荡电路。内部40 kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振。
  • 低功耗:3种低功耗模式:休眠,停止,待机模式。为RTC和备份寄存器供电的VBAT。
  • 调试模式:串行调试(SWD)和JTAG接口。
    *DMA:12通道DMA控制器。支持的外设:定时器,ADCDACSPIIICUART
  • 3个12位的us级的A/D转换器(16通道):A/D测量范围:0-3.6V。双采样和保持能力。片上集成一个温度传感器。
  • 2通道12位D/A转换器:STM32F103xC,STM32F103xD,STM32F103xE独有。
  • 最多高达112个的快速I/O端口:根据型号的不同,有26,37,51,80,和112的I/O端口,所有的端口都可以映射到16个外部中断向量。除了模拟输入,所有的都可以接受5V以内的输入。
  • 最多多达11个定时器:4个16位定时器,每个定时器有4个IC/OC/PWM或者脉冲计数器。2个16位的6通道高级控制定时器:最多6个通道可用于PWM输出。2个看门狗定时器(独立看门狗和窗口看门狗)。Systick定时器:24位倒计数器。2个16位基本定时器用于驱动DAC。
  • 最多多达13个通信接口:2个IIC接口(SMBus/PMBus)。5个USART接口(ISO7816接口,LIN,IrDA兼容,调试控制)。3个SPI接口(18 Mbit/s),两个和IIS复用。

1.2 系统作用

  • 1 集成嵌入式FlashSRAM存储器的ARM Cortex-M3内核。和8/16位设备相比,ARM Cortex-M3 32位RISC处理器提供了更高的代码效率。STM32F103xx微控制器带有一个嵌入式的ARM核,所以可以兼容所有的ARM工具和软件。
  • 2 嵌入式Flash存储器和RAM存储器:内置多达512KB的嵌入式Flash,可用于存储程序和数据。多达64KB的嵌入式SRAM可以以CPU的时钟速度进行读写。
  • 3 嵌套矢量中断控制器(NVIC):可以处理43个可屏蔽中断通道(不包括Cortex-M3的16根中断线),提供16个中断优先级。紧密耦合的NVIC实现了更低的中断处理延迟,直接向内核传递中断入口向量表地址,紧密耦合的NVIC内核接口,允许中断提前处理,对后到的更高优先级的中断进行处理,支持尾链,自动保存处理器状态,中断入口在中断退出时自动恢复,不需要指令干预。
  • 4 外部中断/事件控制器(EXTI):外部中断/事件控制器由用于19条产生中断/事件请求的边沿探测器线组成。每条线可以被单独配置用于选择触发事件(上升沿,下降沿,或者两者都可以),也可以被单独屏蔽。有一个挂起寄存器来维护中断请求的状态。当外部线上出现长度超过内部APB2时钟周期的脉冲时,EXTI能够探测到。多达112个GPIO连接到16个外部中断线。
  • 5 时钟和启动:在启动的时候还是要进行系统时钟选择,但复位的时候内部8MHz的晶振被选用作CPU时钟。可以选择一个外部的4-16MHz的时钟,并且会被监视来判定是否成功。在这期间,控制器被禁止并且软件中断管理也随后被禁止。同时,如果有需要(例如碰到一个间接使用的晶振失败),PLL时钟的中断管理完全可用。多个预比较器可以用于配置AHB频率,包括高速APB(PB2)和低速APB(APB1),高速APB最高的频率为72MHz,低速APB最高的频率为36MHz。
  • 6 低功耗模式:STM32F103xx支持3种低功耗模式,从而在低功耗,短启动时间和可用唤醒源之间达到一个最好的平衡点。休眠模式:只有CPU停止工作,所有外设继续运行,在中断/事件发生时唤醒CPU;停止模式:允许以最小的功耗来保持SRAM和寄存器的内容。1.8V区域的时钟都停止,PLL,HSI和HSE RC振荡器被禁能,调压器也被置为正常或者低功耗模式。设备可以通过外部中断线从停止模式唤醒。外部中断源可以使16个外部中断线之一,PVD输出或者TRC警告。待机模式:追求最少的功耗,内部调压器被关闭,这样1.8V区域断电。PLL,HSI和HSE RC振荡器也被关闭。在进入待机模式之后,除了备份寄存器和待机电路,SRAM和寄存器的内容也会丢失。当外部复位(NRST引脚),IWDG复位,WKUP引脚出现上升沿或者TRC警告发生时,设备退出待机模式。进入停止模式或者待机模式时,TRC,IWDG和相关的时钟源不会停止。

1.3 STM32 解析

  • ST:指意法半导体M:指定微处理器
  • 32:表示计算机处理器位数
  • `ARM 分 成 三 个 系 列`` : Cortex-A:针对多媒体应用
  • Cortex-R:针对对实时性和性能有一定要求的场景Cortex-M:针对低功耗高性能的场景
  • Cortex-M0`Cortex-M3Cortex-M4
  • 指令集:精简指令集

下图是STM32 CPU、内核、系列图

Cortex-M3系列属于ARMv7架构 ,ARMv7架构定义了三大分工明确的系列

  • "A"系列:面向尖端的基于虚拟内存的操作系统和用户应用
  • "R"系列:针对实时系统
  • "M"系列:对微控制器

命名规则

  • F:通用快闪(FlashMemory)
  • L:低电压(1.65~3.6V)

F类型中F0xx和F1xx系列为2.0~3.6V;F2xx和F4xx系列为1.8~3.6V

STM32F1属于Cortex-M系列中的Cortex-M3内核,采用ARMv7-M架构。STM32F4属于Cortex-M4系列采用ARMv7-ME架构。 Cortex-A5/A8采用ARMv7-A架构。传统的ARM7系列采用的是ARMv4T架构。

1.4 STM32的DMIPS

DMIPS: 处理器测整数计算能力为(N*100万)条指令/秒。

1.5 STM32产品分类

2 stm32芯片内部结构

  • SoC:片上集成系统

  • 2V-3.6V 供电电压

  • 5V I/Os 电压容限

  • 出色的时钟安全模式

  • 带有唤醒功能的低功耗模式

  • 内部RC

  • 嵌入的RESET

  • -40/+85°C(工业级)

3 开发选择的STM32最小系统组成

我们使用的stm32芯片型号:stm32f103c8t6

  • 1、供电系统
  • 2、时钟电路(内部时钟源、外部时钟源)
  • 3、复位电路
  • 4、下载的接口电路5、boot电路

4 开发相参考手册介绍

选型手册和数据手册:第二个PDF文档是硬件相关介绍,第四个PDF文档是软件开发需要参考的文档。

原理图:对于软件开发工程师来讲,查看的目的是找外接设备与STM32的电气连接关系, 为编程做准备。

5 固件库介绍

5.1 mcu的开发方式介绍

  • 汇编语言
  • C语言

stm32单片机:(汇编+C)

实际开发编程过程中使用的方法

  • 1、配置MCU中的某个功能模块的寄存器,进行操作
  • 2、使用ST官方提供的固件库驱动操作

ST官方提供了STM32cubemx软件,图形化配置开发软件。

5.1 、固件库说明

固件库:STM32标准外设函数库,简称固件库

特点

主要由功能接口、数据结构、宏等组成,涵盖了微控制器所有外设的性能特征包括每一个外设驱动描述和应用实例

为开发者访问底层硬件提供了统一的API 无需深入掌握底层硬件实现细节

大大缩短产品开发周期,进而降低了研发成本容易进行二次开发、升级和维护

获 取 st 官 方 提 供 stm32 标 准 固 件 库https://www.stmicroelectronics.com.cn/zh/embedded-software/stm32-standard- peripheral-libraries.html?querycriteria=productId=LN1939

  • CMSIS:Cortex Microcontroller Software Interface Standard,主要是Cortex-M系列处理器与供应商无关的硬件抽象层,降低了在Cortex-M系列处理器上操作系统的移植难度,简化了软件重复,标准化了软件接口

  • CMSIS 主 要 包 含: stm32f10x.h core_cm3.x system_stm32f10x.x startup_stm32f10x_xx.s

固件库重点文件介绍

stm32f10x.h:实现了所有硬件寄存器结构、地址映射、寄存器位操作、基本类型等定义core_cm3.x:主要针对一些通用寄存器、中断优先级、启动模式相关的内嵌汇编操作接口system_stm32f10x.x:系统启动初始化,尤其是系统时钟配置

startup_stm32f10x_xx.s:引导启动文件

misc.x:主要是中断初始化、分组管理等相关接口,实现了用户对中断的配置功能stm32f10x_exit.x:中断服务相关

stm32f10x_conf.h:用来统一包含当前系统要用到的功能模块头文件,并实现了assert_param()

6 学习准备—元器件购买

购买一个STM32F103C8T6 最小系统板、ST-link程序下载工具和一个串口调试工具就可以,当然如果没有USB,需要购买一个USB。

6.1 STM32F103C8T6 最小系统板

根据个人能力去购买,不过买一个 STM32F103C8T6 最小系统板就可以了。可以去某宝看看。

ST-LINK是ST公司开发的一款专门用于STM8、STM32单片机调试的硬件设备,截至到现在官方已经推出三代产品:V1、V2、V3 。

  • ST-LINK V1 是比较老的版本,官网上显示已经停产。目前市面上很少看见有V1版,基本被V2版取代了。

  • ST-LINK V2 是目前比较主流的版本,第一款V2产品诞生于2011年,相比于V1有着更高的通信速率。V2 包含两个版本,分别为:ST-LINK V2 与 ST-LINK V2-1。

  • ST-LINK V2 : 支持STM32和STM8调试,不带虚拟串口,淘宝大多数卖的都是这种。

  • ST-LINK V2-1 : 仅支持STM32调试,带虚拟串口和虚拟U盘下载,目前ST官方的Nucleo系列评估板上面板载的ST-Link就是这个版本。本文自制ST-LINK就是围绕V2-1版本展开。
  • ST-LINK V3 诞生于2018年,目前在市面上普及率还不是很高。ST-LINK V3是针对STM8和STM32的新一代模块化在线调试兼编程功能的工具。STLINK-V3包含三个版本:STLINK-V3SET、STLINK-V3MINI、STLINK-V3MODS。V3 相较于 V2 有着更高的数据传输速率,同时具备更高灵活性和扩展性,满足定制化需求。

同样我们可以去某宝看看。

6.3 一个串口调试工具—CH340

  • 全速USB设备接口,兼容USB V2.0。
  • CH340R芯片支持IrDA规范SIR红外线通讯,支持波特率2400bps到115200bps。
  • 内置固件,软件兼容CH341,可以直接使用CH341的VCP驱动程序。
  • 支持5V电源电压和3.3V电源电压。
  • CH340C/N/K/E/X/B内置时钟,无需外部晶振,CH340B还内置EEPROM用于配置序列号等。
  • 提供SOP-16、SOP-8和SSOP-20以及ESSOP-10、MSOP-10无铅封装,兼容RoHS。

同样我们可以去某宝看看。

7 STM32应用场景举例

7.1 STM32常用在嵌入式领域。

  • (1)智能车:循迹小车,读取光电传感器或者摄像头的数据,驱动电机前进和转弯。
  • (2)无人机:读取陀螺仪加速度计的姿态数据,根据控制算法控制电机速度,保证飞机稳定飞行。
  • (3)机器人:驱动舵机,控制其关节,让机器人运动。
  • (4)无线通信:给STM32连接一些2.4G无线模块或者蓝牙、WIFI模块,则具备无线通信能力。
  • (5)物联网:借助无线通信模块,再通过STM32驱动继电器来控制220v电路的通断。
  • (6)工业控制:PLC主控。
  • (7)娱乐电子产品:流水灯之类……
  • 工业与控制、低功耗领域
  • 可穿戴设备:智能手环、智能手表
  • 智能家居:智能指纹锁、智能灯泡、智能电饭锅…..
  • 玩具:四轴飞行器、二轴平行车…….

7.2 STM32最具竞争力的优势

  • 1)极高的性能: 主流的Cortex内核。

  • 2)丰富合理的外设,合理的功耗,合理的价格。

  • 3)强大的软件支持:丰富的软件包。

  • 4)全面丰富的技术文档。

  • 5)芯片型号种类多,覆盖面广。

  • 6)强大的用户基础:最先成功试水CM3芯片的公司。

8 可以自己DIY作品

  • 平衡小车

  • 漂亮的时钟

  • 机器人

  • 四轴飞行器

  • 平衡自行车

加油