PS:本人给学生上课选用的洋桃事情室的“洋桃1号”STM32开拓板,因此本文所利用的很多图片资料来自厂家,本人只是做了整理和编辑事情,供学习互换之用,无广告之意,特此声明。
一、STM32的命名——探探芯片型号代表的含义STM32芯片命名规范
STM32命名解读

意法半导体是一家国际性的半导体生产商,总部位于瑞士日内瓦。ST算是家大公司了,他们不仅生产微掌握器,还生产二极管、放大器、无线模块之类的电子元器件,STM只表示ST公司微掌握器这一品类的命名。

STM系列官网一览
微掌握器类型(F)微掌握器的类型,大概说便是芯片的紧张运用方向,如用于大略功能开拓的S系列、用于低功耗的L系列、用于高性能的H系列、用于没什么分外需求的通用F系列。
F类型的微掌握器在性能、功能、功耗、价格方面比较平衡,哪项也不突出,哪项也不短缺,只管即便知足所有须要微掌握器的场合。
STM32系列运用定位
子系列(103)STM32系列资源一览
引脚数、存储量与封装(C8T)须要把稳:只假如STM32F103子系列,不管引脚数量多少,都具有完备同等的性能和功能。初学者会误以为引脚多的芯片功能多,实在功能多少并反面引脚数量有关,只能说引脚少的芯片可能某些你须要的功能接口没有引出来。在知足功能的条件下,利用引脚最少的芯片是最佳选择。
STM32系列存储资源与封装一览
事情温度(6)商业用范围:0~75℃工业级范围:-40~85℃汽车工业级范围:-40~125℃军工级范围:-55~150℃目前工业级范围的单片机是最常见的,一样平常的民用、商用、工业用电子产品都采取这个温度范围。
二、内核与存储器——反响的是处理器最主要的性能Cortex-M3处理器内部架构Cortex-M3内核功能模块
标准化的微掌握器核心ARM公司作为顶层的架构设计者,须要最大程度的整合各家芯片制造商对微掌握器的办理方案。因此,Cortex-M3在CPU的根本上又供应了全体微掌握器的核心部分,包括系统节拍时钟、并行总线构造、嵌套中断向量掌握单元(NVIC)、调试系统以及存储区映射等。STM32F1系列是Cortex-M3架构的精彩代表STM32F1是ST公司第一个基于Cortex-M3内核的微掌握器系列,它的涌现将微掌握器的性价比水平提升到了新高度,同时它在低功耗场合和实时掌握场合中亦能游刃有余。STM32F1的核心功能内核:ARM 32位的Cortex-M3 CPU① 最高72MHz事情频率,在存储器的0等待周期访问时可达1.25DMips/MHz(Dhrystone 2.1)。② 单周期乘法和硬件除法存储器① 64K或128K字节的闪存程序存储器② 高达20K字节的SRAM说说SRAM与FLASHCPU访问SRAM和FLASH
SRAM和FLASH特性比拟
三、时钟、复位和电源管理——时钟是灵魂、复位是刚需、电源是必备时钟的主要性时钟是指处理器事情的基准频率的来源由一个电路(芯片内部或外部都可)产生类似脉搏的脉冲旗子暗记,一下一下有规律地稳定地跳动,单片机中所有功能组件都须要将这个跳动作为其事情的标准。处理器的运行速率取决于时钟频率① 图中的方波由高到低再到高(图中tHSE的部分),便是一个时钟周期。② 在一个时钟周期内,处理器能运行一条“单周期”指令;还有一些“多周期”的指令须要多个时钟周期才能实行完毕。③ 时钟频率越高,处理器实行指令越快,所表示出的运行速率就越快。STM32的时钟周期
STM32的时钟源时钟源在电路实现的层面上分为振荡器和分(倍)频器,它们两个共同决定了时钟频率。这两种办法STM32都有。振荡器是一种可以产生固定频率方波的硬件电路;分(倍)频器的事情是把振荡器的频率平分(或成倍)为其他规格的频率。表中的RTC是“实时时钟“的英文缩写,从处理器技能层面来说是指可以记录日期韶光的时钟,与常说的处理器时钟不是一回事。STM32的时钟源
STM32的时钟树STM32的时钟树
上图解释了STM32的时钟走向,从图左边的时钟源开始,一步步分配到右边的外设时钟。我们暂时不去详解每个走向,但这相对付51单片机的单一时钟源来说,其繁芜度不可同日而语,为什么非要这么设计?
须要倍频是考虑到电磁兼容性,如果外部直接给一个高速晶振(不一定造的出来),太高的振荡频率会给电路制板带来较大难度。分频是由于STM32既有高速外设又有低速外设,须要分开管理。每个外设都配备了时钟开关,不用时可以关闭,这样有利于降落整体功耗。以是,当要利用某个外设时,记得一定要开启对应的外设时钟。STM32的复位复位的浸染复位的浸染便是让单片机内部秩序化(RAM里的数据清空),都回到设计者规定好的状态,就像打算机每次重启一样。STM32复位的环境① STM32 单片机中,有一个供电监控器在一贯事情,它能监测外部电源的电压,当电压低于2V 时,监控器会让单片机复位。当电压高于2V 时,监控器让单片机进入事情状态。② 每次给单片机接通电源时,电压都是一次从0 升到3.3V(STM32 的事情电压)的过程,这个过程使单片机复位。因此,可以不须要再外接复位电路。③ 常日是在单片机的复位引脚上接一个微动开关,开关另一端接地,按下开关可手动复位。STM32复位引脚与接线
STM32的电源管理STM32的电源
逻辑电源输入① 这是单片机最基本的供电输入端口,用 VDD 表示。② 给这些接供词给 2~3.6V 的直流电压,就能让内核、存储器、I/O 端口和其他纯数字电路事情了。③ 它还能让I/O 端口输入或输出数字逻辑旗子暗记的电平。仿照电源输入① 仿照电源电压用 VDDA 表示,用在 ADC、RC 振荡器、PLL 等仿照电路上,因此对电源的稳定性哀求较高。② 64脚以上单片机的仿照电源与逻辑电源是分开的。③ 引脚较少的单片机上,逻辑电源和仿照电源并联在一起利用,以减少引脚的占用。备用电源输入① 这是专门给实时时钟(RTC)供电的,以担保在逻辑电源断开后依然让RTC 保持走时。② 同时它也给唤醒电路和后备寄存器供电,让它们一贯处在事情状态。③ 一样平常外接独立电源或者一块1.8~3.6V 的纽扣电池。四、低功耗与ADC——挖空心思的低功耗设计,高精度模数转换STM32的低功耗设计低功耗是物联网设备的普遍需求物联网终端设备大都采取电池供电,降落功耗、让电量利用更持久便成了主要的项目需求。因此,单片机内部的低功耗设计也是每个芯片厂商不懈努力的方向。STM32的低功耗模式STM32 单片机可以通过关掉一些耗电大的内部功能来达到省电的目的,根据关掉的功能数量,可分为3 种低功耗模式:就寝模式、停机模式、待机模式。STM32的三种低功耗模式
STM32的ADC(模数转换器)ADC的功能读取端口上仿照量的电压值,类似于电压表。I/O端口上的逻辑电平I/O 端口是输入或输出逻辑电平的,也便是高电平(1)和低电平(0)电压值的精度① ADC 可以读出从0V 到电源电压之间的详细电压值,并把这个值变成一组数字量(8位、10 位、12 位乃至更高)。② 位数越多,表示测得的电压值更精密。STM32 的ADC 是12 位的,其精度能够知足大部分运用了。STM32读取的仿照电压
五、DMA与I/O口——为CPU减负的好助手DMA,险些全能的GPIODMA可大大提高内核事情效率① DMA 字面意思是“直接存储器访问“,常日用在外设与内核须要进行大量数据传输的场合。② 如果没有DMA,想读取ADC 的值,首先要在内核向ADC 功能发出指令,然后等待ADC 读取完成,内核再从ADC 读出数据,再存放到SRAM 当中。这个过程须要内核参与,占用了内核的韶光,内核就不能去做别的事情了。③ DMA 可以在这种数据读取、存放的任务上完备解放内核。它能按预先设定好的设置从ADC 读出数据,然后自动存放到SRAM 中指定的位置,不须要内核的参与。当内核须要ADC 的数据时,只要读SRAM 指定的位置这一步操作就行了。STM32的DMA事情示意
STM32的DMA通道① DMA 不仅能读ADC,它还能在Flash、SRAM、SPI、USART、定时器、I2C 等功能之间相互通报数据。② STM32F103 的DMA 有7 个通道,可以设置7 组数据通报任务。STM32的DMA通道示意
STM32的I/O数量与分组① 近乎全能的I/O口学习单片机最先打仗的每每便是I/O端口,它是内部功能当中最主要的一块。由于I/O端口也可以代替除ADC之外所有的逻辑电平的通信接口,以是在STM32里叫GPIO(通用输入/输出端口)。② STM32F103最多有80个I/O端口,被分成5组,每组16个。STM32F103C8T6只有37个I/O 端口,个中PA和PB的16个端口都引出了,PC组只引出3个,PD组只引出2个。48脚封装的STM32F1芯片的引脚
GPIO的事情模式每一个I/O 口都有8 种事情模式,也便是I/O 口的状态是输出还是输入?是输入的话,是仿照量输入还是逻辑电平输入?编程时,我们须要在启动I/O 口之前先把它设置成精确的状态。STM32 I/O口的8种事情模式
四种输入模式: 仿照输入是在作ADC 输入接口时利用的 浮空输入是内部不接电阻 下拉和上拉输入是在I/O 内部接一个10kΩ 的下拉或上拉电阻,根据外部连接的电路可以设置它们。四种输出模式 推挽是指I/O 端口有很强的电流推动能力,可以输出一定量的电流,用于推动一些元器件(如LED)事情。 开漏则是弱电流的输出,用于逻辑电平的数据旗子暗记通信 复用的推挽和开漏是用在复用状态下的。六、调试模式与定时器——仿真调试除BUG,定时资源多又强ARM的仿真调试接口什么是仿真所谓仿真,便是不把程序下载到Flash 里,而是在打算机端直接掌握单片机内核,使单片性能达到和运行下载到Flash 里的程序一样的事情效果。由于不是真的运行程序,而是在打算机上仿照的,以是叫仿真。JTAG调试接口不仅是STM32,所有的ARM 内核的单片机都有一组用于仿真调试的接口,它叫JTAG(Joint Test Action Group,联合测试事情组,是一种国际标准测试协议,紧张用于芯片内部测试)。STM32的JTAG与SWD调试接口
JTAG的简化接口——SWDJTAG 是内核的一部分,并不是一个独立的功能。连接上,可以用5 线的标准JATG,也可以用简化为2 线的SWD,它们的功能是一样的,只是连接办法不同。ST-LINK仿真器与连接线
强大的定时器资源定时器的实质定时器的实质是计时,当达到设置的韶光后去做某个事情。定时器如何知道时长① 紧张是通过系统时钟,时钟产生机器周期,内核以机器周期为单位事情,定时器也以此计数,以是定时器也被说成计数器。② 当定时器到达了设置的数值时,就会产生一个中断或事宜。多达7个定时器STM32F103xxx 增强型系列包含:3个普通定时器、1个高等定时器、2个看门狗定时器、1个别系滴答定时器。STM32的定时器资源
普通定时器和高等定时器不仅能计数和定时,还能做很多繁芜的事情,待讲到定时器编程的时候再展开。看门狗定时器的浸染是在定时韶光到了之后让单片机复位。嘀嗒定时器,用于实时操作系统中的任务切换的。如果没有跑操作系统,那么嘀嗒定时器可以作为普通定时器来利用。
七、看门狗与滴答定时器——保护内核的虔诚伙伴与操作系统的心跳保护内核的虔诚伙伴 —— 看门狗看门狗的实质和浸染看门狗是一种形象的名称,实在质是一种分外的定时器。看门狗定时器的浸染是在定时韶光到了之后让单片机复位。单片机正常事情时为了担保单片机程序不会跑飞,我们会加入一段“喂狗”程序,即不断把看门狗定时器的计数值清0。因此,单片机程序正常时,看门狗是不会让单片机复位的。单片机程序非常时如果单片机不正常事情了,比如程序有错或外部滋扰导致去世机,这种情形看门狗定时器的计数值无法清0,一段韶光后(编程设置)单片机就会被复位,看门狗定时器就把单片机从去世机状态中补救出来了。操作系统的“心跳” —— 滴答定时器滴答定时器对操作系统尤为主要操作系统须要一个“时基”,从而可以为多个任务分配不同数目的韶光片,或者将某个韶光范围授予特定的任务等。这个“时基”就由这个滴答定时器来供应。滴答定时器属于CM3内核部件所有采取CM3 内核的芯片都带有这个定时器,使软件在不同芯片厂商的CM3器件间的移植事情得以简化。滴答定时器也能当做普通定时器当STM32 单片机没有跑操作系统,那么嘀嗒定时器可以作为普通定时器来利用。险些每个实验都要用到的延时函数便是通过滴答定时器实现的。八、I2C与USART接口——一主多从的低速通信协议I2C,最大略最常用的有线通信之串口STM32支持的通信协议通信的硬件层面在硬件上的是通信接口,即通信须要几条连接线、单片机与芯片之间若何连接。像串口下载、外部Flash存储器、TF卡、OLED显示屏、传感器这些模块/芯片与单片机之间须要交流的数据太多,那么通过GPIO端口大略的高低电平来表示是不足的。通信的软件层面在软件上的是协议规范,也便是以什么样的逻辑电平办法通信。比如发送高电平代表什么、连发3 个高电平代表什么,只有收发双方利用相同的规范,通信才能进行。这时就须要用到专门的通信接口,虽然通信接口也是输入/输出逻辑电平,但是它们都按照一个固定的格式规范来通信。这种通信的格式规范叫作“通信协议”。I2C总线I2C总线(读作“I 方C”或“I2C”)是飞利浦公司发布的一款通信总线标准。所谓总线,是指在一条数据线上同时并联多个设备(芯片或模块)。
主设备和从设备① 每一组I2C总线上只能有1个主设备,主设备是主导通信的,它能主动读取各个从设备上的数据。② 从设备只能等待主设备对自己读写,如果主设备无操作,从设备自己不能操作总线。从设备的数量和识别① I2C总线理论上可挂接几百个从设备,每个从设备都有一个固定的7位或10位从设备地址,相称于身份证号码。② 主机想读写哪个从设备,就向所有从设备发送一个从设备地址,只有号码同等的从设备才会回应主设备。通信速率低速模式可达100kHz,快速模式可达400kHz,高速模式可达3.4MHz。后两者不太稳定,常用低速模式。STM32的I2C通信示意
I2C的优点是协议大略易学,干系的芯片模块本钱低,在只占用2个I/O端口的情形下可挂接上百个从设备。目前有很多EEPROM 存储器、温度传感器、RTC时钟、气压传感器等都利用I2C总线作通信接口。
STM32F103单片机内部有2个I2C总线掌握器,都支持DMA功能,在硬件上完成了I2C的通信协议,用户只须要在指定的I2C寄存器中写入从设备的地址和要读写的数据就行了,余下的事情会自动完成。
USART串口STM32的串口通信
TTL电平直连多用于单片机与带有USART串口的模块通信,比如Wi-Fi模块、GPS模块、蓝牙模块都支持USART串口。其余它还常用于单片机与打算机的通信,今后我们用打算机给单片机下载程序,便是通过USART串口完成。RS232接口常见于打算机和工控设备之间的通信。该接口并没有改变USART串口的协议规范,而是通过专用的RS232转换芯片,把TTL电平转换成了±12V电平,使通信的间隔和稳定性都有所提高。RS485的传输速率和间隔比RS232还要大很多,而且可用于多个设备的通信,如高层住宅和阛阓里的电梯便是用RS485连接各楼层,掌握叫梯和显示楼层信息。开拓板上的RS232与RS485接口九、SPI、CAN、USB接口——高速串行通信办法险些通杀SPI总线SPI与I2C比拟SPI和I2C一样是一种总线。SPI总线也有主设备和从设备之分,单片机是主设备,各种周边芯片是从设备。SPI和I2C一样是板级总线,也便是只能在PCB上近间隔通信,而不能引出导线到较远的间隔。SPI最大的上风是有很高的通信速率,而且在高速下还能稳定事情,这是I2C所不能的。SPI总线连接示意
SPI高速通信的缘故原由① SPI之以是有这样的速率上风,正是由于它没有采取地址的观点,不在通信数据里放入地址信息,而是利用硬件来选择总线上的设备。每个SPI从设备都有一条开关掌握线与主设备(单片机)独立连接(图中的CS线)。当主设备想与哪个从设备通信时,只要开启那个从设备的开关掌握线,总线上就只有这个设备是开启的,总线变成了一对一通信。正是用硬件选择从设备,才让SPI总线协议大略、速率飞快② SPI速率快的另一个缘故原由是全双工。全双工的意思是总线在通信时能同时收发数据。而I2C总线是半双工的,不能同时收发。如果把总线通信比喻成两个人对话,半双工状态便是我说你听,或者你听我说,同一韶光只有一人在说;全双工状态便是两个人同时说话,又同时听对方讲话。这样对话效率要高得多,只可惜人脑没有这么快的反应速率,生活中也看不到这样的对话。但是单片性能全双工通信,以是全双工的SPI在速率上很难被其他总线超越。STM32的SPI还有哪些特点STM32F103单片机上有2个SPI总线,最大速率可达18MB/s,而且还支持DMA功能和SD卡读写功能。我们常见的SD卡(或TF卡)都支持SPI模式,可以用SPI总线直接读写卡上的数据。SPI总线在高速通信上有非常大的上风,只可惜受到掌握从设备的I/O端口数量的限定,总线上不能挂接太多从设备。CAN总线CAN总线是高等智能总线CAN总线是一种工业掌握、汽车电子上常用的高等总线,之以是说它高等,是由于CAN总线的功能繁芜且智能。以下CAN总线的电路连接示意图,CAN总线只须要两条导线,理论上可以连接无限多的设备,每一个设备即可作主设备,也可作从设备。CAN总线的通信间隔可达10km,速率可达1MB/s。听上去彷佛速率比SPI的18MB/s 差得很远,但CAN是远程通信,1MB/s的速率已经很精良了。CAN总线连接示意
CAN总线强大且稳定其余,CAN总线的功能也很强大,当总线上的某个设备破坏时,总线可以把这个设备从总线上断开。在我看来,CAN总线算是RS485总线的升级版,RS485是开放的、原始的底层协议,虽然大略,但功能太少。CAN总线加入了区分总线上设备的标识符观点,也加入了更繁芜的协议规范。这让用户在利用CAN时更方便了,不用自己设计总线地址之类。CAN总线的事情很稳定,在汽车行业中被用于车内各电子设备的通信。USB接口STM32只能是USB从设备USB 接口是大家再熟习不过的了,所有打算机上都会有至少1个USB接口,由于USB 接口正是为打算机与周边设备(如U盘、鼠标、打印机)通信而设计的。而STM32F103单片机上有1个USB 2.0接口,它被定义为USB从设备,也便是说,它只能用来与打算机连接来作打算机周边设备,比如用STM32制作鼠标或打印机。USB虽然不是总线,但它和CAN总线一样都有底层非常繁芜的通信协议,但在用户利用层面上又变得比较大略。STM32与电脑USB的连接下图是USB接口的电路连接示意图,从中可以看出USB有2条数据线,其余还有2条电源线,可以由打算机端给USB设备(单片机)供电。USB接口与之前讲到的USART串口都能与打算机通信,可是USB接口有明确的主从关系,单片机只能作为打算机的从设备。而USART串口的通信没有主从关系,打算机与单片机的通信是平等的,任何一方都能主动发出数据。USB接口电路连接示意
十、内部功能小结——梳理各模块的紧张用场和彼此联系通过以上内容,我们大致理解了STM32内部每个功能的特性和用场,初学者有些观点不理解也不要紧,脑筋里有个大概印象即可,等系统学习各功能编程的时候再回过分来看看,大概就会多一分领悟。末了,我们把STM32数据手册中的内部功能关系框图摘出来标注一下,仔细研究这张框图,彻底理解所有内部功能之间的关系,可以帮助我们清晰地认识这款单片机,再学习某些知识时会有更深刻的理解和影象。
STM32内部功能关系框图






