深圳市鹏海达电子有限公司!为您提供电子元件等相关信息,敬请关注!
服务热线:0755-23997336 网站地图 XML

意法半导体 STM32F103C8T6 标准外设库典型实例

来源 : www.penghaida.com   发布时间 : 2021/1/21 16:05:00

小编大半年以前的一篇文章,所详细介绍的STC51系列产品单片机设计是一款构造简易、便于学习培训的内嵌式微处理器,可是因为规范 8051 构架问世于 70 时代,其硬件配置构架、資源总数及其程序编写方法早已显年久,成本费和特性层面也皆落伍于其他构架商品,市场份额逐渐遭受腐蚀,现阶段仅多见于一些课堂教学与爱好者应用的范围。随着近些年物联网技术领域的迅速盛行,STM32等根据 ARM Cortex 核心的微处理器,凭着丰富多彩的上面資源与简易实用的规范外接设备库,逐渐变成消費与工业生产行业中的主要产品。

意法半导体创立于 1987 年,由西班牙 SGS 和荷兰 Thomson 俩家半导体企业合拼而成,文中所详细介绍的STM32F103C8T6归属于该企业运用极其普遍的型号规格,其出示的STM32F10x Standard Peripheral Library规范外接设备库对 STM32 上面資源开展了健全的封裝,相对性于 ST 企业现阶段首推的HAL/LL库,规范外接设备库更为贴近于传统式的存储器实际操作,因此也比较非常容易向兆易创新的GD32等国内微处理器移殖。

因为知乎问答的markdown创作专用工具不兼容详细的报表及其便签英语的语法,再加上篇数篇幅限定,因而在这儿只公布了第一、2章节目录的一部分內容,必须查看含有便签的详细文章内容请前去小编的blogGithub Pages

意法半导体 STM32F103C8T6 标准库典型性案例
也加入我们成都市天府软件园 QQ 群【】,为文章内容勘误或是明确提出您的意见与建议,还可以一起聊聊成都市IT那些事 。也热烈欢迎出色原創技术专业、IT产业链经济类文章向知乎问答【成都市IT圈】栏目开展文章投稿。

上面資源概述

STM32F103C8T6根据 ARM 32 位 Cortex?-M3 核心,应用2.0V ~ 3.6V工作电压供电系统,输出功率最大能够做到72MHz,內部选用64K128K字节数 Flash 程序存储器,及其达到20K字节数的 SRAM 数据信息储存器;内嵌 CRC 循环系统沉余校检及其 96 位编号(即 24 位的十六进制数)的集成ic唯一系列号(比如:52FF69067871515237582567)。

其主系统软件关键由 4 个操纵模块(DCode 总线D-bus、系统软件总线S-bus、通用性DMA1、通用性DMA2)及其 4 个可控模块(內部SRAM、內部FlashFSMC、AHB 到 APB 的桥AHB2APBx)构成,他们根据一个多级别的 AHB 总线互相开展联接,如下图所显示:

  • ICode 总线:联接 M3 核心命令总线与 Flash 的命令接口,用以开展指令预取。
  • DCode 总线:联接 M3 核心 DCode 总线与 Flash 的数据信息接口,用以进行变量定义载入和调节浏览。
  • System 总线:联接 M3 核心系统软件总线与总线引流矩阵 Bus Matrix,用以融洽核心与 DMA 中间的通讯。
  • DMA 总线:联接 DMA 的 AHB 主接口与总线引流矩阵 Bus Matrix,用以融洽 DCode 和 DMA 对 SRAM、Flash 及其其他外接设备的浏览。
  • Bus Matrix 总线引流矩阵:运用交替优化算法管理方法核心系统软件总线与 DMA 主总线中间浏览的诉讼,由 4 个操纵模块(DCode、系统软件总线、DMA1 和 DMA2 总线)及其 4 个可控模块(FLITF、SRAM、FSMC、AHB2APB 桥)构成。
  • AHB/APB bridges:2个 AHB/APB 桥出示了 AHB 与 2 条 APB 总线中间的同歩联接,APB1操作速度小于36MHzAPB2操作速度最大达到72MHz。每一次校准之后,除 SRAM 和 FLITF 之外的外接设备都是会被关掉。应用外接设备以前,务必根据设定存储器RCC_AHBENR开启该外接设备的时钟。
AHB(高級性能卓越总线,Advanced High performance Bus)是一种系统软件总线,关键用以联接 CPU、DMA、DSP 等性能卓越控制模块,由主控制模块、从控制模块、基本构造三一部分构成,传输数据一直由主控制模块进行从控制模块回复。APB(高級外场总线,Advanced Peripheral Bus)是一种外场总线,关键用以 UART 等低网络带宽外接设备中间的联接,其唯一的主控制模块是 APB 桥;两者都遵照 ARM 企业发布的AMBA集成ic总线标准。

时钟系统软件

因为 STM32 外接设备資源诸多,工作中的时钟頻率不尽相同,因此选用了高达 5 个时钟源:上面历经原厂校准的8MHz RC 震荡器系统软件时钟HSI,及其带校正的40kHz RC 震荡器做为即时时钟LSI,还可以选用外接4 ~ 16MHz晶振电路做为系统软件时钟HSE,及其带校正作用的32kHz RTC 震荡器做为即时时钟LSE;最终还内嵌了用以对 CPU 时钟开展内存超频的的PLL锁相环路。

留意HSIHSEPLL归属于髙速时钟源,LSILSE归属于低速档时钟源,一切时钟源都能够依据必须,单独开展运行或是关掉,进而提升集成ic功能损耗。

下边是外界髙速时钟源HSE的沟通交流状态图,留意图上T?s?标志的一部分为一个系统软件时钟周期时间。

下面的图之中,当HSI做为PLL时钟的键入时,最大系统软件时钟頻率只有做到64MHz。当应用 USB 作用时,务必另外应用HSEPLL,而且 CPU 的頻率务必为48MHz72MHz。当必须的ADC取样時间为1μs的情况下,**APB2**务必设定为14MHz28MHz56MHz

GPIO

STM32F103C8T6选用 LQFP48 方法封裝,一共有着 37 个 I/O 脚位,被分成PA(15 个)、PB(15 个)、PC(3 个)、PD(2 个)、PE(0 个)五个组,全部 I/O 接口能够印象到 16 个外部中断,而且绝大部分端口号都可以可以兼容9V数据信号。每一个 I/O 端口号能够接纳或輸出8米A电流量,灌电流量则可做到50mA,下边是详尽的脚位界定图:

每一个 GPIO 端口号都有着2个 32 位配备存储器GPIOx_CRLGPIOx_CRH,2个 32 位寄存器地址GPIOx_IDRGPIOx_ODR,一个 32 部位位/校准存储器GPIOx_BSRR和一个 16 位校准存储器GPIOx_BRR和一个 32 位锁住存储器GPIOx_LCKR

GPIO 端口号的每一个位都能够根据手机软件将其配备为輸出(推挽输出GPIO_Mode_Out_PP、开漏输出GPIO_Mode_Out_OD)、键入(悬空键入GPIO_Mode_IN_FLOATING、下拉键入GPIO_Mode_IPU、往下拉键入GPIO_Mode_IPD、仿真模拟键入GPIO_Mode_AIN)、多路复用(多路复用推挽输出GPIO_Mode_AF_PP、多路复用开漏输出GPIO_Mode_AF_OD)作用。

除具备仿真模拟键入作用的脚位以外,全部 GPIO 都有着大电流量根据工作能力。必需时能够对 GPIO 开展锁住,以防止出现意外可读写 GPIO 有关的存储器。坐落于APB2上的 GPIO 脚位,其单脉冲变换速率达到18MHz

定时器

STM32F103C8T6有着 7 个定时器,在其中 1 个用以电机控制系统的 16 位 PWM 高級操纵定时器、3 个 16 位通用性定时器、2 个看门狗1定时器(包括独立型的和对话框型)、1 个 24 位自减型系统软件嘀哒定时器。

  1. 高級操纵定时器 TIM1TIM1能够被视作分派到 6 个安全通道的三相 PWM 产生器,具备带过流保护插进的相辅相成 PWM 輸出,还能够作为详细的通用性定时器;其四个单独安全通道可各自用以:键入捕捉輸出较为、造成边沿或管理中心两端对齐方式的PWM脉冲輸出。当配备为 16 位一般定时器时,与TIM2TIM3TIM4具备同样作用;配备为 16 位 PWM 产生器时,具备0 ~ 100%的全调制能力。
  2. 通用性定时器 TIM2、TIM3、TIM4:STM32F103C8T6 内嵌有 3 个可同歩运作的规范定时器,每一个定时器都有着一个 16 位全自动载入递增/下降电子计数器、一个 16 位预分频器、4 个单独安全通道,每一个安全通道都可以用以键入捕捉輸出较为PWM脉冲輸出,他们还能够根据定时器连接作用与高級操纵定时器 TIM1 协调工作,进而出示同歩或恶性事件连接作用。
  3. 单独看门狗1定时器 IWDG:用以产生难题时校准全部系统软件,或做为一个随意定时器为应用软件出示请求超时管理方法;內部根据 12 位下降电子计数器和 8 位预分频器,并由内嵌40kHz的 RC 震荡器出示时钟,因为该 RC 震荡器单独于主时钟,因而能够运作在关机和关机方式。可根据程序流程配备为手机软件或是硬件配置运行的看门狗1。
  4. 对话框看门狗1定时器 WWDG:用以在产生难题时校准全部系统软件,它由主时钟驱动器,具备初期预警信息终断作用;其内嵌有 7 位的下降电子计数器,而且能够设定为随意运作。
  5. 系统软件嘀哒定时器 SysTick:仅用以嵌入式操作系统,也可做为一个规范的下降电子计数器,具备 24 位的下降电子计数器、全自动重载入作用、当电子计数器为 0 时要造成一个可屏蔽掉异常中断、可编程控制器时钟源等特点。

通讯接口

STM32F103C8T6有着 2 个 I2C 接口、3 个 USART 接口、2 个 SPI 接口、1 个 CAN 接口、1 个 USB 2.0 飞速接口。

  • I2C:内嵌 I2C 总线接口可以工作中于多主模式或从方式,适用规范和迅速方式;I2C 接口适用 7 位或 10 位寻址方式,7 位从方式时适用双从详细地址寻址方式,而且内嵌了硬件配置 CRC 产生器/校检器,适用应用 DMA 实际操作并适用 SMBus 总线 2.0 版/PMBus 总线。I2C 总线的电极连接线一般不超过 2 米,而且理论上手机充电线必须提升2KΩ上拉电阻,全部与STM32F103C8T6联接的机器设备都必须一同接地装置。
  • USART:上面的 USART 接口具备硬件配置 CTS 和 RTS 数据信号管理方法、适用 IrDA SIR ENDEC 传送编码解码、兼容 ISO7816 的感应卡并出示 LIN 主/从作用;在其中,USART1 接口通讯速度达到4.5 Mbit/S,而其他 USART 接口达到 2.25 Mbit/S;全部 USART 接口都能够应用 DMA 实际操作。
  • SPISTM32F103C8T6有着 2 个 SPI 接口,主、从方式下双工和半双工通讯速度达到18 Mbit/S。3 位预分频器能够造成 8 种主模式頻率,而且每帧可配备为 8 位或 16 位,全部 SPI 接口仍然能够应用 DMA 实际操作。
  • CAN:另外兼容 CAN 2.0A 和 2.0B 标准,位速度达到1Mbit/S,能够接受和推送 11 位标志符的规范帧,还可以收取和发送 29 位标志符的拓展帧。
  • USB 2.0:嵌入 1 个飞速 USB 控制板(12Mbit/S),具备关机/唤起作用,其专用型48MHz时钟由內部主锁相环路PLL立即造成(时钟源务必为HSE晶振电路)。
51 构架单片机设计内嵌的 UART 是通用性多线程光端机,沒有同歩时钟线;而 STM32 中的 USART 是通用性同歩/多线程光端机,含有同歩时钟线USART_CK;因为多线程方式更为常见,而同歩方式应用頻率较少,因此二者差别并不大。

DMA

DMA(立即运行内存存储,Direct Memory Access)用于出示在外接设备与储存器或是储存器与储存器中间的髙速传输数据,传送全过程不用历经 CPU 开展干涉,数据信息立即根据 DMA 迅速开展实际操作,进而节约很多 CPU 資源。

STM32F103 有着 2 个 DMA 控制板共 12 个安全通道,在其中DMA1有着 7 个安全通道,DMA2有着 5 个安全通道,每一个安全通道都用于管理方法外围设备对片内存储器的浏览要求,除此之外还有一个诉讼器来融洽每个 DMA 要求的优先。除开管理方法外围设备(Timer、ADC、SPI、I2C、USART)到存储器中间数据信息的双重传送,DMA 还可以管理方法储存器中间的传输数据。

STM32F103 最小系统

STM32F103C8T6的最小系统电源电路由电路延时电路时钟电源电路系统软件下载电源电路4 部分构成,实际请参照下边的原理图:

电路STM32F103C8T6有着三路逻辑性开关电源VDD_1VDD_2VDD_3和一路仿真模拟开关电源VDDA(因为当今试验电源电路针对仿真模拟工作电压的载入精密度无特别要求,因此仿真模拟开关电源与逻辑性开关电源能够同用)。除此之外,VBAT脚位上还联接了一枚3V纽扣电池BT1,用以为內部的 RTC 时钟供电系统。而事后串连的去耦电容C1C3C3C4则主要用于稳定电源以及滤除杂波。STM32F103C8T6使用的3V电压是通过AMS1117-3V稳压芯片获得,该芯片将计算机 Micro USB 接口的5V供电电压转换为3.3V电压,然后将这个3.3V电压连接至继电器J1的开关控制位。

注意:上面电路原理图当中的VCC是指C = Circuit,表示接入电路的电压;VDD是指D = Device,表示元件内部的工作电压;VSS是指S = Series,表示公共连接,通常指公共接地端。

复位电路STM32F103C8T6内部已经拥有一个上电复位电路,但是生产环境下为了防止复位引脚悬空,通常还是会连接一组由电容C9电阻R7共同组成的 RC 外部复位电路,而手动外部复位则是通过后续连接的微动开关K1(即实验电路里的复位按键)来完成。

时钟电路:频率为8MHz的晶振TX1是外部系统时钟,由C5C6两枚电容协助起震;频率为32.768KHz的晶振TX2用于外部RTC实时时钟电路,由C7C8两枚电容协助起震。

程序下载电路:芯片STC15W201S用于切换单片机启动模式,实现 ASP 程序自动下载;STM32F103C8T6使用 USART 串口为单片机下载程序,实验电路中 USB 转 TTL 电平模块的TXDRXD引脚分别连接至单片机的PA10/USART1_RXPA9/USART1_TXGND引脚与单片机的VSS_1VSS_2VSS_3VSSA共同接地。

STM32F103C8T6通过BOOT0BOOT1两个引脚的电平状态组合,选择何时接收串口传送过来的程序以及何时运行这些程序,即设置微控制器的启动方式。当按键K1处于弹起状态时,将会拉低STC15W201SASPK引脚的电平状态,而STC15W201SASPL引脚连接了一枚 LED 状态指示灯并接入 GND,通过STC15W201S单片机控制STM32F103C8T6BOOT0BOOT1引脚电平状态,进而实现程序的自动下载。

ISP在线系统编程(In-System Programming)是一种无需将程序存储芯片从嵌入式设备上取出就能对其进行编程与程序下载的方法。

由于知乎的markdown写作工具不支持完整的表格以及书签语法,加上篇幅字数限制,因此在这里只发布了第1、2章节的部分内容,需要查阅带有书签的完整文章请前往笔者的博客Github Pages

意法半导体 STM32F103C8T6 标准库典型实例
也欢迎加入成都天府软件园QQ群,为文章勘误或者提出您的宝贵意见,也可以一起聊聊成都IT那些事儿 。也欢迎优秀原创技术类、IT产业经济类文章向知乎【成都IT圈】专栏进行投稿。