STM32 的中心Cortex-M3 处理器
STM32 的中心Cortex-M3 处理器是一个规范化的微操控器结构,期望考虑一下,何为规范化?
简言之,Cortex-M3 处理器具有32 位CPU,并行总线结构,嵌套中止向量操控单元,调试系
统以及规范的存储映射。
嵌套中止向量操控器(Nested Vector Interrupt Controller,简称NVIC)是Cortex-M3 处理器中一个比较要害的组件,它为根据Cortex-M3 的微操控器供给了规范的中止架构和优异的中止呼应才能,为超越240 个中止源供给专门的中止进口,而且能够赋予每个中止源独自的优先级。运用NVIC 从能够抵达极快的中止呼应速度,从收到中止恳求到履行中止服务的第一条指令仅需12 个周期。这种极快的呼应速度一方面得益于Cortex-M3 内核对仓库的主动处理机制,这种机制是经过固化在CPU 内部的微代码完结的。另一方面,在中止恳求接连呈现的情况下,NVIC 运用一种称为“尾链”的技能,使接连而来的中止能够在6 个时钟周期内得到服务。在中止的压栈阶段,更高优先级的中止能够不耗费任何额定的CPU 周期就能完结嵌入低优先级中止的动作。详细的细节后边我会持续总结的。用户能够经过设置CPU 主动进入低功耗状况,而运用中止来将其唤醒,CPU 在中止时刻降临之前会一向坚持睡觉状况。
Cortex-M3 的CPU 支撑两种运转形式:线程形式(Thread Mode)与处理形式(Handler Mode)
而且需求留意的是,这两种形式都具有各自独立的仓库。这种规划使得开发人员能够进行更为精细的程序规划,对实时操作体系的支撑也就更好了。Cortex-M3 处理器还包含了一个24 位可主动重装载定的定时器,能够为内核(RTOS)供给一个周期中止。
在指令集方面,ARM7 和ARM9 都有两种指令集(32 位指令集和16 位指令集),而Cortex-M3系列处理器支撑Thumb-2 指令集。因为Thumb-2 指令集交融了Thumb 指令集和ARM 指令集,使得32 位指令集的功用和16 位指令集的代码密度之间取得了平衡。而且,ARM Thumb-2 专门为C/C++编译器规划,这就意味着Cortex-M3 系列处理器的开发运用能够悉数在C 言语环境中完结。
STM32 微操控器的推出标志着ST 公司在两条产品主线(低价位主线和高功用主线)上迈出了严重一步。STM32 开端发布时有14 个不同类型,分为两个版别:最高CPU 时钟为72MHZ的“增强型”和最高CPU 时钟为36MHZ 的“根本型”。这些不同STM32 类型里内置的Flash 最大可达128KB,SRAM 最大为20KB,在STM32 发布之初,装备更大Flash,RAM 和更杂乱外设的版别就已经在规划之中了。不论是什么版别,什么类型的STM32 器材,它们在引脚功用和运用软件上是兼容的。这就使得开发人员在运用STM32 系列微操控器时,不用改动PCB就能够根据需求随意替换器材类型。
乍一看STM32 的设备装备,与往日了解的51 单片机倒有几分类似。一般,STM32 都会装备常见外设,比方多通道ADC,通用定时器,I2C 总线接口,SPI 总线接口,CAN 总线接口,USB操控器,实时时钟RTC 等。可是,它的每一个外部设备都具有共同之处。例如,12 位精度的ADC 具有多种转化形式,并带有一个内部温度传感器,带有双ADC 的STM32 器材,还能够使两个ADC 一起作业,然后衍生出了更为高档的9 种转化形式;STM32 的每一个定时器都具有4 个捕获比较单元,而且每个定时器都能够和别的的定时器联合作业以生成更为精细的时序;STM32 有专门为电机操控而设的高档定时器,带有6 个死区时刻可编程的PWM 输出通道,一起其带有的紧急制动通道能够在异常情况呈现时,逼迫PWM 信号输出坚持在一个预订好的安全状况;SPI 接口含有一个硬件CRC 单元,支撑8 位字节和16 位半字数据的CRC 核算。在对SD 或MMC 等存储介质进行数据存取时适当有用。而且,STM32 还包含了7 个DMA 通道。没恶搞通道都能够用来在设备与内存之间进行8 位,16 位,32 位数据的传输。每个设备都能够向DMA 操控器恳求发送或许接纳数据。STM32内部总线裁定器和总线矩阵将CPU 数据接口和DMA 通道之间的衔接大大的简化了,这就意味着DMA 通道单元是很灵敏的其运用方法简略,足以敷衍微操控器运用中常见的数据传输要求。
咱们前面说过了,STM32 是低功耗,高功用的微操控器。在低功耗方面,STM32 体现也是不错的。它能够在2V 供电的情况下运转,在所有设备一起翻开且运转在满速72MHZ 主频的情况下,也仅耗费36mA 的电流,在与Cortex-M3 内核的低功耗形式结合之后,只需2uA 的电流耗费。即便外部振荡器处在待发动状况,STM32 运用内部8MHZ 的RC 振荡器也可敏捷退出低功耗形式。这种快速进出低功耗形式的特性,也进一步降低了微操控器全体的功率耗费,一起使微操控器依然能够坚持器材的全体高功用。在电子范畴,对器材的要求精度高是一方面,另一方面,还要求器材稳定性要好,处于可靠性的考虑,STM32 装备了一系列硬件来支撑对可靠性的高度要求。这些硬件有:一个低电压检测器,一个时钟安全办理体系和两个看门狗定时器。时钟办理体系能够检测到外部主振荡器的失效,并随即安全的将STM32 内部8MHZ 的RC 振荡器切换为主时钟源。两个看门狗定时器中的一个称为窗口看门狗。窗口看门狗必须在事前界说好的时刻上下限抵达之前改写,假如过早或过晚的改写它,将会触发窗口看门狗复位。第二个看门狗称为独立看门狗。独立看门狗运用外部振荡器驱动,该振荡器与主体系时钟是彼此独立的,这样即便STM32 的主体系时钟溃散,独立看门狗也能“力挽狂澜”。
在现代电子规划职业中,有一个问题是无法躲避的,那就是你不得不想方设法进步代码的安全性以避免被破解人员盗用。听师傅说,在极可贵电子市场,仿制一个芯片只需求几分钟。STM32 能够锁住其内部Flash 使破解人员无法经过调试端口读取其内容。当Flash 的读维护功用敞开后,其写维护功用也随之敞开。写维护功用常用于避免一些来历不明的代码写入中止向量表。可是,写维护不只能够维护中止向量表,还能够进一步将其维护规模延伸到整个Flash 中的未被运用区域。别的,STM32 还有一小块电池备份RAM 区,这个RAM 区域对应于一个侵略检测引脚运用,当这个引脚上发生电平变化时,STM32 会认为遭受了侵略事情,随即主动将电池备份RAM 区的内容悉数铲除。现在很多开发东西都开端支撑Thumb-2 指令集和STM32 系列,即便不支撑也没有联系,咱们只需求将软件晋级一下即可。一起,ST 公司还供给了一个设备驱动固件库和一个USB 开发运用库,以便利调用。关于STM32 来说,一些前期微操控器比方前期的STR7 和STR9 发布的ANSI C 库和源代码都是可移植的。这些程序的接口已经在许多盛行的编译东西上得到了整合。类似的,许多开源的或许商用的RTOS,还有一些中间件(比方TCP/IP 栈,文件体系)对以STM32 系列微操控器来说也是可用的。
Cortex-M3 还带有一个全新调试体系CoreSight。用户能够运用规范的JTAG 接口或许双线串行接口经过调试端口(Debug Access Port)完结和CoreSight 体系的对接。除了供给调试运转操控服务之外,STM32 上的CoreSight 还供给断点数据检查功用以及一个指令跟踪器。指令跟踪器能够将用户挑选的运用信息上传到调试东西里。然后能够为用户供给额定的调试信息,而且它在软件运转期间相同能够运用。“入门既不难,进修也是办得到的”,只需你有恒心、有决计,跟从咱们的“连载”一步步走下去,将来就必定能在魅力的电子世界里漫游。
- STM32单片机中文官网
- STM32单片机官方开发东西
- STM32单片机参阅规划