单片机学习——STM32单片机入门(一)
STM32F103x8 STM32F103xB
介绍:中等容量增强型,32位基于ARM核心的带64或128K字节闪存的微控制器 USB、CAN、7个定时器、2个ADC 、9个通信接口。
功能:
规格说明:
STM32F103x8和STM32F103xB增强型系列使用高性能的ARM® Cortex™-M3 32位的RISC内核,工 作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口 和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC、3个通用16位定时器和1个 PWM定时器,还包含标准和先进的通信接口:多达2个I2C接口和SPI接口、3个USART接口、一个 USB接口和一个CAN接口。
STM32F103xx中等容量增强型系列产品供电电压为2.0V至3.6V,包含-40°C至+85°C温度范围和-40°C至+105°C的扩展温度范围。一系列的省电模式保证低功耗应用的要求。
STM32F103xx中等容量增强型系列产品提供包括从36脚至100脚的6种不同封装形式;根据不同的封 装形式,器件中的外设配置不尽相同。下面给出了该系列产品中所有外设的基本介绍。 这些丰富的外设配置,使得STM32F103xx产品容量增强型系列微控制器适合于多种应用场合:
● 电机驱动和应用控制
● 医疗和手持设备
● PC游戏外设和GPS平台
● 工业应用:可编程控制器(PLC)、变频器、打印机和扫描仪 ● 警报系统、视频对讲、和暖气通风空调系统等 。
系列之间的全兼容性
STM32F103xx是一个完整的系列,其成员之间是完全地脚对脚兼容,软件和功能上也兼容。在参考 手册中,STM32F103x4和STM32F103x6被归为小容量产品,STM32F103x8和STM32F103xB被归 为中等容量产品,STM32F103xC、STM32F103xD和STM32F103xE被归为大容量产品。
小容量和大容量产品是中等容量产品(STM32F103x8/B)的延伸,分别在对应的数据手册中介绍: STM32F103x4/6数据手册和STM32F103xC/D/E数据手册。小容量产品具有较小的闪存存储器、RAM 空间和较少的定时器和外设。而大容量的产品则具有较大的闪存存储器、RAM空间和更多的片上外 设,如SDIO、FSMC、I2S和DAC等,同时保持与其它同系列的产品兼容。 STM32F103x4、STM32F103x6、 STM32F103xC、STM32F103xD和STM32F103xE可直接替换中 等容量的STM32F103x8/B产品,为用户在产品开发中尝试使用不同的存储容量提供了更大的自由度。
同时,STM32F103xx增强型产品与现有的STM32F101xx基本型和STM32F102xx USB基本型产品全兼容。
2.3 概述
2.3.1 ARM®的Cortex™-M3核心并内嵌闪存和SRAM ARM的Cortex™-M3处理器是最新一代的嵌入式ARM处理器,它为实现MCU的需要提供了低成本的 平台、缩减的引脚数目、降低的系统功耗,同时提供卓越的计算性能和先进的中断系统响应。
ARM的Cortex™-M3是32位的RISC处理器,提供额外的代码效率,在通常8和16位系统的存储空间 上发挥了ARM内核的高性能。 STM32F103xx增强型系列拥有内置的ARM核心,因此它与所有的ARM工具和软件兼容。 图1是该系列产品的功能框图。
2.3.2 内置闪存存储器 64K或128K字节的内置闪存存储器,用于存放程序和数据。
2.3.3 CRC(循环冗余校验)计算单元 CRC(循环冗余校验)计算单元使用一个固定的多项式发生器,从一个32位的数据字产生一个CRC码。在众多的应用中,基于CRC的技术被用于验证数据传输或存储的一致性。在EN/IEC 60335-1标准的 范围内,它提供了一种检测闪存存储器错误的手段,CRC计算单元可以用于实时地计算软件的签名, 并与在链接和生成该软件时产生的签名对比。
2.3.4 内置SRAM 20K字节的内置SRAM,CPU能以0等待周期访问(读/写)。
2.3.5 嵌套的向量式中断控制器(NVIC) STM32F103xx增强型产品内置嵌套的向量式中断控制器,能够处理多达43个可屏蔽中断通道(不包括 16个Cortex™-M3的中断线)和16个优先级。
● 紧耦合的NVIC能够达到低延迟的中断响应处理
● 中断向量入口地址直接进入内核
● 紧耦合的NVIC接口
● 允许中断的早期处理
● 处理晚到的较高优先级中断
● 支持中断尾部链接功能
● 自动保存处理器状态
● 中断返回时自动恢复,无需额外指令开销 该模块以最小的中断延迟提供灵活的中断管理功能。 2.3.6 外部中断/事件控制器(EXTI) 外部中断/事件控制器包含19个边沿检测器,用于产生中断/事件请求。每个中断线都可以独立地配置 它的触发事件(上升沿或下降沿或双边沿),并能够单独地被屏蔽;有一个挂起寄存器维持所有中断请 求的状态。EXTI可以检测到脉冲宽度小于内部APB2的时钟周期。多达80个通用I/O口连接到16个外 部中断线。
2.3.7 时钟和启动 系统时钟的选择是在启动时进行,复位时内部8MHz的RC振荡器被选为默认的CPU时钟,随后可以 选择外部的、具失效监控的4~16MHz时钟;当检测到外部时钟失效时,它将被隔离,系统将自动地 切换到内部的RC振荡器,如果使能了中断,软件可以接收到相应的中断。同样,在需要时可以采取 对PLL时钟完全的中断管理(如当一个间接使用的外部振荡器失效时)。 多个预分频器用于配置AHB的频率、高速APB(APB2)和低速APB(APB1)区域。AHB和高速APB的最 高频率是72MHz,低速APB的最高频率为36MHz。参考图2的时钟驱动框图。
2.3.8 自举模式 在启动时,通过自举引脚可以选择三种自举模式中的一种:
● 从程序闪存存储器自举
● 从系统存储器自举
● 从内部SRAM自举
2.3.9 供电方案
● VDD = 2.0~3.6V:VDD引脚为I/O引脚和内部调压器供电。
● VSSA,VDDA = 2.0~3.6V:为ADC、复位模块、RC振荡器和PLL的模拟部分提供供电。使用ADC 时,VDDA不得小于2.4V。VDDA和VSSA必须分别连接到VDD和VSS。
● VBAT = 1.8~3.6V:当关闭VDD时,(通过内部电源切换器)为RTC、外部32kHz振荡器和后备寄 存器供电。
2.3.10 供电监控器 本产品内部集成了上电复位(POR)/掉电复位(PDR)电路,该电路始终处于工作状态,保证系统在供电 超过2V时工作;当VDD低于设定的阀值(VPOR/PDR)时,置器件于复位状态,而不必使用外部复位电路。 器件中还有一个可编程电压监测器(PVD),它监视VDD/VDDA供电并与阀值VPVD比较,当VDD低于或高 于阀值VPVD时产生中断,中断处理程序可以发出警告信息或将微控制器转入安全模式。PVD功能需 要通过程序开启。关于VPOR/PDR和VPVD的值参考表11。
2.3.11 电压调压器 调压器有三个操作模式:主模式(MR)、低功耗模式(LPR)和关断模式
● 主模式(MR)用于正常的运行操作
● 低功耗模式(LPR)用于CPU的停机模式
● 关断模式用于CPU的待机模式:调压器的输出为高阻状态,内核电路的供电切断,调压器处于 零消耗状态(但寄存器和SRAM的内容将丢失) 该调压器在复位后始终处于工作状态,在待机模式下关闭处于高阻输出。
2.3.12 低功耗模式 STM32F103xC、STM32F103xD和STM32F103xE增强型产品支持三种低功耗模式,可以在要求低 功耗、短启动时间和多种唤醒事件之间达到最佳的平衡。
● 睡眠模式 在睡眠模式,只有CPU停止,所有外设处于工作状态并可在发生中断/事件时唤醒CPU。
● 停机模式 在保持SRAM和寄存器内容不丢失的情况下,停机模式可以达到最低的电能消耗。在停机模式 下,停止所有内部1.8V部分的供电,PLL、HSI的RC振荡器和HSE晶体振荡器被关闭,调压器 可以被置于普通模式或低功耗模式。 可以通过任一配置成EXTI的信号把微控制器从停机模式中唤醒,EXTI信号可以是16个外部I/O 口之一、PVD的输出、RTC闹钟或USB的唤醒信号。
● 待机模式 在待机模式下可以达到最低的电能消耗。内部的电压调压器被关闭,因此所有内部1.8V部分的 供电被切断;PLL、HSI的RC振荡器和HSE晶体振荡器也被关闭;进入待机模式后,SRAM和 寄存器的内容将消失,但后备寄存器的内容仍然保留,待机电路仍工作。 从待机模式退出的条件是:NRST上的外部复位信号、IWDG复位、WKUP引脚上的一个上升边 沿或RTC的闹钟到时。 注: 在进入停机或待机模式时,RTC、IWDG和对应的时钟不会被停止。
2.3.13 DMA 灵活的7路通用DMA可以管理存储器到存储器、设备到存储器和存储器到设备的数据传输;DMA控 制器支持环形缓冲区的管理,避免了控制器传输到达缓冲区结尾时所产生的中断。 每个通道都有专门的硬件DMA请求逻辑,同时可以由软件触发每个通道;传输的长度、传输的源地 址和目标地址都可以通过软件单独设置。 DMA可以用于主要的外设:SPI、I2C、USART,通用、基本和高级控制定时器TIMx和ADC。
2.3.14 RTC(实时时钟)和后备寄存器 RTC和后备寄存器通过一个开关供电,在VDD有效时该开关选择VDD供电,否则由VBAT引脚供电。后 备寄存器(10个16位的寄存器)可以用于在关闭VDD时,保存20个字节的用户应用数据。
RTC和后备寄 存器不会被系统或电源复位源复位;当从待机模式唤醒时,也不会被复位。 实时时钟具有一组连续运行的计数器,可以通过适当的软件提供日历时钟功能,还具有闹钟中断和 阶段性中断功能。RTC的驱动时钟可以是一个使用外部晶体的32.768kHz的振荡器、内部低功耗RC 振荡器或高速的外部时钟经128分频。内部低功耗RC振荡器的典型频率为40kHz。
为补偿天然晶体的 偏差,可以通过输出一个512Hz的信号对RTC的时钟进行校准。RTC具有一个32位的可编程计数器,使用比较寄存器可以进行长时间的测量。有一个20位的预分频器用于时基时钟,默认情况下时钟为 32.768kHz时,它将产生一个1秒长的时间基准。
2.3.15 定时器和看门狗 中等容量的STM32F103xx增强型系列产品包含1个高级控制定时器、3个普通定时器,以及2个看门 狗定时器和1个系统嘀嗒定时器。 下表比较了高级控制定时器、普通定时器和基本定时器的功能:
高级控制定时器(TIM1)
高级控制定时器(TIM1)可以被看成是分配到6个通道的三相PWM发生器,它具有带死区插入的互补 PWM输出,还可以被当成完整的通用定时器。四个独立的通道可以用于:
● 输入捕获
● 输出比较
● 产生PWM(边缘或中心对齐模式)
● 单脉冲输出 配置为16位标准定时器时,它与TIMx定时器具有相同的功能。
配置为16位PWM发生器时,它具有全 调制能力(0~100%)。 在调试模式下,计数器可以被冻结,同时PWM输出被禁止,从而切断由这些输出所控制的开关。
很多功能都与标准的TIM定时器相同,内部结构也相同,因此高级控制定时器可以通过定时器链接功 能与TIM定时器协同操作,提供同步或事件链接功能。 通用定时器(TIMx) STM32F103xx增强型产品中,内置了多达3个可同步运行的标准定时器(TIM2、TIM3和TIM4)。
每个 定时器都有一个16位的自动加载递加/递减计数器、一个16位的预分频器和4个独立的通道,每个通 道都可用于输入捕获、输出比较、PWM和单脉冲模式输出,在最大的封装配置中可提供最多12个输 入捕获、输出比较或PWM通道。
它们还能通过定时器链接功能与高级控制定时器共同工作,提供同步或事件链接功能。在调试模式 下,计数器可以被冻结。任一标准定时器都能用于产生PWM输出。每个定时器都有独立的DMA请求 机制。 这些定时器还能够处理增量编码器的信号,也能处理1至3个霍尔传感器的数字输出。
独立看门狗:
独立的看门狗是基于一个12位的递减计数器和一个8位的预分频器,它由一个内部独立的40kHz的RC 振荡器提供时钟;因为这个RC振荡器独立于主时钟,所以它可运行于停机和待机模式。它可以被当 成看门狗用于在发生问题时复位整个系统,或作为一个自由定时器为应用程序提供超时管理。通过 选项字节可以配置成是软件或硬件启动看门狗。
在调试模式下,计数器可以被冻结。 窗口看门狗 窗口看门狗内有一个7位的递减计数器,并可以设置成自由运行。
它可以被当成看门狗用于在发生问 题时复位整个系统。它由主时钟驱动,具有早期预警中断功能;在调试模式下,计数器可以被冻结。 系统时基定时器 这个定时器是专用于实时操作系统,也可当成一个标准的递减计数器。它具有下述特性:
● 24位的递减计数器
● 自动重加载功能
● 当计数器为0时能产生一个可屏蔽系统中断
● 可编程时钟源 2.3.16 I2C总线 多达2个I2C总线接口,能够工作于多主模式或从模式,支持标准和快速模式。
I2C接口支持7位或10位寻址,7位从模式时支持双从地址寻址。内置了硬件CRC发生器/校验器。 它们可以使用DMA操作并支持SMBus总线2.0版/PMBus总线。
2.3.17 通用同步/异步收发器(USART) USART1接口通信速率可达4.5兆位/秒,其他接口的通信速率可达2.25兆位/秒。USART接口具有硬 件的CTS和RTS信号管理、支持IrDA SIR ENDEC传输编解码、兼容ISO7816的智能卡并提供LIN主/ 从功能。 所有USART接口都可以使用DMA操作。 2.3.18 串行外设接口(SPI) 多达2个SPI接口,在从或主模式下,全双工和半双工的通信速率可达18兆位/秒。3位的预分频器可 产生8种主模式频率,可配置成每帧8位或16位。硬件的CRC产生/校验支持基本的SD卡和MMC模式。 所有的SPI接口都可以使用DMA操作。
2.3.19 控制器区域网络(CAN) CAN接口兼容规范2.0A和2.0B(主动),位速率高达1兆位/秒。它可以接收和发送11位标识符的标准帧, 也可以接收和发送29位标识符的扩展帧。具有3个发送邮箱和2个接收FIFO,3级14个可调节的滤波器。
2.3.20 通用串行总线(USB) STM32F103xx增强型系列产品,内嵌一个兼容全速USB的设备控制器,遵循全速USB设备(12兆位/ 秒)标准,端点可由软件配置,具有待机/唤醒功能。USB专用的48MHz时钟由内部主PLL直接产生(时 钟源必须是一个HSE晶体振荡器)。
2.3.21 通用输入输出接口(GPIO) 每个GPIO引脚都可以由软件配置成输出(推挽或开漏)、输入(带或不带上拉或下拉)或复用的外设功能 端口。多数GPIO引脚都与数字或模拟的复用外设共用。除了具有模拟输入功能的端口,所有的GPIO 引脚都有大电流通过能力。 在需要的情况下,I/O引脚的外设功能可以通过一个特定的操作锁定,以避免意外的写入I/O寄存器。 在APB2上的I/O脚可达18MHz的翻转速度。
2.3.22 ADC(模拟/数字转换器) STM32F103xx增强型产品内嵌2个12位的模拟/数字转换器(ADC),每个ADC共用多达16个外部通道, 可以实现单次或扫描转换。在扫描模式下,自动进行在选定的一组模拟输入上的转换。
ADC接口上的其它逻辑功能包括:
● 同步的采样和保持
● 交叉的采样和保持
● 单次采样 ADC可以使用DMA操作。
模拟看门狗功能允许非常精准地监视一路、多路或所有选中的通道,当被监视的信号超出预置的阀 值时,将产生中断。
由标准定时器(TIMx)和高级控制定时器(TIM1)产生的事件,可以分别内部级联到ADC的开始触发和注 入触发,应用程序能使AD转换与时钟同步。
作者:一觉睡到现在