版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章概述-2-本章目标了解ARM的含义理解Cortex-M3内核的特点了解Cortex-M3的指令集理解STM32系列MCU的分类了解CMSIS的含义掌握STM32固件库的含义和结构熟悉STM32F107的开发工具MDK-ARM-3-ARM体系概述
当今,ARM技术被广泛应用,领域涉及手机、数字机顶盒以及汽车制动系统和网络路由器等。并且,迅速向传统的嵌入式领域渗透。全球95%以上的手机以及超过四分之一的电子设备都在使用ARM技术。-4-ARM体系概述--ARM简介
ARM是AdvancedRISCMachines的简写,有三个含义:一个生产高级RISC(精简指令集)处理器的公司。一种高级RISC的技术。一类采用高级RISC的处理器。-5-ARM体系概述--ARM简介
ARM公司成立于1990年,总部位于英国剑桥,是全球领先的半导体知识产权(IP)提供商之一ARM公司的商业模式主要是IP的设计和许可,本身并不生产和销售实际的半导体芯片。对于每一个授权公司和厂商来说,他们获得的授权都是独一无二的。-6-ARM体系概述--ARM简介
RISC的英文全称是:ReducedInstructionSetComputing,即“精简指令集”。精简指令集的基本思想为:尽量简化指令功能,只保留那些功能简单、能在一个节拍内执行完成的指令RISC技术的精华就是通过简化指令功能,使指令的平均执行周期减少-7-ARM体系概述--ARM简介
如今,对于内嵌有ARM处理器核心和采用ARM构架的处理器,被统称为ARM处理器。1991年,ARM公司推出第一款嵌入式RISC核心即ARM6解决方案。1993年,ARM公司推出基于ARMv4T架构的ARM7核心。2004年,ARM公司发布基于ARMv7架构的Cortex处理器系列,同时发布作为该系列架构中首款的ARMCortex-M3处理器。-8-ARM体系概述--ARM架构的发展
ARM处理器架构简单,使用较小的集成电路规模,从而降低功耗,同时可以实现较高的性能和代码密度,从而达到良好的平衡,这是ARM架构的关键特性。ARM架构一方面在各个版本之间保持了很高的兼容性,另一方面也在不断的改进。-9-ARM体系概述--ARM架构的发展
-10-ARM体系概述--ARM架构的发展
ARMv4T架构:ARM7TDMI,三星S3C44B0x系列等。ARMv5TEJ架构:ARM926ej-s,ATMEL的AT91SAM926x系列等。ARMv6架构:ARM1176jz,三星S3C6410x系列等。ARMv6M架构:Cortex-M0,ST的STM32F0系列等。ARMv7架构:是目前ARM公司最新的架构,所有Cortex处理器都实现了ARMv7架构(ARMv6M的Cortex-M系列处理器除外)。-11-ARM体系概述--Cortex内核
Cortex系列内核的命名,采用Cortex加后缀的方式。分为三个系列:
A系列(应用程序型):适用于高端消费电子设备、网络设备、移动Internet设备和企业市场。R系列(实时型):该系列适用于高性能实时控制系统。M系列(微控制器型):该系列可快速进行中断处理,适用于需要高度确定的行为和最少门数的成本敏感型设备。-12-ARM体系概述--Cortex内核
M系列主要面向嵌入式以及工业控制行业。其中,Cortex-M系列又有4款产品,分别对应不同应用和需求名称Cortex-M0Cortex-M1Cortex-M3Cortex-M4架构ARMv6MARMv6MARMv7-MARMv7E-M应用范围8/16位应用FPGA应用16/32位应用32位/DSC应用特点低成本和简单性第一个为FPGA设计的ARM处理器高性能和高效率有效的数字信号控制-13-ARM体系概述--Cortex内核
Cortex-M3(以下简称CM3)采用哈佛结构,拥有独立的32位指令总线和数据总线,寄存器和存储器也是32位。与内核紧密耦合的NVIC(中断嵌套控制寄存器),新增多种中断机制,可提高中断响应速度和效率符合CMSIS(Cortex微处理器软件接口标准)全面支持32位Thumb-2和16位Thumb指令集基于ARM的CoreSight(片上调试和跟踪)架构调试系统-14-ARM体系概述--CM3指令集
由于历史原因,从ARM7TDMI开始,ARM处理器一直支持两种形式上相对独立的指令集,它们分别是:
32位的ARM指令集:效率较高,对应ARM状态。
16位的Thumb指令集:理论上代码密码提高一倍,对应Thumb状态。ARM和Thumb混合编程的方法在时间和空间上有额外开销的,主要发生在状态切换之时。另一方面,ARM代码和Thumb代码需要不同的编译方式,这也增加了软件开发管理的复杂度。-15-ARM体系概述--CM3指令集
CM3内核只支持Thumb和Thumb-2指令集,另外,CM3内核并不支持所有Thumb-2指令,只是实现Thumb-2的一个子集-16-STM32系列MCU
--STM32系列MCU分类
STM32系列MCU由意法半导体(ST)公司设计和制造。
ST公司目前发布的STM32MCU共分五个系列,STM32L1、STM32F0、STM32F1、STM32F2和STM32F4。-17-STM32系列MCU
--STM32系列MCU分类
STM32F1(MainstreamMCUs)系列是一个主流的MCU系列,STM32F1满足工业、医疗和消费电子市场的各种应用需求。五个产品线为:
超值型STM32F100:该系列最高主频24MHz,集成了电机控制和CEC功能。
基本型STM32F101:该系列最高主频36MHz,具有高达1M字节的片上闪存。
USB基本型STM32F102:该系列最高主频48MHz,具有全速USB模块。
增强型STM32F103:该系列最高主频72MHz,具有高达1M字节的片上闪存,集成电机控制、USB和CAN模块。
互联型STM32F105/107:该系列最高主频72MHz,具有以太网MAC、CAN以及USB2.0OTG功能。-18-STM32系列MCU
--STM32系列MCU分类
STM32系列MCU有自己的命名规范,采用编码+数字的方式对于STM32F107VCT6可以解读出它是基于ARM核心的32位MCU,属于通用类型,互联型产品,有100个引脚,256K闪存存储器,LQFP封装格式,-40℃~85℃的工作温度。-19-STM32系列MCU
--STM32系列MCU分类
-20-STM32系列MCU
--STM32F107资源
在STM32F1系列互联型产品中,STM32F107资源丰富、性能较高,该MCU主要硬件资源如下:ARMCortex-M3内核,最高72MHZ频率。60针和100针两种管脚配置,多种封装方式。64至256KbytesFlash存储器,64KbytesSRAM存储器。2.0V至3.6V电源。2个12-bit,1usA/D转换器(16通道)。2个12-bitD/A转换器。12通道DMA控制器。支持SWD和JTAG调试接口。10个定时计数器。14个通信接口。-21-STM32系列MCU
--STM32F107资源
具体STM32F107又分为两种封装和两种程序存储器容量外设名称STM32F107RBSTM32F107RCSTM32F107VBSTM32F107VCFlash存储器128Kbytes256Kbytes128Kbytes256KbytesSRAM64Kbytes封装LQFP64LQFP100Ethenet有定时器通用4高级1基本2通信接口SPI(I2S)3(2)I2C1USART5USBOTGFS有CAN2GPIOs518012-bitADC通道数量21612-bitDAC通道数量22CPU频率72MHz工作电压2.0至3.6V-22-STM32系列MCU
--STM32F107资源
STM32F107100脚封装管脚定STM32F10764脚封装管脚图-23-STM32固件库固件库,就是STM32F10xStandardPeripheralsFirmwareLibrary(简称STM32固件库)的意思,是意法半导体(ST)公司针对STM32系列MCU发布的一组函数库,并且符合CMSIS标准。-24-STM32固件库--CMSIS含义
CMSIS全称是CortexMicrocontrollerSoftwareInterfaceStandard(Cortex微控制器软件接口标准)
CMSIS是ARM公司和一些编译器厂家以及半导体厂家共同遵循的一套标准,是由ARM公司提出,专门针对Cortex-M系列的标准。只要是基于CM3的芯片,代码均是可以复用的。-25-STM32固件库--STM32固件库简介
STM32固件库是一个函数包,它由程序、数据结构和宏组成。包括了STM32系列MCU标准外设的性能特征。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。所有的驱动源代码都符合“StrictANSI-C”标准。因此它不受不同开发环境的影响有较好的移植性。-26-STM32固件库--STM32固件库结构
从意法半导体网站可以下载到名为stm32f10x_stdperiph_lib的压缩包,这就是STM32固件库。-27-STM32固件库--STM32固件库结构
_htmresc该文件夹内只含有CMSIS和ST的logo。
Libraries该文件夹有两个子文件夹,分别是CMSIS和STM32F10x_StdPerph_Driver。
Project该文件夹有两个子文件夹,分别是STM32F10x_StdPerph_Examples和STM32F10x_StdPerph_Template。
Utilities文件夹内为意法半导体官方评估板的相关代码和说明。-28-STM32固件库--固件库命名规则
STM32F10x系列的库文件和库函数都存放在STM32F10x_StdPerph_Driver文件夹下,作为一个标准的函数库,需要遵守一定的命名规则
PPP(P是任意一个字母)表示任一外设缩写缩写、源程序文件和头文件命名都以“stm32f10x_”作为开头所有常量都由英文字母大写书写。寄存器的命名与常量命名规则一样,都由英文字母大写书写。外设函数的命名以该外设的缩写加下划线为开头。在函数名中,只允许存在一个下划线-29-STM32固件库--固件库命名规则
每个外设都有一组功能函数,即该外设的库函数,其函数命名也遵循一定规则:名为PPP_Init的函数,其功能是根据PPP_InitTypeDef中指定的参数,初始化外设PPP名为PPP_DeInit的函数,其功能为复位外设PPP的所有寄存器至缺省值名为PPP_StructInit的函数,其功能为通过设置PPP_InitTypeDef结构中的各种参数来定义外设的功能名为PPP_Cmd的函数,其功能为使能或者失能外设PPP名为PPP_ITConfig的函数,其功能为使能或者失能来自外设PPP某中断源名为PPP_DMAConfig的函数,其功能为使能或者失能外设PPP的DMA接口用以配置外设功能的函数,总是以字符串“Config”结尾名为PPP_GetFlagStatus的函数,其功能为检查外设PPP某标志位被设置与否名为PPP_ClearFlag的函数,其功能为清除外设PPP标志位名为PPP_GetITStatus的函数,其功能为判断来自外设PPP的中断发生与否名为PPP_ClearITPendingBit的函数,其功能为清除外设PPP中断待处理标志位-30-STM32固件库--基于固件库的STM32F107程序设计
直接操作寄存器
在寄存器的配置时,计算配置字的二进制数值,直接写入寄存器。下述示例代码是一个典型的操作寄存器的编程方法,功能是PD2管脚不断地输出高低电平。#include "stm32f10x.h"intmain(void){ /*使能GPIOD口时钟*/
RCC->APB2ENR|=1<<5; /*先对PD2相关配置位清零,避免影响其他端口设置位*/
GPIOD->CRL&=0xfffff0ff; /*选择PD2工作模式MODE2[1:0]=11,输出最高速度50MHz
选择PD2配置位CNF2[1:0]=00, 推挽输出则配置字为0x00000300*/
GPIOD->CRL|=0x00000300; while(1) { /*GPIOD2输出高电平*/
GPIOD->BSRR=0x00000004; /*GPIOD2输出低电平*/
GPIOD->BRR=0x00000004; }}-31-STM32固件库--基于固件库的STM32F107程序设计
基于ST固件库直接调用固件库函数来进行外设的配置和使用。#include "stm32f10x.h"intmain(void){ /*定义一个GPIO_InitTypeDef类型的结构体,该结构体原型在stm32f10x_gpio.h中*/
GPIO_InitTypeDefGPIO_InitStructure; /*使能GPIOD口时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE); /*配置PD2为推挽输出模式*/ /*选择管脚2*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2; /*选择管脚速度为50MHz*/ GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; /*选择管脚工作模式为输出、推挽*/ GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; /*按照结构体GPIO_InitStructure的配置进行初始化*/ /*选择端口为GPIOD*/
GPIO_Init(GPIOD,&GPIO_InitStructure); while(1) { /*GPIOD2输出高电平*/
GPIO_SetBits(GPIOD,GPIO_Pin_2); /*GPIOD2输出低电平*/
GPIO_ResetBits(GPIOD,GPIO_Pin_2); }}-32-STM32固件库--基于固件库的STM32F107程序设计
本书推荐调用STM32固件库的编程方法,这样既可以较快地掌握外设的使用,又可以加快学习和开发速度。因为对于初学者来说,效率并没有那么重要,重要的还是能够尽快入门和提高。即使将来需要操作寄存器,固件库函数的源码,本身也是很好的寄存器配置和操作的参考。-33-开发工具--STM32F107开发工具介绍目前在STM32F107开发中常用的开发工具有ARM公司的MDK-ARM和IAR公司的EWARM两种。-34-开发工具--流水灯示例流水灯是嵌入式开发中常用的演示程序,堪比PC机开发程序中的“HelloWorld!”。本节也将实现一个基于STM32F107的四个LED流水灯程序-35-开发工具--流水灯示例建立工程文件在开发模板(本例所配开发模板,详见实践篇)中建立一个名为“流水灯”的工程文件-36-开发工具--流水灯示例编辑代码在main.c文件中编写源代码-37-#include "stm32f10x.h"/*定义一个GPIO_InitTypeDef类型的结构体,该结构体原型在stm32f10x_gpio.h中*/GPIO_InitTypeDefGPIO_InitStructure;intmain(void){ inti; /*使能GPIOC口时钟*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); /*配置PC6-9为推挽输出模式*/ /*选择管脚6至管脚9*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; /*选择管脚速度为50MHz*/
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
/*选择管脚工作模式为输出、推挽*/ GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; /*按照结构体GPIO_InitStructure的配置进行初始化*/ /*选择端口为GPIOC*/ GPIO_Init(GPIOC,&GPIO_InitStructure); /*熄灭所有led*/ GPIO_SetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);
while(1) { /*GPIOC6输出低电平,点亮led1*/ GPIO_ResetBits(GPIOC,GPIO_Pin_6); /*延时*/ for(i=0;i<500000;i++) {} /*GPIOC6输出高电平,熄灭led1*/
GPIO_SetBits(GPIOC,GPIO_Pin_6);
/*GPIOC7输出低电平,点亮led2*/ GPIO_ResetBits(GPIOC,GPIO_Pin_7); /*延时*/ for(i=0;i<500000;i++) {} /*GPIOC7输出高电平,熄灭led2*/ GPIO_SetBits(GP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年大学生性健康与生殖健康培训
- 2026年医患共情视角下的知情同意书设计
- AI在戏曲音乐中的应用
- 2026年小学不定方程与整数解问题
- 2026年泻下剂(承气汤类)临证思辨与现代药理
- 2026年农民工职业病防护知识知晓率与健康权益保障
- 2026年沟通艺术与高效倾听技巧
- 2026年养老院老年人沟通技巧培训
- 上海立达学院《安全评估分析》2025-2026学年第一学期期末试卷(B卷)
- 2026年MRI设备数字孪生预警系统开发
- 2024年广东省中考数学模拟试卷(一)
- 2023年新高考(新课标)全国2卷数学试题真题(含答案解析)
- 初中数学圆中常用辅助线的作法八大题型及答案
- (正式版)HG∕T 20644-2024 弹簧支吊架选用标准
- 动植物检验检疫学智慧树知到期末考试答案章节答案2024年北京工商大学
- 机械制造专业毕业答辩模板
- DL-T 1476-2023 电力安全工器具预防性试验规程
- 第五章-受压杆件的扭转屈曲与弯扭屈曲1
- 中国戏曲剧种鉴赏智慧树知到期末考试答案章节答案2024年上海戏剧学院等跨校共建
- 2023年重庆新高考政治真题
- 临床试验研究者职责
评论
0/150
提交评论