版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目三中断系统设计任务1按键中断项目三中断系统设计任务1任务2任务3按键中断定时器中断PWM脉宽调制知识目标:1.知道STM32中断控制机制;2.知道NVIC中断优先级。技能目标:1.会进行NVIC中断优先级设置。2.会外部中断的编程方法;素养目标:1.操作规范,符合5S管理要求;2.具备自主探究、勤学好问的态度。学习目标设计要求利用STM32中断系统控制KEY0键,要求:第一次按下KEY0键,LED0灯点亮,第二次按下LED0键灯熄灭,依次进行,编写控制程序并进行系统调试。硬件设计硬件连接:
知识导航外设在作好进行一次数据输入输出准备后,产生一个信号给微处理器请求传输数据,这个信号叫中断请求。引起中断的原因,或者中断请求信号的来源称为中断源。微处理器若可以进行数据传输,则响应中断请求信号,停止当前正在执行的程序,而转向对该外设进行新的输入输出操作,称为中断响应。对外设进行新的输入输出操作所执行的程序称为中断服务程序。处理完中断服务程序后返回原来执行的程序继续执行,称为中断返回。知识导航
STM32中断系统CM3内核支持256个中断,其中包含16个内核中断和240个外部中断,并且具有256级的可编程中断设置。STM32没有使用CM3内核的全部东西,而只用了它的一部分。STM32有84个中断,包括16个内核中断和68个可屏蔽中断,具有16级可编程的中断优先级。STM32F103系列只有60个可屏蔽中断(107系列才有68个)。知识导航《STM32中文参考手册》知识导航注意:STM32的中断通道(中断线)可能会由多个中断源公用,这就意味着某一个中断服务函数也可能会被多个中断源所共用。知识导航几十个中断,怎么管理?知识导航
NVIC简介NVIC全称:嵌套向量中断控制器。
NVIC对中断进行统一的协调和控制,其最主要的工作就是控制中断通道开放与否,以及确定中断的优先级。优先级的数值越小,则优先级越高。知识导航STM32的中断优先级STM32内核有两个中断优先级,分别是抢占优先级(也称为主优先级)和响应优先级(也称为从优先级),每个中断源都需要被指定这两种中断优先级。具有高抢占优先级的中断,可以在具有低抢占优先级的中断处理过程中被响应,即中断嵌套。知识导航中断管理方法对STM32中断进行分组,组0~4。对每个中断设置一个抢占优先级和一个响应优先级值。分组配置是在寄存器SCB->AIRCR中配置。组AIRCR[10:8]IP[7:4]分配情况分配结果01110:40位抢占优先级,4位响应优先级11101:31位抢占优先级,3位响应优先级21012:22位抢占优先级,2位响应优先级31003:13位抢占优先级,1位响应优先级40114:04位抢占优先级,0位响应优先级知识导航抢占优先级&响应优先级区别高优先级的抢占优先级是可以打断正在进行的低抢占优先级的中断。抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断。抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行。如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行。知识导航举例假定设置中断优先级组为2,然后设置中断3(RTC中断)的抢占优先级为2,响应优先级为1;中断6(外部中断0)的抢占优先级为3,响应优先级为0;中断7(外部中断1)的抢占优先级为2,响应优先级为0。则这3个中断的优先级顺序为:中断7>中断3>中断6。知识导航特别说明
一般情况下,系统代码执行过程中,只设置一次中断优先级分组。知识导航中断优先级分组函数(misc.c)函数原型:voidNVIC_PriorityGroupConfig(u32NVIC_PriorityGroup)函数功能:设置优先级分组。参数:NVIC_PriorityGroup优先级分组位长度。voidNVIC_PriorityGroupConfig(uint32_tNVIC_PriorityGroup){assert_param(IS_NVIC_PRIORITY_GROUP(NVIC_PriorityGroup));SCB->AIRCR=AIRCR_VECTKEY_MASK|NVIC_PriorityGroup;}举例:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);知识导航NVIC_PriorityGroup值知识导航分组设置好之后,怎么设置单个中断的抢占优先级和响应优先级?知识导航中断设置相关寄存器(core_cm3.h)__IOuint8_tIP[240];//中断优先级控制的寄存器组__IOuint32_tISER[8];//中断使能寄存器组__IOuint32_tICER[8];//中断失能寄存器组__IOuint32_tISPR[8];//中断挂起寄存器组__IOuint32_tICPR[8];//中断解挂寄存器组__IOuint32_tIABR[8];//中断激活标志位寄存器组知识导航对于每个中断怎么设置优先级?中断优先级控制的寄存器组:IP[240]。240个8位寄存器,每个中断使用一个寄存器来确定优先级。STM32F10x系列一共60个可屏蔽中断,使用IP[59]~IP[0]。每个IP寄存器的高4位用来设置抢占和响应优先级(根据分组),低4位没有用到。voidNVIC_Init(NVIC_InitTypeDef*NVIC_InitStruct)知识导航函数NVIC_Init
函数原型:voidNVIC_Init(NVIC_InitTypeDef*NVIC_InitStruct)
函数功能:根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器。NVIC_InitStruct:指向结构NVIC_InitTypeDef的指针,包含了外设GPIO的配置信息。知识导航NVIC_InitTypeDef定义于文件“stm32f10x_nvic.h”typedefstruct{u8NVIC_IRQChannel;u8NVIC_IRQChannelPreemptionPriority;u8NVIC_IRQChannelSubPriority;FunctionalStateNVIC_IRQChannelCmd;}NVIC_InitTypeDef;知识导航NVIC_IRQChannel该参数用以使能或者失能指定的IRQ通道。NVIC_IRQChannel描述EXTI0_IRQn外部中断线0中断EXTI1_IRQn外部中断线1中断EXTI2_IRQn外部中断线2中断EXTI3_IRQn外部中断线3中断EXTI4_IRQn外部中断线4中断TIM2_IRQnTIM2全局中断TIM3_IRQnTIM3全局中断TIM4_IRQnTIM4全局中断知识导航NVIC_IRQChannelPreemptionPriority该参数设置了成员NVIC_IRQChannel中的抢占优先级。NVIC_IRQChannelSubPriority该参数设置了成员NVIC_IRQChannel中的响应优先级。知识导航中断使能寄存器组:ISER[8]
作用:用来使能中断。32位寄存器,每个位控制一个中断的使能。STM32F10x只有60个可屏蔽中断,所以只使用了其中的ISER[0]和ISER[1]。ISER[0]的bit0~bit31分别对应中断0~31;ISER[1]的bit0~27对应中断32~59。知识导航中断失能寄存器组:ICER[8]作用:用来失能中断。32位寄存器,每个位控制一个中断的失能。STM32F10x只有60个可屏蔽中断,所以只使用了其中的ICER[0]和ICER[1]。ICER[0]的bit0~bit31分别对应中断0~31;ICER[1]的bit0~27对应中断32~59。知识导航NVIC_IRQChannelCmd该参数指定了在成员NVIC_IRQChannel中定义的IRQ通道被使能还是失能。这个参数取值为ENABLE或者
DISABLE。知识导航中断参数初始化NVIC_InitTypeDefNVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitStructure.NVIC_IRQChannel=EXTI2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x0; NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x0;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure);知识导航
外部中断概述STM32每一个GPIO引脚都可以作为外部中断的中断输入口,也就是都能配置成一个外部中断触发源。STM32F103中断控制器支持19个外部中断(对于互联型产品是20个)事件请求。线0~15:对应外部IO口的输入中断。线16:连接到PVD(可编程电压监测器)输出。线17:连接到RTC闹钟事件。线18:连接到USB唤醒事件。每个外部中断线可以独立的配置触发方式(上升沿、下降沿或者双边沿触发)、使能/屏蔽。知识导航STM32根据GPIO端口的引脚序号不同,把不同GPIO端口、同一个序号的引脚组成一组,每组对应一个外部中断源(即中断线)EXTIx(x:0-15)。比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0为第一组,依此类推,我们就能将众多中断触发源分成16组。GPIO与外部中断的映射关系如图所示。知识导航函数GPIO_EXTILineConfig函数原型:voidGPIO_EXTILineConfig(u8GPIO_PortSource,u8GPIO_PinSource)函数功能:连接外部中断线到指定GPIO端口。参数1:指定的GPIO端口。参数2:待设置的外部中断线路。例如:GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);知识导航函数EXTI_Init函数原型:voidEXTI_Init(EXTI_InitTypeDef*EXTI_InitStruct)函数功能:根据EXTI_InitStruct中指定的参数初始化外部中断。参数:指向结构EXTI_InitTypeDef的指针,包含了外设EXTI的配置信息。知识导航EXTI_InitTypeDef结构体typedefstruct{uint32_tEXTI_Line;//指定要配置的中断线
EXTIMode_TypeDefEXTI_Mode;//模式:事件OR中断
EXTITrigger_TypeDefEXTI_Trigger;//触发方式
FunctionalStateEXTI_LineCmd;//使能或失能}EXTI_InitTypeDef;知识导航EXTI_Line:选择待使能或者失能的外部线路。知识导航EXTI_Mode:设置被使能线路的模式。知识导航EXTI_Trigger:设置被使能线路的触发方式。知识导航EXTI_LineCmd用来定义选中线路的状态。可被设为ENABLE或者DISABLE。知识导航实例EXTI_InitTypeDefEXTI_InitStructure;EXTI_InitStructure.EXTI_Line=EXTI_Line2; EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);知识导航中断服务函数完成中断初始化以及配置好中断优先级之后,接着编写中断服务函数。知识导航是不是16个中断线就可以分配16个中断服务函数呢?IO外部中断在中断向量表中只分配了7个中断向量,只能使用7个中断服务函数。外部中断线5~9分配一个中断向量,共用一个服务函数;外部中断线10~15分配一个中断向量,共用一个中断服务函数。知识导航中断服务函数EXTI0_IRQHandlerEXTI1_IRQHandlerEXTI2_IRQHandlerEXTI3_IRQHandlerEXTI4_IRQHandlerEXTI9_5_IRQHandlerEXTI15_10_IRQHandler知识导航常用的中断服务函数格式voidEXTI2_IRQHandler(void){if(EXTI_GetITStatus(EXTI_Line2)!=RESET)//判断某个线上的中断是否发生
{中断逻辑……EXTI_ClearITPendingBit(EXTI_Line2);//清除中断标志位} }知识导航函数EXTI_GetITStatus函数原型:ITStatusEXTI_GetITStatus(u32EXTI_Line)函数功能:用于判断中断是否发生。参数:所用的中断线。返回值:EXTI_Line的新状态(SET或者RESET)。知识导航
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度医疗器材购销协议版B版
- 2024借款展期合同协议书
- 2024年夫妻债务分割与豁免详细合同版B版
- 2024年广告公司业务承接协议条款版B版
- 2024年度企业食堂经营权转让合同3篇
- 2024年定制宣传品采购合同版
- 2024年度公司C区仓储用房租赁合同版B版
- 2024年大型物流仓储配送中心建设合同
- 2024年度保险合同(财产损失)2篇
- 2024年专业给水工程劳务分包协议规范版B版
- 大管轮试题附有答案
- 中国当代知名作家矛盾生平介绍
- 保密教育培训方案(3篇模板)
- 创新工作室考核制度
- 设备安全风险评估报告
- 戴医用外科口罩评分标准
- 肿瘤患者饮食指导
- 市政工程监理大纲(道路、绿化、管网、桥涵、换热站、污水泵站、河道改造)
- 教室设计方案说明书
- 舞蹈与健康智慧树知到期末考试答案2024年
- 直播营销教学教案-直播营销的复盘与提升教案
评论
0/150
提交评论