嵌套中止向量操控器(Nested Vector Interrupt Controller,简称NVIC)是Cortex-M3处理器中一个比较要害的组件,它为根据Cortex-M3的微操控器供给了规范的中止架构和优异的中止呼应才能,为超越240个中止源供给专门的中止进口,而且能够赋予每个中止源独自的优先级。运用NVIC从能够抵达极快的中止呼应速度,从收到中止恳求到履行中止服务的第一条指令仅需12个周期。这种极快的呼应速度一方面得益于Cortex-M3内核对仓库的主动处理机制,这种机制是经过固化在CPU内部的微代码完结的。另一方面,在中止恳求接连呈现的情况下,NV%&&&&&%运用一种称为“尾链”的技能,使接连而来的中止能够在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还供给断点数据检查功用以及一个指令跟踪器。指令跟踪器能够将用户挑选的运用信息上传到调试东西里。然后能够为用户供给额定的调试信息,而且它在软件运转期间相同能够运用!