欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    ARM硬件结构应用.ppt

    • 资源ID:5415691       资源大小:774KB        全文页数:55页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ARM硬件结构应用.ppt

    1.LPC和STM32 简介2.STM32固件库3.系统控制模块4.引脚连接模块5.GPIO操作6.向量中断控制器7.外中断输入,LPC和STM32系列ARM硬件结构与应用,8.定时器原理及应用9.SPI接口及应用10.UART接口及应用11.A/D转换器及应用12.看门狗13.PWM原理与应用14.实时时钟,4 引脚连接模块,概述,LPC2000系列微控制器的大部分管脚都具有多种功能,即管脚复用,但是同一引脚在同一时刻只能使用其中一个功能,通过配置相关寄存器控制多路开关来连接引脚与片内外设。,01,10,11,P0.0默认为GPIO功能,P0.0选择TXD0功能,配置对应位为01,P0.0选择PWM1功能,配置对应位为10,P0.0选择保留功能,配置对应位为11,4 引脚连接模块,LPC2000系列微控制器具有三个32位宽度PINSEL寄存器,其中PINSEL0和PINSEL1控制端口0,PINSEL2根据芯片的不同控制的端口数量也不同。,寄存器描述,4 引脚连接模块,应用示例,PINSEL0=0 x05 16;,要求将P0.8、P0.9设置为TxD1、RxD1 通过查阅PINSE0寄存器设置表,得到P0.9和P0.8的控制位为PINSEL019:16,当该域设置为0101(0 x05)时选择 RxD1和 TxD1。,为了不影响别的管脚连接设置,通常选择下面的设置方法。,PINSEL0=(PINSEL0,5 GPIO,引脚描述,LPC2114/2124微控制器具有两个端口P0和P1,可以作为GPIO使用的引脚数为46个。LPC2210/2212/2214微控制器还包含另外两个端口P2和P3,这个两个端口与外部存储器总线复用,当它们全部作为GPIO使用时,GPIO引脚数多达112个。,GPIO与控制寄存器的关系,引脚,GPIO相关寄存器描述,PINSELx,IOxDIR,IOxCLR,IOxPIN,IOxSET,in,out,1,0,GPIO相关寄存器描述IOxPIN,该寄存器反映了当前引脚的状态。IOxPIN中的x对应于某一个端口,如P1口对应于IO1PIN。所以芯片存在多少个端口,就有多少个IOxPIN分别与之对应。写该寄存器会将值保存到输出寄存器,具体使用稍后介绍。注意:无论引脚被设置为输入还是输出模式,都不影响引脚状态的读出。,PINSELx,IOxDIR,IOxCLR,IOxPIN,IOxSET,in,out,1,0,GPIO相关寄存器描述IOxDIR,当引脚设置为GPIO输出模式时,可使用该寄存器控制引脚的方向。向某位写入1使对应引脚作为输出功能,写入0时作为输入功能。作为输入功能时,引脚处于高阻态。,PINSELx,IOxDIR,IOxCLR,IOxPIN,IOxSET,in,out,1,0,GPIO相关寄存器描述IOxSET,当引脚设置为GPIO输出模式时,可使用该寄存器从引脚输出高电平。向某位写入1使对应引脚输出高电平。写入0无效。从该寄存器读回的数据为GPIO输出寄存器的值。该值不反映外部环境对引脚的影响。,PINSELx,IOxDIR,IOxCLR,IOxPIN,IOxSET,in,out,1,0,GPIO相关寄存器描述IOxCLR,当引脚设置为GPIO输出模式时,可使用该寄存器从引脚输出低电平。向某位写入1使对应引脚输出低电平。写入0无效。注意:读取该寄存器无效,不能读回输出寄存器的值。,5 GPIO,使用GPIO注意要点,引脚设置为输出方式时,输出状态由IOxSET和IOxCLR中最后操作的寄存器决定;大部分GPIO输出为推挽方式(个别引脚为开漏输出),正常拉出/灌入电流均为4mA(短时间极限值40mA);复位后默认所有GPIO为输入模式。,.PINSEL0.,C代码:,PINSEL0,IO0DIR,IO0CLR,IO0PIN,IO0SET,in,out,1,0,GPIO应用示例设置P0.0输出高电平,P0.0,.uint32 PinStat;PINSEL0.,C代码:,PINSEL0,IO0DIR,IO0CLR,IO0PIN,IO0SET,in,out,1,0,GPIO应用示例读取P0.0引脚状态,P0.0,IO0PIN,#define DataBus 0 xFF PINSEL0.,使用IOxSET和IOxCLR实现:,GPIO应用示例输出多位数据至IO口,在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。本例将8位无符号整形变量Data的值输出到P0.0P0.7。,数据输出线:,#define DataBus 0 xFF PINSEL0.,GPIO应用示例输出多位数据至IO口,在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。本例将8位无符号整数变量Data的值输出到P0.0P0.7。,使用IOxPIN实现:,数据输出线:,STM32 GPIO操作,主要功能:通用I/O(GPIO)用,输入输出;单独的位设置或位清除;外部中断/唤醒线:端口必须配置成输入模式时,所有端口都有外部中断能力;复用功能(AF),并且软件能重新映射I/O复用功能;GPIO锁定机制:主要针对复位设定的,当某端口位lock后,复位后将不改变的此端口的位配置。,STM32 GPIO操作,强大的GPIO功能,可设置:GPIOMode_TypeDef GPIO mode 定义及偏移地址 GPIO mode:GPIO_Mode_AIN 0 x00 模拟输入 GPIO_Mode_IN_FLOATING 0 x04 悬空输入 GPIO_Mode_IPD 0 x28 下拉输入 GPIO_Mode_IPU 0 x48 上拉输入 GPIO_Mode_Out_OD 0 x14 开漏输出 GPIO_Mode_Out_PP 0 x10 推挽输出 GPIO_Mode_AF_OD 0 x1c 开漏复用 GPIO_Mode_AF_PP 0 x18 推挽复用,STM32 GPIO操作,输出速度通过GPIOSpeed_TypeDef结构体可选择:2MHz,10MHz,50MHz。,typedef enum GPIO_Speed_10MHz,GPIO_Speed_2MHz,GPIO_Speed_50MHzGPIOSpeed_TypeDef;,固件库里面的GPIO库文件已经为我们准备好了很多的操作函数,可以直接使用。,1.GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct):根据GPIO_InitTypeDef里面的值,初始化某排里面的某些引脚的模式跟速度 2.GPIO_StructInit(GPIO_InitTypeDef*GPIO_InitStruct):给GPIO_InitTypeDef里面的项目赋默认值 3.GPIO_SetBits(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin):某排引脚某个引脚输出1,固件库里面的GPIO库文件已经为我们准备好了很多的操作函数,可以直接使用。,4.GPIO_ResetBits(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin):某排引脚某个引脚输出0 5.GPIO_Write(GPIO_TypeDef*GPIOx,uint16_t PortVal):设置某排引脚输出值 6.GPIO_ReadInputData(GPIO_TypeDef*GPIOx):读整排引脚的值 7.GPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin):读某排引脚里面的输出寄存器的某个引脚值,操作实例,做个跑马灯程序,PA.11PA.14口分别4个LED灯,当I/O为高电平时LED灯点亮。,#include“stm32f10 x.h”#include“stm32f10 x_conf.h”GPIO_InitTypeDef PAInit;void LED_Init(void)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);/开GPIOC时钟PAInit.GPIO_Pin=GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;PAInit.GPIO_Mode=GPIO_Mode_Out_PP;PAInit.GPIO_Speed=GPIO_Speed_2MHz;GPIO_Init(GPIOA,main()LED_Init();while(1)GPIO_SetBits(GPIOA,GPIO_Pin_11);/GPIOA.11=1 Delay(0 x8ffff);GPIO_ResetBits(GPIOA,GPIO_Pin_11);/GPIOA.11=0 Delay(0 x8ffff);GPIO_SetBits(GPIOA,GPIO_Pin_12);Delay(0 x8ffff);GPIO_ResetBits(GPIOA,GPIO_Pin_12);Delay(0 x8ffff);GPIO_SetBits(GPIOA,GPIO_Pin_13);Delay(0 x8ffff);GPIO_ResetBits(GPIOA,GPIO_Pin_13);Delay(0 x8ffff);GPIO_SetBits(GPIOA,GPIO_Pin_14);Delay(0 x8ffff);GPIO_ResetBits(GPIOA,GPIO_Pin_14);Delay(0 x8ffff);,6 向量中断控制器,概述,ARM7TDMI内核具有两个中断输入,分别为IRQ中断和FIQ中断。向量中断控制器(VIC)负责管理芯片的中断源,最多可以管理32个中断输入请求。,CPU 内核ARM7TDMI-S,6.向量中断控制器,程序状态寄存器CPSR与VIC的关系,ARM内核通过CPSR来监视和控制内部的操作,CPSR中的“I”位和“F”位分别用来控制IRQ模式和FIQ模式的使能。,CPU,ARM7TDMI-S,VIC,IRQ,FIQ,CPSR 7(I),CPSR 6(F),6.向量中断控制器,程序状态寄存器CPSR与VIC的关系,当I=1时,禁止IRQ中断,当I=0时,使能IRQ中断,6.向量中断控制器,程序状态寄存器CPSR与VIC的关系,当F=1时,禁止FIQ中断,当F=0时,使能FIQ中断,6.向量中断控制器,中断分类,中断输入请求可以在VIC中被设置为以下三类:FIQ中断:具有最高优先级;向量IRQ中断:具有中等优先级;非向量IRQ中断:具有最低优先级;,6.向量中断控制器,FIQ中断硬件处理流程,将当前的程序状态寄存器的内容备份即,SPSR_fiq=CPSR,处理器切换到FIQ模式,禁止IRQ和FIQ中断,即,I=F=1,保存返回地址LR_fiq=PC,设置FIQ异常入口地址PC=0 x1C,发生FIQ异常事件,说明:ARM7不支持FIQ中断嵌套,6.向量中断控制器,IRQ中断相应流程,将当前的程序状态寄存器的内容备份即,SPSR_irq=CPSR,处理器切换到IRQ模式,禁止IRQ中断,即,I=1,保存返回地址LR_irq=PC,设置IRQ异常入口地址PC=0 x18,发生IRQ异常事件,说明:ARM7不支持IRQ中断嵌套,寄存器描述控制寄存器,控制寄存器功能描述,6.向量中断控制器,寄存器描述参数设置寄存器,IRQ中断特点,6.向量中断控制器,IRQ中断相关寄存器,6.向量中断控制器,注意:如果将同一个中断源分配给多个使能的向量IRQ中断,那么该中断源发生中断时,会使用最高优先级(最低编号)的寄存器设置。,产生中断后的服务程序地址,6.向量中断控制器,寄存器描述状态寄存器,注意:读取VICRawIntr寄存器将得到所有32个中断请求和软件中断的状态,它不管中断是否使能或分类。,保护使能寄存器,6.向量中断控制器,保护使能寄存器(VICProtection):,在某些场合可能需要禁止在用户模式下访问VIC寄存器,以提高软件的安全等级。,FIQ中断处理,6.向量中断控制器,SUBS PC,LR,#4,IRQ中断处理,6.向量中断控制器,硬件处理,软件处理,IRQ中断处理,6.向量中断控制器,软件处理,IRQ中断处理,6.向量中断控制器,SUBS PC,LR,#4,IRQ中断的设计实例,将定时器0中断分配为向量IRQ通道0,中断服务程序地址设置为Timer0_ISR。,C代码:,步骤:,IRQ通道0控制寄存器VICVectCntl0,向量IRQ通道0控制寄存器位分配,位,数值,图示IRQ中断的发生过程,1.正在执行用户程序;,2.外部中断0发生中断;,3.VIC硬件将中断服务程序地址装入VICVectAddr寄存器;,4.程序跳转至异常向量表中IRQ入口0 x0018处;,5.执行指令跳转至VICVectAddr寄存器中的中断服务地址;,6.中断服务程序执行完毕,返回被中断的用户程序继续执行被中断的代码。,图示IRQ中断的发生过程,IRQ_Eint0,注意:任何IRQ中断产生之后,微控制器跳转到地址0 x18执行代码,该地址处的指令为:LDR PC,PC,#-0 xff0在执行该指令时,PC指向当前指令后的第2条指令,即地址0 x20。该指令将内存地址:0 x20-0 xFF0 0 xFFFFF030处的内容存入PC,该地址正是 VICVectAddr寄存器的地址。所以一条ARM指令即可实现程序向中断服务程序的跳转。,STM32 目前支持的中断共为:84 个 其中(16 个内核+68 个外部),和 16 级可编程中断优先级的设置(仅使用中断优先级设置 8bit 中的高 4 位,见后面解释)。,6.STM32中断控制,STM32 可以支持的 68 个外部中断通道,已经固定的分配给相应的外部设备。每个中断通道都具备自己的中断优先级控制字节 PRI_n(8 位,但在 STM32 中只使用 4 位,高 4 位有效)对于这 4bit 的中断优先级控制位还必须分成 2 组看:从高位开始,前面是定义抢先式优先级的位,后面用于定义子优先级。,6.STM32中断控制,4bit 的分组组合可以有以下几种形式:第0组:所有4bit用于指定响应优先级;第1组:最高1位用于指定抢占式优先级,后面3位用于指定响应优先级;第2组:最高2位用于指定抢占式优先级,后面2位用于指定响应优先级;第3组:最高3位用于指定抢占式优先级,后面1位用于指定响应优先级;第4组:所有4位用于指定抢占式优先级。具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套。,6.STM32中断控制,6.STM32中断控制,设置相应的中断实际上就是设置NVIC,在STM32的固件库中有一个结构体NVIC_InitTypeDef,里面有相应的标志位设置,然后再用NVIC_Init()函数进行初始化。详细代码如下:,6.STM32中断设置实例,void NVIC_cfg()NVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/选择中断分组2 NVIC_InitStructure.NVIC_IRQChannel=EXTI2_IRQChannel;/选择中断通道2 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;/抢占式中断优先级设置为0 NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;/响应式中断优先级设置为0 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;/使能中断 NVIC_Init(,写中断响应函数STM32不像C51单片机那样,可以用过interrupt关键字来定义中断响应函数,STM32的中断响应函数接口存在中断向量表中,是由启动代码给出的。默认的中断响应函数在stm32f10 x_it.c中。因此我们需要把这个文件加入到工程中来。,void EXTI2_IRQHandler(void)/点亮LED灯 GPIO_SetBits(GPIOD,GPIO_Pin_6);/清空中断标志位,防止持续进入中断 EXTI_ClearITPendingBit(EXTI_Line2);void EXTI3_IRQHandler(void)GPIO_SetBits(GPIOD,GPIO_Pin_3);EXTI_ClearITPendingBit(EXTI_Line3);,

    注意事项

    本文(ARM硬件结构应用.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开