单片机外部中断应用实验

时间: 2023-08-20 08:08:38 浏览: 69
单片机外部中断是单片机的一个重要功能,它可以实现在某些特定的事件发生时,立即停止当前程序的运行,转而执行一个中断服务程序,处理完后再返回原程序。这样可以提高单片机的响应速度和处理效率,常用于实时控制、通讯等领域。 下面以STM32F103C8T6为例,介绍如何使用外部中断实现一个简单的应用。 实验目的: 通过按下按键触发外部中断,控制LED灯的亮灭。 实验器材: - STM32F103C8T6开发板一块 - 杜邦线若干 - LED灯一个 - 220欧姆电阻一个 - 按键一个 实验步骤: 1.连线 将开发板上的PB12引脚与按键的一端相连,另一端与GND相连;将开发板上的PC13引脚通过220欧姆电阻与LED正极相连,LED负极与GND相连。 2.编写程序 在Keil中新建一个工程,编写如下代码: ``` #include "stm32f10x.h" void EXTI15_10_IRQHandler(void) //中断服务程序 { if(EXTI_GetITStatus(EXTI_Line12) == SET) //判断是否是PB12引脚触发的中断 { GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_SET); //PC13引脚输出高电平,点亮LED EXTI_ClearITPendingBit(EXTI_Line12); //清除中断标志位 } } void init(void) //初始化函数 { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE); //使能GPIOB和GPIOC时钟 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //PB12引脚输入模式 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //PC13引脚输出模式 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //使能AFIO时钟 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource12); //将PB12引脚映射到外部中断线12 EXTI_InitTypeDef EXTI_InitStructure; EXTI_InitStructure.EXTI_Line = EXTI_Line12; //线12 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //中断模式 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发 EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; //外部中断15-10通道 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00; //抢占优先级为0 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00; //响应优先级为0 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } int main(void) { init(); while(1); } ``` 3.编译下载 编译程序,下载到开发板上。 4.按下按键 按下按键,LED灯会亮起来,松开按键,LED灯熄灭。 实验原理: 外部中断由外部事件触发,当事件发生时,单片机会立即停止当前程序执行,跳转到中断服务程序中执行,处理完毕后再返回原程序继续执行。本次实验中,按下按键会触发PB12引脚的下降沿,从而触发外部中断线12,进入中断服务程序,将PC13引脚输出高电平,点亮LED。松开按键后,PC13引脚输出低电平,LED熄灭。 总结: 本次实验介绍了如何在STM32F103C8T6单片机上使用外部中断实现一个简单的应用。通过这个实验,可以了解到外部中断的原理和应用,以及如何在Keil中编写程序。

相关推荐

最新推荐

recommend-type

二十一个单片机实验.doc

实验五 外部中断实验 7 实验六 定时器实验 9 实验七 计数器模拟外部中断实验 10 实验八 电子秒表实验 12 实验九 发光二极管亮度调节实验 14 实验十 行列式键盘实验 16 实验十一 串行口数据接收实验 18 实验十二 串行...
recommend-type

单片机应用技术考试试题

3、若规定外部中断1边沿触发方式,高优先级,写出初始化程序 4、请判断下列各条指令的书写格式是否有错,如有错请改正。 1)MUL R0R1 2)MOV A,@R7 3)MOV A,#3000H 4)MOVC @A+DPTR, A 5)LJMP 1000H 四、...
recommend-type

基于STC32单片机内部RTC的学习计时器+全部资料+详细文档(高分项目).zip

【资源说明】 基于STC32单片机内部RTC的学习计时器+全部资料+详细文档(高分项目).zip基于STC32单片机内部RTC的学习计时器+全部资料+详细文档(高分项目).zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

list根据id查询pid 然后依次获取到所有的子节点数据

可以使用递归的方式来实现根据id查询pid并获取所有子节点数据。具体实现可以参考以下代码: ``` def get_children_nodes(nodes, parent_id): children = [] for node in nodes: if node['pid'] == parent_id: node['children'] = get_children_nodes(nodes, node['id']) children.append(node) return children # 测试数
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

实现实时监控告警系统:Kafka与Grafana整合

![实现实时监控告警系统:Kafka与Grafana整合](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9BVldpY3ladXVDbEZpY1pLWmw2bUVaWXFUcEdLT1VDdkxRSmQxZXB5R1lxaWNlUjA2c0hFek5Qc3FyRktudFF1VDMxQVl3QTRXV2lhSWFRMEFRc0I1cW1ZOGcvNjQw?x-oss-process=image/format,png) # 1.1 Kafka集群架构 Kafka集群由多个称为代理的服务器组成,这