




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本章实验步骤及现象上一章已经学过?按下USER1按键时,开发板上LED2点亮了再次按下USER2按键后,LED2又熄灭硬件原理电路原理图当按键没被按下时,PC12引脚电平为高电平(3.3V)当按键按下后,PC12引脚电平为低电平(0V)#include
"stm32f10x.h"//标准外设库头文件
int
main(void)
{
GPIO_InitTypeDef
GPIO_InitStructure;
//定义GPIO结构体
/*********************
LED2配置*******************************/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Mode
=
GPIO_Mode_Out_PP;
//配置为输出模式
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed
=
GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure);
//调用库函数GPIO_Init()初始化GPIO
/**********************按键USER1配置******************************/
GPIO_InitStructure.GPIO_Mode
=
GPIO_Mode_IPU;//配置为上拉输入
GPIO_InitStructure.GPIO_Pin
=
GPIO_Pin_12;
GPIO_Init(GPIOC,
&GPIO_InitStructure);
/**********************按键USER2配置******************************/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,
ENABLE);
GPIO_InitStructure.GPIO_Mode
=
GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin
=
GPIO_Pin_9;
GPIO_Init(GPIOB,
&GPIO_InitStructure);
while(1)
{
if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_12)==0)//如果USER1按下,即判断PC12输入电平是否为低电平
{
GPIO_SetBits(GPIOC,GPIO_Pin_11);//PC11输出高电平,点亮LED2
}
else
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==0)//如果USER2按下,即判断PB11输入电平是否为低电平
{
GPIO_ResetBits(GPIOC,GPIO_Pin_11);
//PC11输出低电平,熄灭LED2
}
}
上一章实验复习在main函数中加入一个死循环,不停检测USER1按键状态,再根据这个状态切换LED2的亮灭。这种方法称之为“查询”方式。这一章学习更高效的方法:中断法1.中断基础知识2.实验步骤及现象3.实验原理第四章 中断中断:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。1.中断基础知识正常函数调用流程voidFun1(){ ……}voidFun2(){ ……}voidFun3(){ ……}voidmain(){ Fun1(); Fun2();}“Fun3”虽然定义了,但是并不会起任何作用中断响应流程注意:中断函数不需要别的程序主动调用,满足一定条件时自动执行中断产生时间不确定,不像普通函数调用那样发生在预定的时间。中断:当出现合适条件时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。使用中断的条件:允许的中断通道有中断发生定义好的中断服务函数一旦满足,自动执行STM32中断系统STM32单片机支持84个中断通道,包括16个内核中断和68个可屏蔽中断通道那么多中断,谁先谁后?日常生活中,我们会不停的接收到各种中断信号,比如前面提到的烧水壶水烧开的信号、手机闹铃、火灾警报等等不同信号优先级是不同的NVIC嵌套向量中断控制器管理中断通道的模块——嵌套向量中断控制器NVICNVIC作用:控制中断的抢占优先级和响应优先级抢占优先级:一个低抢占优先级的中断程序,暂停来响应这个新的高抢占式优先级的中断,即所谓的中断嵌套。比如上课可能会被电话中断,但接电话过程中突发火灾会停止电话,而抓紧逃生。抢先优先级响应优先级:也叫“亚优先级”或“副优先级”响应优先级高的中断不会打断正在执行的响应优先级低的中断,只是优先响应前者。比如开会发言,下属已经开始发言,出于尊重,领导听完下属发言后再发言。例如,当抢占优先级相同、响应优先级不同的两个中断同时到达时,则优先处理响应优先级高的中断,处理完之后,再处理响应优先级低的。抢占优先级要高于响应优先级,故响应优先级也称之为“副优先级”。响应优先级优先级举例中断抢占优先级响应优先级A00B10C11假设有三个中断A、B、C,它们各自的优先级如下(编号越小,优先级越高):若正在执行C的中断服务函数,则它能被抢占优先级更高的A打断,由于B和C的抢占优先级相同,所以C不能被B打断。如果B和C的中断是同时到达的,则会优先响应B的中断服务函数。NVIC优先级分组STM32中可以有5种配置方式来确定不同中断的优先级,即STM32单片机可以分为0-4种优先级分组优先级分组抢占优先级响应优先级NVIC_PriorityGroup_00级抢占优先级0-15级响应优先级NVIC_PriorityGroup_10-1级抢占优先级0-7级响应优先级NVIC_PriorityGroup_20-3级抢占优先级0-3级响应优先级NVIC_PriorityGroup_30-7级抢占优先级0-1级响应优先级NVIC_PriorityGroup_40-15级抢占优先级0级响应优先级2.实验步骤及现象按下USER1按键时,开发板上LED2点亮了再次按下USER2按键后,LED2又熄灭硬件原理STM32单片机支持19个外部中断/事件请求(称之为“中断线”)但STM32单片机所有引脚(超过19个),都可以作为外部中断解决办法:多个引脚共用一个中断线STM32F103支持的19个中断线包括:中断线0~15:对应外部IO的输入中断中断线16:连接到PVD输出中断线17:连接到RTC闹钟事件中断线18:连接到USB唤醒事件中断线19:连接到以太网唤醒事件硬件原理只有15个中断线,如何应对所有GPIO引脚?每个中断线对应着7个GPIO端口所有GPIO组别的第0号引脚都可以触发外部中断线EXTI0通过配置来决定那个GPIO组别硬件原理使用中断两个基本条件:单片机允许的中断通道有中断发生有定义好的中断服务函数外部中断线中断通道中断服务函数名称中断线0EXTI0EXTI0_IRQHandler中断线1EXTI1EXTI1_IRQHandler中断线2EXTI2EXTI2_IRQHandler中断线3EXTI3EXTI3_IRQHandler中断线4EXTI4EXTI4_IRQHandler中断线5-9EXTI9_5EXTI9_5_IRQHandler中断线10-15EXTI15_10EXTI15_10_IRQHandler中断通道和中断服务函数按键“USER1”使用引脚PC12,其对应的中断服务函数是哪个?软件原理配置部分定义三个结构体,GPIO_InitTypeDef已讲过,用于GPIO配置的另外两个结构体将在后续中断配置中使用到,稍后进行具体讲解软件原理配置部分9-24行对引脚PC11、PC12的配置第19行中逻辑“或”操作,其含义是同时开启C组GPIO时钟和AFIO复用时钟因为PC12引脚这里除了IO功能,它还作为外部中断使用,所以需要开启AFIO复用时钟。软件原理配置部分定义中断线映射,将中断线12的中断源选择为C组GPIO端口,即PC12GPIO与外部中断线映射关系软件原理配置部分EXTI_Line:中断线号,使用PC12,设为EXTI_Line12EXTI_Mode:EXTI_Mode_Interrupt或EXTI_Mode_Event,作为外部中断设为EXTI_Mode_InterruptEXTI_Trigger:触发模式,EXTI_Trigger_Falling或EXTI_Trigger_Rising;按键没有摁下时PC12电平为高电平,摁下是电平变为低电平,选择下降沿触发EXTI_Trigger_Falling。EXTI_LineCmd:是否激活使能,ENABLE(使能)或DISABLE(失能)。软件原理NVIC配置中断优先级优先级分组抢占优先级响应优先级NVIC_PriorityGroup_00级抢占优先级0-15级响应优先级NVIC_PriorityGroup_10-1级抢占优先级0-7级响应优先级NVIC_PriorityGroup_20-3级抢占优先级0-3级响应优先级NVIC_PriorityGroup_30-7级抢占优先级0-1级响应优先级NVIC_PriorityGroup_40-15级抢占优先级0级响应优先级软件原理NVIC配置中断优先级在设定了NVIC分组基础上,37-41行先填充了结构体NVIC_Initstructure的参数,再在42行通过NVIC_Init将该结构体的参数配置到单片机寄存器,从而真正生效NVIC_InitstructureNVIC_Initstructure成员变量NVIC_IRQChannel:配置中断通道;PC12根据前面表格,使用的中断通道应为EXTI15_10。部分NVIC_IRQChannel可选值NVIC_Initstructure成员变量NVIC_IRQChannelPreemptionPriority:抢占优先级成员变量NVIC_IRQChannelSubPriority:响应优先级NVIC_PriorityGroup_4分组:抢占优先级可以为0-15,响应优先级只能为0。都为设0表示目前使用的中断为最高优先级。本实验只使用了一个中断,即使将优先级定为更低的优先级也不影响使用。但是如果比较复杂的单片机应用中有多个中断,开发者必须仔细安排好不同中断的优先级。小结PC12的中断模式设置为下降沿触发,使引脚PC12作为外部中断程序选择了NVIC分组,将PC12对应的外部中断配置好了优先级,并使能了该中断配置完成后,一旦PC12由高电平转换为低电平,CPU将自动执行对应的中断服务函数死循环与上一章GPIO实验不同,此循环中没有任何程序语句。CPU单纯等待中断发生,一旦相应外部中断产生即开始自动调用中断服务函数。复杂些的工程中,可以在死循环中执行其他程序,而不用不停查询按键状态。中断服务函数经过相应配置,按下“USER1”按键时,系统即进入EXTI15_10_IRQHandler中断服务函数。中断服务函数中断服务函数EXTI15_10_IRQHandler是中断线10至中断线15共同的中断服务函数,使用EXTI_GetITStatus函数判断是否中断线12(PC12)发生了中断。函数返回值为SET表示相应中断线发生中断,否则返回值为RESET。第50行等同于:“if(EXTI_GetITS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年网络安全运维与IT外包服务协议
- 2025年二手车转让与车辆交付流程服务合同
- 二零二五版智能家居装修工程合同规范
- 2025版网络安全服务合同模板(企业级网络安全)
- 2025年度特色农产品直销买卖合同模板
- 金融量化投资策略研究:2025年市场风险预警与防控策略研究报告
- 小学教师新课标线上培训心得体会
- 2025年幼儿园教师专业培训心得体会
- 物流园区智能化改造2025年城市配送体系优化与末端配送效率提升研究
- 三年级英语下册寒假教学计划
- 龋齿护理健康教育
- 研学旅行指导师笔试试题及答案
- 人工智能技术合同
- 集团审计中心管理办法
- 2025年人教版八年级物理下学期期末复习:力、运动和力、压强、浮力(考点清单)学生版+解析
- 2025至2030中国矿用排水泵行业深度研究及发展前景投资评估分析
- 2025届北京市十一所学校物理高一下期末监测试题含解析
- 小学英语-三年级升四年级英语阅读理解专项(附答案)
- 2025年高考真题-政治(云南卷) 含答案
- 学堂在线 生活英语进阶 章节测试答案
- 2025年辅警面试考试练习题目及答案解析
评论
0/150
提交评论