第4章ARM硬件结构应用(4~6)课件.ppt

上传人(卖家):晟晟文业 文档编号:5177377 上传时间:2023-02-16 格式:PPT 页数:56 大小:1.02MB
下载 相关 举报
第4章ARM硬件结构应用(4~6)课件.ppt_第1页
第1页 / 共56页
第4章ARM硬件结构应用(4~6)课件.ppt_第2页
第2页 / 共56页
第4章ARM硬件结构应用(4~6)课件.ppt_第3页
第3页 / 共56页
第4章ARM硬件结构应用(4~6)课件.ppt_第4页
第4页 / 共56页
第4章ARM硬件结构应用(4~6)课件.ppt_第5页
第5页 / 共56页
点击查看更多>>
资源描述

1、 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系列微控制器的大部分管脚都具有多种功能,即管脚复用,但是同一引脚在同一时刻只能使用其中一个功能,通过配置相关寄存器控制多路开关来连接引脚与片内外设。引脚P0.0GPIOTXD0PWM1输出保留PINSELx引脚连接寄存器PIN

2、SELx1:000011011P0.0默认为GPIO功能P0.0选择TXD0功能,配置对应位为01P0.0选择PWM1功能,配置对应位为10P0.0选择保留功能,配置对应位为11.4 引脚连接模块 LPC2000系列微控制器具有三个32位宽度PINSEL寄存器,其中PINSEL0和PINSEL1控制端口0,PINSEL2根据芯片的不同控制的端口数量也不同。寄存器描述寄存器LPC2100LPC2200PINSEL0P00:15PINSEL1P016:31PINSEL2P116:31P10:1、P116:31、P20:31、P30:31.4 引脚连接模块 应用示例PINSEL0=0 x05 16;

3、要求将P0.8、P0.9设置为TxD1、RxD1 通过查阅PINSE0寄存器设置表,得到P0.9和P0.8的控制位为PINSEL019:16,当该域设置为0101(0 x05)时选择 RxD1和 TxD1。为了不影响别的管脚连接设置,通常选择下面的设置方法。PINSEL0=(PINSEL0&0 xFFF0FFFF)|(0 x05 16);.5 GPIO 引脚描述 LPC2114/2124微控制器具有两个端口P0和P1,可以作为GPIO使用的引脚数为46个。LPC2210/2212/2214微控制器还包含另外两个端口P2和P3,这个两个端口与外部存储器总线复用,当它们全部作为GPIO使用时,GP

4、IO引脚数多达112个。GPIO与控制寄存器的关系PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10引脚.PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10通用名称描述访问类型复位值IOPINGPIO引脚值寄存器,不管方向模式如何,引脚的当前状态都可以从该寄存器中读出只读NAIOSETGPIO输出置位寄存器。该寄存器控制引脚输出高电平读/置位0 x00000000IOCLRGPIO输出置位寄存器。该寄存器控制引脚输出低电平只清零0 x00000000IODIRGPIO

5、方向控制寄存器。该寄存器单独控制每个IO口的方向读/写0 x00000000 GPIO相关寄存器描述.PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10 GPIO相关寄存器描述IOxPINIOxPIN描述复位值31:0GPIO引脚值。IOxPIN0对应于Px.0 IOxPIN31对应于Px.31引脚未定义 该寄存器反映了当前引脚的状态。IOxPIN中的x对应于某一个端口,如P1口对应于IO1PIN。所以芯片存在多少个端口,就有多少个IOxPIN分别与之对应。写该寄存器会将值保存到输出寄存器,具体使用稍后介绍。注意:无论引脚被设置为输入还是输出模式,都不影响引脚状态的读

6、出。.PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10 GPIO相关寄存器描述IOxDIRIOxDIR描述复位值31:0方向控制位。IOxDIR0对应于Px.0 IOxDIR31对应于Px.31引脚0 当引脚设置为GPIO输出模式时,可使用该寄存器控制引脚的方向。向某位写入1使对应引脚作为输出功能,写入0时作为输入功能。作为输入功能时,引脚处于高阻态。.PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10 GPIO相关寄存器描述IOxSETIOxSET描述复位值31:0输出置位。IOxSET0对应于Px.0 IOxPIN31对应于Px.31引

7、脚0 当引脚设置为GPIO输出模式时,可使用该寄存器从引脚输出高电平。向某位写入1使对应引脚输出高电平。写入0无效。从该寄存器读回的数据为GPIO输出寄存器的值。该值不反映外部环境对引脚的影响。.PINSELxIOxDIRIOxCLRIOxPINIOxSETinout10 GPIO相关寄存器描述IOxCLRIOxCLR描述复位值31:0输出清零。IOxCLR0对应于Px.0 IOxCLR31对应于Px.31引脚0 当引脚设置为GPIO输出模式时,可使用该寄存器从引脚输出低电平。向某位写入1使对应引脚输出低电平。写入0无效。注意:读取该寄存器无效,不能读回输出寄存器的值。.5 GPIO 使用GP

8、IO注意要点引脚设置为输出方式时,输出状态由IOxSET和IOxCLR中最后操作的寄存器决定;大部分GPIO输出为推挽方式(个别引脚为开漏输出),正常拉出/灌入电流均为4mA(短时间极限值40mA);复位后默认所有GPIO为输入模式。.PINSEL0&=0 xFFFFFFFC;IO0DIR|=0 x00000001;IO0SET =0 x00000001;.C代码:PINSEL0IO0DIRIO0CLRIO0PINIO0SETinout10 GPIO应用示例设置P0.0输出高电平P0.0(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输出(3)设置P0.0口状态,输出

9、高电平1.uint32 PinStat;PINSEL0&=0 xFFFFFFFC;IO0DIR&=0 xFFFFFFFE;PinStat =IO0PIN;.C代码:PINSEL0IO0DIRIO0CLRIO0PINIO0SETinout10 GPIO应用示例读取P0.0引脚状态P0.0(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输入(3)从IO0PIN读取引脚状态IO0PIN.#define DataBus 0 xFF PINSEL0&=0 xFFFF0000;IO0DIR|=DataBus;IO0CLR =DataBus;IO0SET =Data;.使用IOxS

10、ET和IOxCLR实现:GPIO应用示例输出多位数据至IO口(1)设置引脚连接模块,P0.07为GPIO(2)设置P0.0口方向,设置为输出(3)清零8位IO口的输出状态 在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。本例将8位无符号整形变量Data的值输出到P0.0P0.7。(4)Data变量中为1的位将输出高电平0 x?0 x00Data数据输出线:.#define DataBus 0 xFF PINSEL0&=0 xFFFF0000;IO0DIR|=DataBu

11、s;IO0PIN =(IO0SET&0 xFFFFFF00)|Data;.GPIO应用示例输出多位数据至IO口(1)设置引脚连接模块,P0.0为GPIO(2)设置P0.0口方向,设置为输出(3)写IO0PIN,输出数据 在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。本例将8位无符号整数变量Data的值输出到P0.0P0.7。使用IOxPIN实现:0 x?Data数据输出线:0 x?0 x00Data与前者对比:.STM32 GPIO操作主要功能:通用I/O(GPIO)

12、用,输入输出;单独的位设置或位清除;外部中断/唤醒线:端口必须配置成输入模式时,所有端口都有外部中断能力;复用功能(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

13、 上拉输入 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库文件已经为我们准备好了很多的操库文件已经为我们准备好

14、了很多的操作函数,可以直接使用。作函数,可以直接使用。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库文件已经

15、为我们准备好了很多的操库文件已经为我们准备好了很多的操作函数,可以直接使用。作函数,可以直接使用。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):读某排引脚里面的输出寄存

16、器的某个引脚值 .操作实例 做个跑马灯程序,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_Mo

17、de_Out_PP;PAInit.GPIO_Speed=GPIO_Speed_2MHz;GPIO_Init(GPIOA,&PAInit);.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);D

18、elay(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个中断输入请求。CP

19、U 内核ARM7TDMI-S.6.向量中断控制器 程序状态寄存器CPSR与VIC的关系 ARM内核通过CPSR来监视和控制内部的操作,CPSR中的“I”位和“F”位分别用来控制IRQ模式和FIQ模式的使能。CPUARM7TDMI-SVICIRQFIQCPSR 7(I)CPSR 6(F).6.向量中断控制器 程序状态寄存器CPSR与VIC的关系 当I=1时,禁止IRQ中断CPUARM7TDMI-SVICIRQFIQCPSR 7(I)CPSR 6(F)当I=0时,使能IRQ中断CPUARM7TDMI-SVICIRQFIQCPSR 7(I)CPSR 6(F).6.向量中断控制器 程序状态寄存器CPS

20、R与VIC的关系 当F=1时,禁止FIQ中断CPUARM7TDMI-SVICIRQFIQCPSR 7(I)CPSR 6(F)当F=0时,使能FIQ中断CPUARM7TDMI-SVICIRQFIQCPSR 7(I)CPSR 6(F).6.向量中断控制器 中断分类中断输入请求可以在VIC中被设置为以下三类:FIQ中断:具有最高优先级;向量IRQ中断:具有中等优先级;非向量IRQ中断:具有最低优先级;.6.向量中断控制器 FIQ中断硬件处理流程将当前的程序状态寄存器的内容备份即,SPSR_fiq=CPSR处理器切换到FIQ模式禁止IRQ和FIQ中断,即,I=F=1保存返回地址LR_fiq=PC设置F

21、IQ异常入口地址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中断嵌套.向量IRQ0使能中断源向量IRQ0控制寄存器VICVectCntl0向量地址0寄存器VICVectAddr0默认向量地址寄存器VICDefVectAddr向量IRQ15使能中断源向量IRQ15控制寄存器VICVectCntl15向量地址15寄存

22、器VICVectAddr15DefIRQIRQ0IRQ15VectAddr0VectAddr15DefVectAddr硬件优先级选择向量地址选择向量地址寄存器VICVectAddrIRQ0IRQ15DefIRQIRQ中断信号向量IRQ0向量IRQ15非向量IRQ高低优先级IRQ中断状态寄存器VICIRQStatusFIQ中断信号中断选择寄存器VICIntSelect中断使能寄存器VICIntEnable中断使能清零寄存器VICIntEnClr中断源31:0软件中断使能寄存器VICSoftInt软件中断清零寄存器VICSoftIntClearFIQ中断状态寄存器VICFIQStatus中断状态寄

23、存器VICRawIntrIRQFIQ.中断选择寄存器VICIntSelect中断使能寄存器VICIntEnable中断使能清零寄存器VICIntEnClr中断源31:0软件中断使能寄存器VICSoftInt软件中断清零寄存器VICSoftIntClear中断状态寄存器VICRawIntrIRQFIQ名称描述访问复位值地址VICIntEnable中断使能寄存器中断使能寄存器 控制32个中断请求(包括软件中断)的使能R/W00 xFFFF F010VICIntEnClr中断使能清零寄存器中断使能清零寄存器 将中断使能寄存器中的一个或多个位清零W00 xFFFF F014VICIntSelect中断

24、选择寄存器中断选择寄存器 将32个中断请求的每个中断分配为FIQ或IRQR/W00 xFFFF F00CVICSoftInt软件中断寄存器软件中断寄存器 控制对应通道产生软件中断R/W00 xFFFF F018VICSoftIntClear软件中断清零寄存器软件中断清零寄存器 禁止对应通道的软件中断W00 xFFFF F01C 寄存器描述控制寄存器.控制寄存器功能描述6.向量中断控制器控制寄存器功能描述VICIntEnable使能(禁止)中断源产生中断VICIntEnClrVICIntSelect中断类型选择:FIQ&IRQVICSoftInt软件中断设置寄存器VICSoftIntClearF

25、IQ中断向量IRQ中断非向量IRQ中断中断源0中断源1中断源31VIC将32个中断输入进行分配.向量IRQ0使能中断源向量IRQ0控制寄存器VICVectCntl0向量地址0寄存器VICVectAddr0默认向量地址寄存器VICDefVectAddr向量IRQ15使能中断源向量IRQ15控制寄存器VICVectCntl15向量地址15寄存器VICVectAddr15向量地址寄存器VICVectAddr 寄存器描述参数设置寄存器名称描述复位置地址VICVectCntl0VICVectCntl15向量控制0寄存器 向量控制15寄存器 00 xFFFF F2000 xFFFF F23C VICVec

26、tAddr0 VICVectAddr15 向量地址0寄存器 向量地址15寄存器 00 xFFFF F100 0 xFFFF F13C VICDefVectAddr 默认向量地址寄存器 00 xFFFF F034 VICVectAddr 向量地址寄存器 00 xFFFF F030 .IRQ中断特点6.向量中断控制器特点区别向量IRQl 支持16个向量IRQ中断;l 16个优先级;l 每个优先级指定一个服务程序入口地址。能为每个向量IRQ中断源设置服务程序地址。非向量IRQl 支持1个非向量IRQ中断;l 所有非向量IRQ的入口地址都相同。所有的非向量IRQ中断都共用一个相同的服务程序入口地址。.

27、IRQ中断相关寄存器6.向量中断控制器寄存器名称功能VICVectCntl015为中断源分配向量IRQ中断的优先级。VICVectAddr015为该中断优先级设置服务程序入口地址。VICDefVectAddr设置非向量中断服务程序的入口地址。注意:如果将同一个中断源分配给多个使能的向量IRQ中断,那么该中断源发生中断时,会使用最高优先级(最低编号)的寄存器设置。.产生中断后的服务程序地址6.向量中断控制器向量IRQ中断发生向量IRQ中断后,VIC将对应的向量地址寄存器中的数据存入VICVectAddr寄存器中。非向量IRQ中断发生非向量IRQ中断后,VIC将默认向量地址寄存器中的数据存入VIC

28、VectAddr寄存器中.IRQ中断状态寄存器VICIRQStatus中断选择寄存器VICIntSelect中断使能寄存器VICIntEnable中断使能清零寄存器VICIntEnClr中断源31:0软件中断使能寄存器VICSoftInt软件中断清零寄存器VICSoftIntClearFIQ中断状态寄存器VICFIQStatus中断状态寄存器VICRawIntrIRQFIQ 寄存器描述状态寄存器名称描述访问复位值地址VICIRQStatusIRQIRQ状态寄存器状态寄存器该寄存器读出定义为IRQ并使能的中断的状态RO00 xFFFF F000VICFIQStatusFIQFIQ状态请求状态请求

29、该寄存器读出定义为FIQ并使能的中断的状态RO00 xFFFF F004VICRawIntr所有中断的状态寄存器所有中断的状态寄存器 该寄存器该寄存器读出32个中断请求/软件中断的状态,不管中断是否使能或分类RO00 xFFFF F008注意:读取VICRawIntr寄存器将得到所有32个中断请求和软件中断的状态,它不管中断是否使能或分类。.保护使能寄存器6.向量中断控制器保护使能寄存器(VICProtection):位31:10功能当该位为1时,只能在特权模式下访问VIC寄存器。在某些场合可能需要禁止在用户模式下访问VIC寄存器,以提高软件的安全等级。.FIQ中断处理6.向量中断控制器SPS

30、R_fiq=CPSR12CPSR=nzcvqIFt_fiq3LR_fiq=PC4PC=0 x1C硬件处理软件处理中断服务程序1设置返回地址2恢复程序状态寄存器CPSR3SUBS PC,LR,#4.IRQ中断处理6.向量中断控制器硬件处理SPSR_irq=CPSR12CPSR=nzcvqIft_irq3VICVectAddr=VICVectAddrn4LR_irq=PC5PC=0 x18软件处理执行中断服务程序2设置返回地址3恢复程序状态寄存器CPSR4获取中断服务程序地址1.IRQ中断处理6.向量中断控制器SPSR_irq=CPSR12CPSR=nzcvqIft_irq3VICVectAddr

31、=VICVectAddrn4LR_irq=PC硬件处理5PC=0 x18软件处理执行中断服务程序2设置返回地址3恢复程序状态寄存器CPSR4PC VICVectAddr1.IRQ中断处理6.向量中断控制器SUBS PC,LR,#4SPSR_irq=CPSR12CPSR=nzcvqIft_irq3VICVectAddr=VICVectAddrn4LR_irq=PC硬件处理5PC=0 x18软件处理执行中断服务程序2设置返回地址3恢复程序状态寄存器CPSR4LDR PC,PC,#-0 xff01.IRQ中断的设计实例 将定时器0中断分配为向量IRQ通道0,中断服务程序地址设置为Timer0_ISR

32、。C代码:步骤:IRQ通道0控制寄存器VICVectCntl031:654:0010 x04向量IRQ通道0控制寄存器位分配位数值IRQ通道0向量地址寄存器VICVectAddr0定时器0中断服务程序地址Timer0_ISR中断使能寄存器VICIntEnable中断通道#4对应位,置“1”中断选择寄存器VICIntSelect中断通道4分配为IRQ中断(定时器0位于中断通道#4)VICIntSelect =0 x00000000;VICVectAddr0=(int)Timer0_ISR;VICVectCntl0 =(0 x20|4);VICIntEnable=(1 4);.IRQ_Eint0?

33、VICVectAddr0VICVectAddrIRQ_Eint0 图示IRQ中断的发生过程0 x000000000 xFFFFFFFF用户程序中断服务程序异常向量表1.正在执行用户程序;2.外部中断0发生中断;3.VIC硬件将中断服务程序地址装入VICVectAddr寄存器;4.程序跳转至异常向量表中IRQ入口0 x0018处;5.执行指令跳转至VICVectAddr寄存器中的中断服务地址;6.中断服务程序执行完毕,返回被中断的用户程序继续执行被中断的代码。LDR PC,PC,#-0 xff0.图示IRQ中断的发生过程0 x0000 00000 xFFFF FFFF用户程序中断服务程序异常向量

34、表IRQ_Eint0?VICVectAddr0VICVectAddrIRQ_Eint0LDR PC,PC,#-0 xff0注意:任何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 级可编程中断优先

35、级的设置(仅使用中断优先级设置 8bit 中的高 4 位,见后面解释)。6.STM32中断控制.STM32 可以支持的 68 个外部中断通道,已经固定的分配给相应的外部设备。每个中断通道都具备自己的中断优先级控制字节 PRI_n(8 位,但在 STM32 中只使用 4 位,高 4 位有效)对于这 4bit 的中断优先级控制位还必须分成 2 组看:从高位开始,前面是定义抢先式优先级的位,后面用于定义子优先级。6.STM32中断控制.4bit 的分组组合可以有以下几种形式:第第0组:所有组:所有4bit用于指定响应优先级;用于指定响应优先级;第第1组:最高组:最高1位用于指定抢占式优先级,后面位用

36、于指定抢占式优先级,后面3位用于指位用于指定响应优先级;定响应优先级;第第2组:最高组:最高2位用于指定抢占式优先级,后面位用于指定抢占式优先级,后面2位用于指位用于指定响应优先级;定响应优先级;第第3组:最高组:最高3位用于指定抢占式优先级,后面位用于指定抢占式优先级,后面1位用于指位用于指定响应优先级;定响应优先级;第第4组:所有组:所有4位用于指定抢占式优先级。位用于指定抢占式优先级。具有高抢占式优先级的中断可以在具有低抢占式具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套。优先级的中断处理过程中被响应,即中断嵌套。6.STM32中断控制.6.STM32

37、中断控制.设置相应的中断实际上就是设置设置相应的中断实际上就是设置NVIC,在,在STM32的的固件库中有一个结构体固件库中有一个结构体NVIC_InitTypeDef,里面有相应,里面有相应的标志位设置,然后再用的标志位设置,然后再用NVIC_Init()函数进行初始化。函数进行初始化。详细代码如下:详细代码如下:6.STM32中断设置实例.void NVIC_cfg()NVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/选择中断分组选择中断分组2 NVIC_InitStruc

38、ture.NVIC_IRQChannel=EXTI2_IRQChannel;/选择中断通道选择中断通道2 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;/抢占式中断优先级设置为抢占式中断优先级设置为0 NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;/响应式中断优先级设置为响应式中断优先级设置为0 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;/使能中断使能中断 NVIC_Init(&NVIC_InitStructure);.写中断响应函数

39、写中断响应函数 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);.态度决定一切态度决定一切细节影响成败细节影响成败谢谢您的关注!谢谢您的关注!.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第4章ARM硬件结构应用(4~6)课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|