
目录第4章SSTM32嵌入式微控制器基础4.1STM32系列微控制器简介4.1.1与51单片机的区别4.1.2分类4.1.3与单片机、嵌入式、ARM的关系4.2STM32的基本架构和基本原理42.1ARMCortex-M3系列处理器42.2STM32F103系列微控制器842.3STM32的时钟树13174.3STM32程序开发的模式4.3.1基于寄存器的开发模式174.3.2基于固件库的开发模式184.3.3基于操作系统的开发模式18.204.3.43种开发模式的选用建议.204.3.5库函数与寄存器开发的关系4.3.6.21HAL库和标准库选择214.4学习STM32需要工具和平台214.4.1J-LINK仿真器.224.4.1KEIL环境下仿真器及调试环境的设置4.4.2图形化工程模板配置平台STM32CubeMX5.2.1.284.4.3学习STM32的方法.46.504.5STM32的工程模板504.5.1STM32微控制器工程模板简介.524.5.2MDK编译环境下的C语言数据类型第5章STM32微控制器GPIO应用基础.53535.1GPIO的硬件结构和功能,535.1.1GPIO硬件结构5.1.2GPIO输入功能.54.555.1.3GPIO输出功能5.1.4GPIO复用功能、速度选择与钳位保护.5852.59GPIO寄存器和库函数及工程模板的形成595.2.1GPIO寄存器52.2.61GPIO(库)函数52.3库函数和寄存器的关系.615.2.44工程模板的初步形成..61.625.3GPIO输出操作.625.3.1基本输出操作举例一字节输出与位输出.645.3.2扩展输出操作举例一流水灯5.3.3扩展输出操作举例一8段LED静态与动态显示.66.715.4输入操作5.4.1闸刀型开关输入信号.715.4.2单个按钮型开关输入信号.735.4.3.75多个按钮型开关输入信号一键盘本章小结.81.82实验与设计.83第6章STM32微控制器外部中断应用基础..836.1Cortex-M3的异常和中断...836.1.1异常和中断的概念6.1.2嵌套向量中断控制器NVIC.841
1 目 录 第4章 STM32嵌入式微控制器基础.4 4.1 STM32系列微控制器简介.4 4.1.1 与51单片机的区别.4 4.1.2 分类.5 4.1.3 与单片机、嵌入式、ARM的关系.6 4.2 STM32的基本架构和基本原理.7 4.2.1 ARM Cortex-M3系列处理器.7 4.2.2 STM32F103系列微控制器.8 4.2.3 STM32的时钟树.13 4.3 STM32程序开发的模式.17 4.3.1 基于寄存器的开发模式.17 4.3.2 基于固件库的开发模式.18 4.3.3 基于操作系统的开发模式.18 4.3.4 3种开发模式的选用建议.20 4.3.5 库函数与寄存器开发的关系.20 4.3.6 HAL库和标准库选择.21 4.4 学习STM32需要工具和平台.21 4.4.1 J-LINK仿真器.21 4.4.1 KEIL环境下仿真器及调试环境的设置.22 4.4.2 图形化工程模板配置平台STM32CubeMX5.2.1.28 4.4.3 学习STM32的方法.46 4.5 STM32的工程模板.50 4.5.1 STM32微控制器工程模板简介.50 4.5.2 MDK编译环境下的C语言数据类型.52 第5章 STM32微控制器GPIO应用基础.53 5.1 GPIO的硬件结构和功能.53 5.1.1 GPIO硬件结构.53 5.1.2 GPIO输入功能.54 5.1.3 GPIO输出功能.55 5.1.4 GPIO复用功能、速度选择与钳位保护.58 5.2 GPIO寄存器和库函数及工程模板的形成.59 5.2.1 GPIO寄存器.59 5.2.2 GPIO(库)函数.61 5.2.3 库函数和寄存器的关系.61 5.2.4 工程模板的初步形成.61 5.3 GPIO输出操作.62 5.3.1 基本输出操作举例—字节输出与位输出.62 5.3.2 扩展输出操作举例—流水灯.64 5.3.3 扩展输出操作举例—8段LED静态与动态显示.66 5.4 输入操作.71 5.4.1 闸刀型开关输入信号.71 5.4.2 单个按钮型开关输入信号.73 5.4.3 多个按钮型开关输入信号—键盘.75 本章小结.81 实验与设计.82 第6章 STM32微控制器外部中断应用基础.83 6.1 Cortex-M3的异常和中断.83 6.1.1 异常和中断的概念.83 6.1.2 嵌套向量中断控制器NVIC.84

6.1.3中断通道.85.856.2STM32微控制器的EXTI..8562.1中断与事件62.2EXTI功能框图.8662.3EXTI中断通道和中断源.886.2.4EXTI有关的寄存器和库函数..88..896.3STM32外部中断举例6.3.1EXTI程序设计的一般步骤..89中断函数..896.3.1.906.3.2外部中断工程模板的建立..926.3.3外部中断示例6.4实验与设计.94本章小结.94.96第7章STM32微控制器的定时器应用基础7.1认识STM32微控制器的定时器..967.1.1STM32定时器概述.967.1.2计数模式.97.10072STM32微控制器的通用定时器7.2.1通用定时器TIMx功能.1007.2.2通用定时器TIMx结构.10172.3通用定时器的寄存器和库函数.11072.4通用定时器/计数器的应用举例1111147.3RTC的功能及结构,7.3.1RTC的基木功能.1147.3.2RTC的内部结构1157.3.3115RTC应用实例7.4系统时钟SysTick简介116第8章USART原理及应用1188.1端口重映射1188.2USART功能和结构.11982.1USART功能12082.2USART结构1211228.2.3STM32的USART应用的基本要领.1248.3USART顿格式8.7USART寄存器与库函数.1248.7.1USART寄存器.1248.7.2USART库函数125.126第9章ADC与DAC原理及应用9.1ADC的功能及结构.12692.128ADC的工作模式9.5ADC的寄存器和库函数1309.7131应用实例9.8STM32的DAC1319.8.1DAC概述1319.8.2DAC的配置要领.1329.8.3.132DAC应用实例.思考与扩展.134附录A ASCII码字符表.135附录BProteus常用分离器件名称.135参考文献:.1362
2 6.1.3 中断通道.85 6.2 STM32微控制器的EXTI.85 6.2.1 中断与事件.85 6.2.2 EXTI功能框图.86 6.2.3 EXTI中断通道和中断源.88 6.2.4 EXTI有关的寄存器和库函数.88 6.3 STM32外部中断举例.89 6.3.1 EXTI程序设计的一般步骤.89 6.3.1 中断函数.89 6.3.2 外部中断工程模板的建立.90 6.3.3 外部中断示例.92 6.4 实验与设计.94 本 章 小 结.94 第7章 STM32微控制器的定时器应用基础.96 7.1 认识STM32微控制器的定时器.96 7.1.1 STM32定时器概述.96 7.1.2 计数模式.97 7.2 STM32微控制器的通用定时器.100 7.2.1 通用定时器TIMx功能.100 7.2.2 通用定时器TIMx结构.101 7.2.3 通用定时器的寄存器和库函数.110 7.2.4 通用定时器/计数器的应用举例.111 7.3 RTC的功能及结构.114 7.3.1 RTC的基木功能.114 7.3.2 RTC的内部结构.115 7.3.3 RTC应用实例.115 7.4 系统时钟SysTick简介.116 第8章 USART原理及应用.118 8.1 端口重映射.118 8.2 USART功能和结构.119 8.2.1 USART功能.120 8.2.2 USART结构.121 8.2.3 STM32的USART应用的基本要领.122 8.3 USART帧格式 .124 8.7 USART寄存器与库函数.124 8.7.1 USART寄存器.124 8.7.2 USART库函数.125 第9章 ADC与DAC原理及应用.126 9.1 ADC的功能及结构.126 9.2 ADC的工作模式.128 9.5 ADC的寄存器和库函数.130 9.7 应用实例.131 9.8 STM32的DAC.131 9.8.1 DAC概述.131 9.8.2 DAC的配置要领.132 9.8.3 DAC应用实例.132 思考与扩展.134 附录A ASCII码字符表.135 附录B Proteus常用分离器件名称.135 参考文献:.136

m
3

第4章STM32嵌入式微控制器基础从8位单片机转到基于ARM的32位微控制器STM32,这个过程需要通过合适的方法跨越。由于STM32的功能多,其原理又与传统的8位单片机(主要是51系列)完全不同,所以本章任务重点是讨论学习STM32微控制器的基本问题。包括STM32微控制器的认识、开发需要的硬件及软件环境、有关软件的使用等。4.1STM32系列微控制器简介4.1.1与51单片机的区别1.认识STM32微控制器STM32从字面上来理解,ST是意法半导体,M是Microelectronics的缩写,32表示32位,合起来理解,STM32就是指ST公司开发的32位微控制器。意法半导体(ST)集团于1988年6月成立,是由意大利的SGS微电子公司和法国ThomSon半导体公司合并而成。1998年5月,SGS-THOMSONMicroelectronics将公司名称改为意法半导体有限公司,是世界最大的半导体公司之一。STM32就是基于Cortex-M3内核的微控制器。它包括Cortex-M3内核、存储器、外设等。Cortex-M3内核通过接口总线的形式挂载了储存器、外设、中断等组成一个MCU,如图4-1所示。nnnnnnnnnnnnnnnnn0000UU0U00UUUU000UCortex-M3芯片LO由ARM设计调试系统Cortex-M3内核品内部总线Eht/bulebblog.csd由芯片制造商外设存储器设计开发时钟和复位1/0O0UOUUOUUOOUUU图4-1STM32微控制器示意图STM32微控制器的内核是基于ARM公司的Cortex-M3微控制器内核。ARM公司于2006年推出了Cortex-M3微处理器核,针对微控制器(MCU)领域。Cortex-M3采用的V7指令集,它的速度比ARM7快三分之一,功耗低四分之三,并且能实现更小芯片面积,利于将更多功能整合4
4 第4章 STM32嵌入式微控制器基础 从8位单片机转到基于ARM的32位微控制器STM32,这个过程需要通过合适的方法跨越。 由于STM32的功能多,其原理又与传统的8位单片机(主要是51系列)完全不同,所以本章 任务重点是讨论学习STM32微控制器的基本问题。包括STM32微控制器的认识、开发需要的 硬件及软件环境、有关软件的使用等。 4.1 STM32系列微控制器简介 4.1.1 与51单片机的区别 1.认识STM32微控制器 STM32从字面上来理解, ST是意法半导体,M是Microelectronics的缩写,32表示32 位,合起来理解, STM32就是指ST公司开发的32位微控制器。 意法半导体(ST)集团于1988年6月成立,是由意大利的SGS微电子公司和法国Thomson 半导体公司合并而成。1998年5月,SGS-THOMSON Microelectronics将公司名称改为意法半 导体有限公司,是世界最大的半导体公司之一。 STM32就是基于Cortex-M3内核的微控制器。它包括Cortex-M3内核、存储器、外设等。 Cortex-M3内核通过接口总线的形式挂载了储存器、外设、中断等组成一个MCU,如图4-1所 示。 图4-1 STM32微控制器示意图 STM32微控制器的内核是基于ARM公司的Cortex-M3微控制器内核。ARM公司于2006年推 出了Cortex-M3微处理器核,针对微控制器(MCU)领域。Cortex-M3采用的V7指令集,它的速 度比ARM7快三分之一,功耗低四分之三,并且能实现更小芯片面积,利于将更多功能整合

在更小的芯片尺寸中。STM32属于一个微控制器,自带了各种常用通信接口,比如USART、I2C、SPI等,可接非常多的传感器,可以控制很多的设备。现实生活中,我们接触到的很多电器产品都有STM32的身影,比如智能手环,微型四轴飞行器、平衡车、移动POST机、智能电饭锅、3D打印机等等。STM32微控制器主要应用于:低成本单片机、汽车电子、数据通信、工业控制、消费类电子产品等。2.与51单片机的区别51单片机是对所有兼容Inte18031指令系统的单片机的统称。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。STM32系列微控制器基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。两者的主要区别如下:(1)内核:51单片机采用的是51Core、8位CPU、2MHzMax(分频后):STM32采用的是ARMCortex-M3,32位CPU、72MHz。(2)外部地址扩展:51单片机最大64K字节:STM32有4G字节。(3)片内储存器:51单片机片内ROM2K-64K字节,RAM可以128字节--1K字节;STM32的片内ROM为20K-1M字节,RAM有8K-256K字节。(3)外设:51单片机有4个8位的并行口、2个定时器(52有3个)、一个串行口;STM32却拥有多个并行口、串行口、AD、DA、定时器、、看门狗、CRC、DMA、IC、SPI、CAN、USART等众多外设,它几乎集成了所有测控领域的所有需要的功能模块。(4)对单片机的编程操作:51单片机在编程时都是直接操作寄存器,没有库函数的支持,由于51单片机功能有限,所以对寄存器的设置也比较简单:STM32微控制器功能强大,引脚复用较多,在设置寄存器时比较麻烦,但STM32有官方的库函数支持,就可以弱化寄存器的设置。(5)操作系统:51单片机连RTOS(RealTimeOperationSystem实时多任务操作系统)都很难能跑;STM32采用的是uClinux(u表示Micro,C表示Control,所以uClinux就是Micro-Control-Linux,字面上的理解就是“针对微控制领域而设计的Linux系统”)、uC/OS(实时操作系统内核)。总的来说,51有51的轻巧,STM32有STM32的强大。首先51学习入门最简单,功能少,使用比较方便,但是速度、功能都没有STM32强大。STM32是32位的,外围接口丰富,但是使用复杂,入门学习就有点难度了。4.1.2分类STM32有很多系列,可以满足市场的各种需求,从内核上分有Cortex-MO、M3、M4和M7这几种,每个内核又大概分为主流、高性能和低功耗。5
5 在更小的芯片尺寸中。 STM32属于一个微控制器,自带了各种常用通信接口,比如 USART、I2C、SPI等,可接 非常多的传感器,可以控制很多的设备。现实生活中,我们接触到的很多电器产品都有 STM32 的身影,比如智能手环,微型四轴飞行器、平衡车、移动POST机、智能电饭锅、3D 打印机等等。 STM32微控制器主要应用于:低成本单片机、汽车电子、数据通信、工业控制、消费类 电子产品等。 2.与51单片机的区别 51单片机是对所有兼容Intel 8031指令系统的单片机的统称。51单片机是基础入门的 一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能 力。 STM32系列微控制器基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的 ARM Cortex-M3内核。 两者的主要区别如下: (1)内核:51单片机采用的是51 Core、8位CPU、2MHz Max(分频后);STM32采用的 是ARM Cortex-M3,32位CPU、72MHz。 (2)外部地址扩展:51单片机最大64K字节;STM32有4G字节。 (3)片内储存器:51单片机片内ROM2K-64K字节,RAM可以128字节-1K字节;STM32的 片内ROM为20K-1M字节,RAM有8K-256K字节。 (3)外设:51单片机有4个8位的并行口、2个定时器(52有3个)、一个串行口; STM32却拥有多个并行口、串行口、AD、DA、定时器、看门狗、CRC、DMA、I 2 C、SPI、 CAN、USART等众多外设,它几乎集成了所有测控领域的所有需要的功能模块。 (4)对单片机的编程操作:51单片机在编程时都是直接操作寄存器,没有库函数的支 持,由于51单片机功能有限,所以对寄存器的设置也比较简单;STM32微控制器功能强大, 引脚复用较多,在设置寄存器时比较麻烦,但STM32有官方的库函数支持,就可以弱化寄存 器的设置。 (5)操作系统:51单片机连RTOS(Real Time Operation System 实时多任务操作系 统)都很难能跑;STM32采用的是uClinux(u表示Micro,C表示Control,所以uClinux就是 Micro-Control-Linux,字面上的理解就是“针对微控制领域而设计的Linux系统”)、 uC/OS(实时操作系统内核)。 总的来说,51有51的轻巧,STM32有STM32的强大。首先51学习入门最简单,功能少, 使用比较方便,但是速度、功能都没有STM32强大。STM32是32位的,外围接口丰富,但是 使用复杂,入门学习就有点难度了。 4.1.2 分类 STM32有很多系列,可以满足市场的各种需求,从内核上分有 Cortex-M0、 M3、 M4和 M7这几种,每个内核又大概分为主流、高性能和低功耗

单纯从学习的角度出发,可以选择F1和F4,F1代表了基础型,基于Cortex-M3内核主频为72MHZ,F4代表了高性能,基于Cortex-M4内核,主频180M。对于F1来说,F4(429系列以上)除了内核不同和主频的提升外,升级的明显特色就是带了LCD控制器和摄像头接口,支持SDRAM,这个区别在项目选型上会被优先考虑。但是从大学教学和用户初学来说,还是首选F1系列,目前在市场上资料最多,产品占有量最多的就是F1系列的STM32微控制器。本教材选用STM32F103VCTx,外形如图4-2所示。图4-2STM32F103VCTx外形图CRAPRARPPARARBHESTM32FLO3VCTZ22BTE93MLT HPO16STOARME04其中:STM32一产品系列。STM32表示基于ARM的32位微控制器。②F一产品类型。F表示通用类型。③103一产品子系列。101一基本型;102一USB基本型:103--增强型;105或107一互联型。④V-—引脚数目。T—36脚;C—48脚:R—64脚;V—100脚;Z—144脚③C—闪存储存器容量。4--16KB;6--32KB;8--64KBB--128KB;C--256KBD-384KB;E--512KB。?T一封装。H=BGA;T=LQFP;U=VFQFPN;Y=WLCSP64。x一温度范围。6一工业级温度范围-40~85℃7--工业级温度范围-40~105℃。下面还有内部代码、选项等部分,这里不做介绍。4.1.3与单片机、嵌入式、ARM的关系1.STM32与单片机STM32微控制器也称为STM32单片机。单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。由于8位单片机由于内部构造简单,体积小,成本低廉,在一些较简单的控制器中应用很广。常见的8位单片机主要有:Intel的51系列,Atmel的AVR系统,Microchip公司的PIC系列,TI6
6 单纯从学习的角度出发,可以选择F1和F4, F1代表了基础型,基于Cortex-M3内核, 主频为72MHZ, F4代表了高性能,基于 Cortex-M4内核,主频180M。 对于F1来说, F4(429 系列以上)除了内核不同和主频的提升外,升级的明显特色就 是带了LCD 控制器和摄像头接口,支持SDRAM,这个区别在项目选型上会被优先考虑。但是 从大学教学和用户初学来说,还是首选F1系列,目前在市场上资料最多,产品占有量最多 的就是F1系列的 STM32微控制器。本教材选用STM32F103VCTx,外形如图4-2所示。 图4-2 STM32F103VCTx外形图 其中: ① STM32—产品系列。STM32表示基于ARM的32位微控制器。 ② F—产品类型。F表示通用类型。 ③ 103—产品子系列。101—基本型;102—USB基本型;103-增强型;105或107—互 联型。 ④ V—引脚数目。T—36脚;C—48脚;R—64脚;V—100脚;Z—144脚. ⑤ C—闪存储存器容量。4-16KB;6-32KB;8-64KB;B-128KB;C-256KB;D- 384KB;E-512KB。 ⑥ T—封装。H=BGA;T=LQFP;U=VFQFPN;Y=WLCSP64。 ⑦ x—温度范围。6—工业级温度范围-40~85℃;7-工业级温度范围-40~105℃。 下面还有内部代码、选项等部分,这里不做介绍。 4.1.3 与单片机、嵌入式、ARM的关系 1.STM32与单片机 STM32微控制器也称为STM32单片机。 单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把 具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断 系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换 器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。由于8 位单片机由于内部构造简单,体积小, 成本低廉,在一些较简单的控制器中应用很广。常 见的8位单片机主要有:Intel的51系列,Atmel的AVR系统,Microchip公司的PIC系列,TI

的MSP430系列等。而STM32是一种功能比较强大的32位的单片机。它和8位单片机最大的不同是,它不仅可以使用寄存器进行编程,还可以使用官方提供的库文件进行编程,这样不仅编程方便,而且更容易移植。2.STM32与嵌入式嵌入式是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。主要分为DSP,微控制器MCU,微处理器,SOC四种。一个完整的嵌入式系统,从开发过程分为4层:硬件层、驱动层、操作系统层和应用层。而STM32是MCU的一种,故也属于嵌入式技术。3.STM32与ARMARM可以说是一个公司的名称,一类微处理的通称,也代表一种技术。其实ARM是一个做芯片标准的公司,它负责芯片内核的架构设计,而把具体的实现,授权给像TI,ST等半导体公司。例如任何一个Cortex-M3芯片,它们的内核结构都是一样的,不同的是它们的存储器容量,片上外设,IO以及其他模块的区别。ARM公司为了能让不同的芯片公司生产的Cortex-M3芯片能在软件上基本兼容,和芯片生产商共同提出了一套标准CMSIS标准(CortexMicrocontrollerSoftwareInterfaceStandard),翻译过来是ARMCortexM微控制器软件接口标准”,也就是其库函数。4.2STM32的基本架构和基本原理如果学过8位单片机的,例如51单片机,那么对于理解STM32的系统架构和功能模块是十分有利的,毕竟它们都属于单片机范畴(英文为Microcontroller)。只不过前者是8位单片机(即数据总线是8位的),而后者是32位单片机(数据总线是32位的)。但是,如果没有学过任何单片机,那么从零基础学STM32也不是没有可能,只是在理解时会困难些。学了C语言,大家都知道,开发PC程序,压根不用了解PC的硬件结构和功能部件的特点。但是开发单片机程序,必须知道单片机的内部结构和功能部件的特点和属性。本节就STM32微控制器的内部结构和功能部件的进行一个大致描述,在了解这些特点的基础上,就可以开始尝试STM32的应用设计与实践了。4.2.1ARMCortex-M3系列处理器1.ARMARM即AdvancedRISCMachines的缩写,这个缩写可以认为是一个公司的名字--ARM公司,也可以认为是一类微处理器的统称,还可以认为是一类技术的名字。1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生,由美国加州的SanJoseVLSI技术公司制造。2O世纪80年代后期,ARM很快开发成Acorn的台式计算机。20世纪90年代初,ARM公司成立于剑桥大学,设计了大量高性能、廉价、耗能低的RISC处理器及相关技术软件。RISc的英文全称是ReducedInstructionSetComputer,对应的中文是精简指令集计算机,特点是所有指令的格式都是一致的,所有指令的指令周期也是相同的,并且采用流水线技术。7
7 的MSP430系列等。而STM32是一种功能比较强大的32位的单片机。它和8位单片机最大的不 同是,它不仅可以使用寄存器进行编程,还可以使用官方提供的库文件进行编程,这样不 仅编程方便,而且更容易移植。 2.STM32与嵌入式 嵌入式是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功 能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。主要分为DSP,微控制器 MCU,微处理器,SOC四种。一个完整的嵌入式系统,从开发过程分为4层:硬件层、驱动 层、操作系统层和应用层。而STM32是MCU的一种,故也属于嵌入式技术。 3.STM32与ARM ARM可以说是一个公司的名称,一类微处理的通称,也代表一种技术。其实ARM是一个 做芯片标准的公司,它负责芯片内核的架构设计,而把具体的实现,授权给像TI,ST等半 导体公司。例如任何一个Cortex-M3芯片,它们的内核结构都是一样的,不同的是它们的存 储器容量,片上外设,IO 以及其他模块的区别。ARM公司为了能让不同的芯片公司生产的 Cortex-M3芯片能在软件上基本兼容,和芯片生产商共同提出了一套标准CMSIS标准 (Cortex Microcontroller Software Interface Standard),翻译过来是ARM Cortex™ 微控制器软件接口标准”,也就是其库函数。 4.2 STM32的基本架构和基本原理 如果学过8位单片机的,例如51单片机,那么对于理解STM32的系统架构和功能模块是 十分有利的,毕竟它们都属于单片机范畴(英文为Microcontroller)。只不过前者是8位单 片机(即数据总线是8位的),而后者是32位单片机(数据总线是32位的)。但是,如果没 有学过任何单片机,那么从零基础学STM32也不是没有可能,只是在理解时会困难些。学了 C语言,大家都知道,开发PC程序,压根不用了解PC的硬件结构和功能部件的特点。但是开 发单片机程序,必须知道单片机的内部结构和功能部件的特点和属性。 本节就STM32微控制器的内部结构和功能部件的进行一个大致描述,在了解这些特点的 基础上,就可以开始尝试STM32的应用设计与实践了。 4.2.1 ARM Cortex-M3系列处理器 1.ARM ARM即Advanced RISC Machines的缩写,这个缩写可以认为是一个公司的名字-ARM公 司,也可以认为是一类微处理器的统称,还可以认为是一类技术的名字。 1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生,由美国加州 的San Jose VLSI技术公司制造。20世纪80年代后期,ARM很快开发成Acorn的台式计算机。 20世纪90年代初,ARM公司成立于剑桥大学,设计了大量高性能、廉价、耗能低的RISC处理 器及相关技术软件。RISC的英文全称是Reduced Instruction Set Computer,对应的中文 是精简指令集计算机,特点是所有指令的格式都是一致的,所有指令的指令周期也是相同 的,并且采用流水线技术

ARM公司本身并不生产和销售芯片,它只出售芯片技术授权,即以出售ARM内核的知识产权为主要模式,因此也叫Chipless(无芯片)公司。全球顶尖的半导体公司,例如Atmel、TI、ST、Fujitsu、NXP等均通过购买ARM的内核,结合各自的技术优势进行生产和销售,共同推动基于ARM内核,包括Cortex内核的嵌入式微控制器的发展。目前,采用RAM技术产权核的微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、DSP、无线移动应用等各类产品市场,在低功耗、低成本和高性能的嵌入式系统应用领域处于领先地位。2.ARMCortex-M3为处理器Cortex是ARM的全新一代处理器内核,它在本质上是ARMV7架构的实现,它完全有别于ARM的其他内核,是全新开发的。按照3类典型的嵌入式系统应用,即高性能、微控制器、实时类,它又分成3个系列,即Cortex-A、Cortex-M、Cortex-R。而STM32就属于Cortex-M系列。Cortex-M旨在提供一种高性能、低成本的微处理器平台,以满足最小存储器、小引脚数和低功耗的需求,同时兼顾卓越的计算性能和出色的中断管理能力。目前典型的、使用最为广泛的是Cortex-MO、Cortex-M3、Cortex-M4。Cortex-M3是一个32位的单片机核,结合了多种创新性突破技术,使得芯片供应商可以提供超低费用的芯片。仅有3300门的M3内核,其性能可达1.25DMIPS/MHz,如主频位72MHz的M3处理器性能可达90DMIPS。M3处理器还集成了许多紧耦合系统外设,合理利用了芯片空间,使系统性能满足下一代产品的控制需求。(注:DMIPS主要用于测整数计算能力。其中MIPS是每秒百万条指令,用来计算同一秒内系统的处理能力,即每秒执行了多少百万条指令。例如,一个处理器达到220DMIPS的性能,是指这个处理器测整数计算能力每秒200*100万条指令。)Cortex的优势在于将低功耗、低成本与高效能完美结合。Cortex-M3处理器包括处理器内核、嵌套向量中断控制器(NVIC)、存储器保护单元、总线接口单元和跟踪调试单元等,为微处理器应用而开发的ARMCortex-M3拥有以下性能:(1)Cortex-M3内核使用了3级流水哈佛架构,运用分支预测、单周期乘法和硬件除法功能实现了1.25DMIPS/MHz出色的运算效率。(2)采用专门的面向C语言的Thumb-2指令集,最大限度地降低了汇编语言的使用。(3)Thumb-2指令集免去了Thumb和ARM代码德尔互相切换,性能得到了提高。(4)准确快速地进行了中断处理。(5)对于工业控制应用,存储器保护单元通过使用授权访问模式可以实现安全操作。4.2.2STM32F103系列微控制器STM32是意法半导体(STMicroelectronics)较早推向市场的基于Cortex-M内核的微处理器系列产品,该系列产品具有成本低、功耗优、性能高、功能多等优势,并且以系列化方式推出,方便用户选型,在市场上获得了广泛好评。STM32分成了几个不同的系列:STM32F100为“超值型”,STM32F101为“基本型”,8
8 ARM公司本身并不生产和销售芯片,它只出售芯片技术授权,即以出售ARM内核的知识 产权为主要模式,因此也叫Chipless(无芯片)公司。全球顶尖的半导体公司,例如 Atmel、TI、ST、Fujitsu、NXP等均通过购买ARM的内核,结合各自的技术优势进行生产和 销售,共同推动基于ARM内核,包括Cortex内核的嵌入式微控制器的发展。目前,采用RAM 技术产权核的微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、DSP、 无线移动应用等各类产品市场,在低功耗、低成本和高性能的嵌入式系统应用领域处于领 先地位。 2.ARM Cortex-M3为处理器 Cortex是ARM的全新一代处理器内核,它在本质上是ARMV7架构的实现,它完全有别于 ARM的其他内核,是全新开发的。按照3类典型的嵌入式系统应用,即高性能、微控制器、 实时类,它又分成3个系列,即Cortex-A、Cortex-M、Cortex-R。而STM32就属 于Cortex-M 系列。 Cortex-M旨在提供一种高性能、低成本的微处理器平台,以满足最小存储器、小引脚 数和低功耗的需求,同时兼顾卓越的计算性能和出色的中断管理能力。目前典型的、使用 最为广泛的是 Cortex-M0、Cortex-M3、Cortex-M4。 Cortex-M3是一个32位的单片机核,结合了多种创新性突破技术,使得芯片供应商可以 提供超低费用的芯片。仅有3300门的M3内核,其性能可达1.25DMIPS/MHz,如主频位72 MHz 的M3处理器性能可达90 DMIPS。M3处理器还集成了许多紧耦合系统外设,合理利用了芯片 空间,使系统性能满足下一代产品的控制需求。(注:DMIPS主要用于测整数计算能力。其 中MIPS是每秒百万条指令,用来计算同一秒内系统的处理能力,即每秒执行了多少百万条 指令。例如,一个处理器达到220 DMIPS的性能,是指这个处理器测整数计算能力每秒 200*100万条指令。) Cortex的优势在于将低功耗、低成本与高效能完美结合。 Cortex-M3处理器包括处理器内核、嵌套向量中断控制器(NVIC)、存储器保护单元、 总线接口单元和跟踪调试单元等,为微处理器应用而开发的ARM Cortex-M3拥有以下性能: (1)Cortex-M3内核使用了3级流水哈佛架构,运用分支预测、单周期乘法和硬件除法 功能实现了1.25DMIPS/MHz出色的运算效率。 (2)采用专门的面向C语言的Thumb-2指令集,最大限度地降低了汇编语言的使用。 (3)Thumb-2指令集免去了Thumb和ARM代码德尔互相切换,性能得到了提高。 (4)准确快速地进行了中断处理。 (5)对于工业控制应用,存储器保护单元通过使用授权访问模式可以实现安全操作。 4.2.2 STM32F103系列微控制器 STM32是意法半导体(STMicroelectronics)较早推向市场的基于CortexM内核的微处理器系列产品,该系列产品具有成本低、功耗优、性能高、功能多等优势,并 且以系列化方式推出,方便用户选型,在市场上获得了广泛好评。 STM32分成了几个不同的系列:STM32F100为“超值型”, STM32F101为“基本型

STM32F102为“USB基本型”,STM32F103为“增强型”,STM32F105或107为“互联型”,STM32L为“超低功耗型”。1.STM32F103xx性能STM32F103xx增强型微控制器使用高性能的ARMCortex-M332位的RISC内核,其工作频率是72MHz,内置高速存储器(最高可达512KB的闪存和64KB的SRAM),具有丰富的增强型I/O端口和连接到两条高性能外设总线(APB)的外设。STM32F103Vx系列都至少包含2个12位的ADC、一个高级定时器、3个通用16位定时器,还包含标准和先进的通信端口:2个I2C、2个SPI、3个USART、一个USB和一个CAN接口。I/O翻转速度可达18MHz。图4-2是基于ARMCortex-M3内核的STM32F10x系列微控制器的外观(LQFP100封装)表4-1是STM32F103xx增强型微控制器(F1ash不超过128KB的中小容量)各系列的外设资源。大容量的STM32103xx系列微控制器外设资源和芯片编号详细说明见有关资料。表4-1STM32103xx微控制器各系列的外设资源外设STM32F103CxSTM32F103TxSTM32F103RxSTM32F103Vx326432641286464闪存(KB)3212812820102020102020RAM (KB)10定时器23333通用2321高级1112通信SPI1212212222212C11213USART2323323USB11111111CAN1111111126325180通用1/0端口2210通道10通道16通道12位同步ADC2CPU频率72MHz2.0-3.6V工作电压工作温度-40-+85/-40+105封装VFQFPN36LQFP48LQFP64LQFP100BGA100从上表可以看出,STM32FI03的性能如下。内核:ARM32位Cortex-M3CPU,最高工作频率72MHz,1.25DMIPSMHz。单周期乘法和硬件除法。存储器:片上集成512KB的F1ash存储器。6~64KB的SRAM存储器。时钟、复位和电源管理:2.0~3.6V的电源供电和IO接口的驱动电压。POR、PDR和可编程的电压探测器(PVD)。4~16MHz的晶振。内嵌出厂前调校的8MHzRC振荡电路。内部40kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振。低功耗:3种低功耗模式:休眠,停止,待机模式。为RTC和备份寄存器供电的VBAT。9
9 STM32F102为“USB基本型”, STM32F103为“增强型”, STM32F105或107为“互联型”, STM32L为“超低功耗型”。 1. STM32F103xx性能 STM32F103xx增强型微控制器使用高性能的ARM Cortex-M3 32位的RISC内核,其工作频 率是72MHz,内置高速存储器(最高可达512KB的闪存和64KB的SRAM),具有丰富的增强型 I/O端口和连接到两条高性能外设总线(APB)的外设。STM32F103Vx系列都至少包含2个12 位的ADC、一个高级定时器、3个通用16位定时器,还包含标准和先进的通信端口:2个 I2C、2个SPI、3个USART、一个USB和一个CAN接口。I/O翻转速度可达18MHz。 图4-2是基于ARM Cortex-M3内核的STM32F10x系列微控制器的外观(LQFP100封装)。 表4- 1是STM32F103xx增强型微控制器(Flash不超过128KB的中小容量)各系列的外设资源。大 容量的STM32103xx系列微控制器外设资源和芯片编号详细说明见有关资料。 表4-1 STM32103xx微控制器各系列的外设资源 外设 STM32F103Tx STM32F103Cx STM32F103Rx STM32F103Vx 闪存(KB) 32 64 32 64 128 32 64 128 64 128 RAM(KB) 10 20 10 20 20 10 20 20 定时器 通用 2 3 2 3 3 2 3 3 高级 1 1 1 1 通信 SPI 1 2 1 2 2 1 2 2 I2C 1 2 1 2 2 1 2 2 USART 2 3 2 3 3 2 3 3 USB 1 1 1 1 1 1 1 1 CAN 1 1 1 1 1 1 1 1 通用I/O端口 26 32 51 80 12位同步ADC 2 10通道 2 10通道 2 16通道 CPU频率 72MHz 工作电压 2.0-3.6V 工作温度 -40-+85/-40-+105 封装 VFQFPN36 LQFP48 LQFP64 LQFP100 BGA100 从上表可以看出,STM32FI03的性能如下。 内核:ARM32位Cortex-M3 CPU,最高工作频率72MHz,1.25DMIPSMHz。单周期乘法和硬 件除法。 存储器:片上集成512KB的Flash存储器。6~64KB的SRAM存储器。 时钟、复位和电源管理:2.0~3.6V的电源供电和IO接口的驱动电压。POR、PDR和可编 程的电压探测器(PVD)。4~16MHz的晶振。内嵌出厂前调校的8MHz RC振荡电路。内部40 kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振。 低功耗:3种低功耗模式:休眠,停止,待机模式。为RTC和备份寄存器供电的VBAT

调试模式:串行调试(SWD)和JTAG接口。DMA:12通道DMA控制器。支持的外设:定时器,ADC,DAC,SPI,IIC和UART。2个12位的微妙级的AD转换器(16通道):AD测量范围:0-3.6V。双采样和保持能力。片上集成一个温度传感器。2通道12位DA转换器:STM32F103xC,STM32F103xD,STM32F103xE独有。最多高达112个的快速10端口:根据型号的不同,有26、37、51、80、和112的I0端口,所有的端口都可以映射到16个外部中断向量。除了模拟输入,所有的都可以接受5V以内的输入。最多多达11个定时器:4个16位定时器,每个定时器有4个ICOCPWM或者脉冲计数器。2个16位的6通道高级控制定时器:最多6个通道可用于PWM输出。2个看门狗定时器(独立看门狗和窗口看门狗)。定时器:24位倒计数器。2个16位基本定时器用于驱动DAC。最多多达13个通信接口:2个I2C接口(SMBusPMBus)。5个USART接口(IS07816接口,LIN,IrDA兼容,调试控制)。3个SPI接口(18Mbits),两个和I2S复用。CAN接口(2.OB)。USB2.0全速接口。SDIO接口。STM32的优异性体现在如下几个方面:(1)超低的价格。以8位机的价格,得到32位机,是STM32最大的优势。(2)超多的外设。STM32拥有包括:FSMC、TIMER、SPI、IIC、USB、CAN、IIS、SDIO、ADC、DAC、RTC、DMA等众多外设及功能,具有极高的集成度。(3)丰富的型号。STM32仅M3内核就拥有F100、F101、F102、F103、F105、F107、F207、F217等8个系列上百种型号,具有QFN、LQFP、BGA等封装可供选择。同时STM32还推出了STM32L和STM32W等超低功耗和无线应用型的M3芯片。(4)优异的实时性能。84个中断,16级可编程优先级,并且所有的引脚都可以作为中断输入。(5)杰出的功耗控制。STM32各个外设都有自已的独立时钟开关,可以通过关闭相应外设的时钟来降低功耗。(6)极低的开发成本。STM32的开发不需要昂贵的仿真器,只需要一个串口即可下载代码,并且支持SWD和JTAG两种调试口。SWD调试可以为你的设计带来跟多的方便,只需要2个10口,即可实现仿真调试。2.内部结构STM32跟其他单片机一样,是一个单片计算机或单片微控制器,所谓单片就是在一个芯片上集成了计算机或微控制器该有的基本功能部件。这些功能部件通过总线连在一起。就STM32而言,这些功能部件主要包括:Cortex-M内核、总线、系统时钟发生器、复位电路、程序存储器、数据存储器、中断控制、调试接口以及各种功能部件(外设)。不同的芯片系列和型号,外设的数量和种类也不一样,常有的基本功能部件(外设)是:输入/输出接口GPIO、定时/计数器TIMER/COUNTER、串行通信接口USART、串行总线I2C和SPI或I2S、SD卡接口SDIO、USB接口等。10
10 调试模式:串行调试(SWD)和JTAG接口。 DMA:12通道DMA控制器。 支持的外设:定时器,ADC,DAC,SPI,IIC和UART。 2个12位的微妙级的AD转换器(16通道):AD测量范围:0-3.6V。双采样和保持能力。 片上集成一个温度传感器。 2通道12位DA转换器:STM32F103xC,STM32F103xD,STM32F103xE独有。 最多高达112个的快速IO端口:根据型号的不同,有26、37、51、80、和112的IO端 口,所有的端口都可以映射到16个外部中断向量。除了模拟输入,所有的都可以接受5V以 内的输入。 最多多达11个定时器:4个16位定时器,每个定时器有4个ICOCPWM或者脉冲计数器。2 个16位的6通道高级控制定时器:最多6个通道可用于PWM输出。 2个看门狗定时器(独立看门狗和窗口看门狗)。 定时器:24位倒计数器。2个16位基本定时器用于驱动DAC。 最多多达13个通信接口:2个I2C接口(SMBusPMBus)。5个USART接口(ISO7816接口, LIN,IrDA兼容,调试控制)。3个SPI接口(18 Mbits),两个和I2S复用。CAN接口 (2.0B)。USB 2.0全速接口。SDIO接口。 STM32的优异性体现在如下几个方面: (1)超低的价格。以8位机的价格,得到32位机,是STM32最大的优势。 (2)超多的外设。STM32拥有包括:FSMC、TIMER、SPI、IIC、USB、CAN、IIS、 SDIO、ADC、DAC、RTC、DMA等众多外设及功能,具有极高的集成度。 (3)丰富的型号。STM32仅M3内核就拥有F100、F101、F102、F103、F105、F107、 F207、F217等8个系列上百种型号,具有QFN、LQFP、BGA等封装可供选择。同时STM32还推 出了STM32L和STM32W等超低功耗和无线应用型的M3芯片。 (4)优异的实时性能。84个中断,16级可编程优先级,并且所有的引脚都可以作为中 断输入。 (5)杰出的功耗控制。STM32各个外设都有自己的独立时钟开关,可以通过关闭相应 外设的时钟来降低功耗。 (6)极低的开发成本。STM32的开发不需要昂贵的仿真器,只需要一个串口即可下载 代码,并且支持SWD和JTAG两种调试口。SWD调试可以为你的设计带来跟多的方便,只需要2 个IO口,即可实现仿真调试。 2.内部结构 STM32跟其他单片机一样,是一个单片计算机或单片微控制器,所谓单片就是在一个芯 片上集成了计算机或微控制器该有的基本功能部件。这些功能部件通过总线连在一起。就 STM32而言,这些功能部件主要包括:Cortex-M内核、总线、系统时钟发生器、复位电路、 程序存储器、数据存储器、中断控制、调试接口以及各种功能部件(外设)。不同的芯片 系列和型号,外设的数量和种类也不一样,常有的基本功能部件(外设)是:输入/输出接 口 GPIO、定时/计数器TIMER/COUNTER、串行通信接口USART、串行总线I2C和SPI或I2S、SD 卡接口 SDIO、USB 接口等