嵌入式系统导论(第2版)-教学课件 嵌入式导论06_第1页
嵌入式系统导论(第2版)-教学课件 嵌入式导论06_第2页
嵌入式系统导论(第2版)-教学课件 嵌入式导论06_第3页
嵌入式系统导论(第2版)-教学课件 嵌入式导论06_第4页
嵌入式系统导论(第2版)-教学课件 嵌入式导论06_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统导论主讲教师:第6章CM3异常和STM32中断本章内容提要6.1Cortex-M3的异常6.2STM32的中断应用6.3EXTI应用示例:按键中断数据传送方式程序查询传送中断传送DMA传送6.1Cortex-M3的异常异常(Exception)是导致程序流程改变的事件ARM的中断(Interrupt)是异常的一种类型中断通常由外设或外部输入产生有些情况下也可以由软件激发针对中断的异常处理程序也被称为中断服务程序ISR异常由嵌套向量中断控制器NVIC处理(NestedVectoredInterruptController)CM3异常的来源中断请求IRQ(IntrruptRequest)通常来自片上外设或经I/O端口的外部中断输入非屏蔽中断NMI(Non-MaskableInterrupt)请求可来自看门狗定时器或供电电压下降探测电路系统时钟(滴答)SysTick,可以产生周期性中断请求可用于嵌入式操作系统的时间记录或者作为监督的定时控制处理器本身也是异常事件的来源例如,失效事件、软件异常等复位是一种特殊的异常CM3

常异常编号IRQn优先级名称1--3Reset2-14-2NMI3-13-1HardFault4-120MemManage5-111BusFault6-102UsafeFault7—10---11-53SVCall12-44DebugMonitor13---14-25PendSV15-16SysTick16—2550—2557—255IRQ优先级定义CM3的一个异常是否被处理器接收并处理取决于它的优先级以及处理器当前的优先级有些异常(复位、NMI和HardFalult)具有固定优先级是一个负值,表示其优先级高于其他优先级其他异常的优先级可以编程确定,范围是0~255异常优先级数值越小、优先权越高CM3支持3个固定最高优先级和256级可编程优先级但实际支持的优先级有半导体芯片设计者决定多数只支持8、16、32等种优先级优先级编程由优先级寄存器控制8、16、32、256种优先级依次需3、4、5、8位优先级寄存器组(抢占)优先级和子(响应)优先级3~8位的优先级寄存器又分成两个部分组优先级(GroupPriority)确定是否可以打断正在执行的中断,实现嵌套早期技术手册中,被称为抢占优先级(Pre-emptionPriority)子优先级(Sub-Priority)只用于在相同组优先级,多个子优先级同时出现时 高优先权(低优先级值)的异常首先被处理也有译为响应优先级嵌套向量中断控制器NVICNVIC是处理器的一部分,可以编程处理异常和中断的配置、优先权和中断屏蔽6.2STM32的中断应用STM32具有多达68个中断(不包括16个Cortex-M3中断线)STM32把编号-3~6的中断定义为系统异常编号7开始的是外部中断(所有外设都具有中断请求能力)编号为负的3个中断不能设置优先级其他都可以自行设置不同型号STM32微控制器的向量表略有区别启动文件包含了其支持的所有中断并给出了中断服务函数名STM32

断异常编号IRQn优先级名称1607WWDG1718PVD…………22613EXTI023714EXTI124815EXTI225916EXTI3261017EXTI4271118DMA1_Channel1…………392330EXTI9_5…………564047EXTI15_10…………NVIC库函数函数名函数功能NVIC_InitNVIC初始化NVIC_PriorityGroupConfig配置优先权组NVIC_SetVectorTable设置向量表位置和偏移NVIC_SystemLPConfig为系统进入低功耗模式选择条件SysTick_CLKSourceConfig配置系统时钟SysTick时钟源1.NVIC优先级配置STM32使用4位优先级寄存器、支持16种异常优先级4位分成组(抢占)优先级和子(响应)优先级有5组分配形式(下页表)STM32库中文件misc.c提供了NVIC的配置函数

voidNVIC_PriorityGroupConfig(uint32_t

NVIC_PriorityGroup)参数NVIC_PriorityGroup对应5组分配形式NVIC_PriorityGroup_0~NVIC_PriorityGroup_4使用中断一定要在工程项目中添加misc.c文件STM32的5组优先级配置组号组(抢占)优先级子(响应)优先级0无4位都配置子优先级16种子优先级(0~15)11位配置组优先级2种组优先级(0、1级)3位配置子优先级8种子优先级(0~7)22位配置组优先级4种组优先级(0~3级)2位配置子优先级4种子优先级(0~3)33位配置组优先级8种组优先级(0~7级)1位配置子优先级2种子优先级(0、1)44位都配置组优先级16种组优先级(0~15级)无2.NVIC初始化NVIC初始化函数void

NVIC_Init(NVIC_InitTypeDef*NVIC_InitStruct)NVIC_InitTypeDef结构typedef

struct{uint8_tNVIC_IRQChannel;uint8_tNVIC_IRQChannelPreemptionPriority;uint8_tNVIC_IRQChannelSubPriority;

FunctionalState

NVIC_IRQChannelCmd;}

NVIC_InitTypeDef;STM32的外部中断/事件EXTIEXTI控制器具有19个边沿检测器(中断通道)EXTI0~EXTI15:对应GPIOx_Pin0~GPIOx_Pin15EXTI16:连接PVD(电源电源检测)输出EXTI17:连接RTC(实时时钟)的闹钟事件EXTI18:连接USB唤醒事件(EXTI19:连接以太网唤醒事件,仅互联型产品)用于检测19个输入线,每个都可以单独地被配置为中断或事件也都可以选择上升沿、下降沿或上下沿均触发每个输入线都可以单独进行屏蔽EXTI:ExternalInterrupt/event通用I/O引脚作为外部中断所有I/O端口都可以配置为EXTI外部中断模式用来检测外设中断请求,可以配置为 下降沿触发、上升沿触发或上升下降沿触发所有GPIO引脚都可以作为中断源连接到16个EXTI外部中断线(Line)上PAx~PGx引脚连接到EXTIxEXTI0~EXTI4分别占用一个中断向量EXTI9~EXTI5共用一个中断向量、被称为EXTI9_5EXTI15~EXTI10共用一个中断向量、被称为EXTI15_10EXTI:ExternalInterrupt/eventGPIO的EXTI连接PAx~PGx引脚连接到EXTIx同一个时刻EXTIx只能响应一个端口引脚x的中断事件EXTI寄存器寄存器缩写寄存器英文名称EXTI_IMRInterruptMaskRegisterEXTI_EMREventMaskRegisterEXTI_RTSRRisingTriggerSelectionRegisterEXTI_FTSRFallingTriggerSelectionRegisterEXTI_SWIERSoftwareInterrupt/EventRegisterEXTI_PRPendingrequestRegisterEXTI结构中断(Interrupt)与事件(Event)对于外部触发信号来说,没有区别在微控制器芯片内部,处理不同中断是某个事件发生向处理器发出中断请求,并跳转到中断服务程序中可以被更高优先权的中断屏蔽(禁止)事件是检测到某个事件发生可向其他模块发送触发信号对应模块决定如何响应(触发或不触发中断)事件不会被屏蔽,但可以屏蔽发送触发信号(这是事件屏蔽寄存器的作用)EXTI库函数函数名函数功能EXTI_InitEXTI初始化EXTI_DeInitEXTI解除初始化EXTI_StructInit填充EXTI初始化结构成员EXTI_GetITStatus获取中断状态EXTI_ClearITPendingBit中断挂起位清除EXTI_GetFlagStatus获取标志状态EXTI_ClearFlag挂起标志清除EXTI_GenerateSWIInterrupt产生软件中断外设的中断相关函数函数名函数功能PPP_ITConfig设置外设PPP某个(些)中断请求是允许或禁止PPP_GetITStatus获取外设PPP某个中断状态PPP_ClearITPendingBit清除外设PPP某个挂起的中断标志PPP_GetFlagStatus获取标志状态:检测某个外设标志是否置位PPP_ClearFlag挂起标志清除:清除某个外设的挂起标志6.3EXTI应用示例:按键中断【例6-1】根据按键状态控制LED灯亮灭2个按键KEY有按下来,产生中断请求KEY在目标板上的连接PA0和PC13分别连接2个KEY1和KEY2按钮按下时,GPIO引脚输入低电平(0)否则输入高电平(1)程序的功能是按下某个按钮KEYx对应LEDx亮一段时间,然后熄灭中断初始化配置复位后,所有中断都被禁止,并赋予优先级0使用任何中断,都需要设置中断,具体是:1.NVIC初始化配置配置优先级组为每个中断通道进行NVIC初始化2.外设初始化配置3.外设中断配置启动GPIO的复用功能(AFIO)时钟

为每个中断请求的GPIO引脚指明外部中断EXTI线为每个中断请求引脚进行EXTI初始化NVIC初始化配置首先,选择优先级组号(即0~4共5种形式)NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);其次,配置中断通道:PA0(KEY1)NVIC_InitTypeDefNVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn; //指明IRQ通道(EXTI0_IRQn)NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; //指明IRQ通道的组(抢占)优先级(0)NVIC_InitStructure.NVIC_IRQChannelSubPriority=0; //指明IRQ通道的子优先级(0)NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //允许IRQ通道中断(ENABLE)NVIC_Init(&NVIC_InitStructure);启动GPIO的复用功能(AFIO)时钟STM32的I/O引脚,不仅能够作为通用I/O端口GPIO还可以作为片上外设(如串口、ADC等)的I/O引脚这称为复用I/O端口AFIO大多数GPIO都有默认的复用功能部分GPIO还有重映射功能把原来是A引脚的默认复用功能,映射到B引脚使用当把GPIO用作EXTI外部中断或者使用重映象功能时必须在设置GPIO引脚之前启动AFIO时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);AFIO:Alternate-FunctionI/O选择作为EXTI中断的GPIO引脚 void

GPIO_EXTILineConfig(uint8_tGPIO_PortSource,uint8_tGPIO_PinSource)GPIO_PortSource选择作为EXTI线的GPIO端口

形如GPIO_PortSourceGPIOx(x是A~G)GPIO_PinSource指明配置的EXTI线(GPIO引脚) 形如GPIO_PinSourcex(x是0~15)选择PA0(KEY1)作为外部中断EXTI GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0)EXTI初始化配置调用stm32f10x_exti.c中的EXTI初始化配置

voidEXTI_Init(EXTI_InitTypeDef*EXTI_InitStruct)参数EXTI_InitStruct是指向EXTI_InitTypeDef结构的指针typedef

struct{uint32_tEXTI_Line; /*指明EXTI线*/

EXTIMode_TypeDef

EXTI_Mode; /*指明工作模式*/

EXTITrigger_TypeDef

EXTI_Trigger; /*指明有效边沿*/

FunctionalState

EXTI_LineCmd; /*ENABLE或DISABLE*/}EXTI_InitTypeDef;帮助文档示例:PA0引脚的EXTI初始化

EXTI_InitTypeDef

EXTI_InitStructure;EXTI_InitStructure.EXTI_Line=EXTI_Line0;//指明EXTI线(EXTI_Line0)

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//指明EXTI工作模式(EXTI_Mode_Interrupt)

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//

指明触发有效边沿(EXTI_Trigger_Falling)

EXTI_InitStructure.EXTI_LineCmd=ENABLE; //允许中断(ENABLE)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论