当前位置: 首页 > news >正文

嵌入式实验---实验二 中断功能实验

一、实验目的

1、掌握STM32F103中断程序设计流程;

2、熟悉STM32固件库的基本使用。

二、实验原理

1、在上一章的实验基础上,添加一个按键和一个LED;

2、使用中断的方式实现以下两个功能:

(1)KEY1按键按下,LED1点亮;

(2)KEY2按键按下,LED2点亮。

三、实验设备和器材

电脑、Keil uVision5软件、Proteus 8 Professional软件

四、实验内容和步骤

4.1 代码开发

按照书本中实验流程在Keil中完成中断实验的代码开发;

4.2 原理图设计

在Proteus中完成原理图的设计,如图2所示。

图2 中断实验原理图

五、实验记录和实验结果

5.1 实验效果记录(附照片即可)

5.2 实验效果说明

当KEY1、KEY2都是谈起状态,D1、D2也是熄灭状态;当KEY1按下时,D1被点亮,再按下KEY2时,D2也被点亮。

六、实验预习要求

  1. 实验前认真阅读本实验指导;
  2. 熟悉书本中相关操作及相关器件。
  3. 完成5.1和5.2内容。

七、思考题

1. 简述中断运行流程

  1. 中断发生:外部设备或系统的一个事件发生,例如按下按钮、定时器超时、接收到串口数据等。这些事件会引发中断请求(IRQ)。

  1. CPU响应:当中断发生时,CPU会暂停当前正在执行的指令,保存当前上下文(通常是将寄存器状态保存到堆栈中)。

  1. 中断服务程序(ISR)执行:CPU根据中断向量表(或中断服务程序表)确定哪个中断服务程序(ISR)应该执行,然后跳转到相应的ISR代码处执行。

  1. 中断服务程序执行:ISR是一段特殊的代码,用于处理特定的中断事件。它可能会执行一些预定的操作,例如清除中断标志、读取传感器数据、更新状态等。

  1. 中断结束:在ISR执行完毕后,通常需要恢复之前保存的CPU上下文(从堆栈中恢复寄存器状态)。

  1. 返回到主程序:执行完ISR后,CPU会返回到中断发生之前的程序位置继续执行。

2、中断功能的意义

  1. 提高系统响应速度:中断允许系统在等待某些事件发生时继续执行其他任务。这种事件驱动的响应机制可以显著提高系统的响应速度和效率。例如,当传感器检测到物理事件(如按钮按下、数据接收),中断能够立即通知CPU并处理相应的事件,而不需要CPU持续轮询检测。

  1. 支持多任务处理:在多任务操作系统中,中断使得系统可以快速响应各种事件,包括时间触发、通信完成等。通过合理的中断管理,系统可以有效地管理和调度多个任务,提高系统的并发性和效率。

  1. 节省系统资源:使用中断可以有效地节省系统资源,因为它避免了需要周期性轮询的常规检测方法。这对于资源受限的嵌入式系统尤为重要,因为它们通常需要尽可能高效地利用处理器和内存。

  1. 实现实时性:中断是实时系统中实现实时性的关键机制之一。通过响应硬件事件的方式,系统可以在严格的时间限制内完成必要的任务,例如控制和监视。

  1. 模块化和可维护性:中断使得系统的不同部分能够独立地响应和处理事件,从而提高了系统的模块化和可维护性。开发人员可以更容易地理解和调试系统的不同部分,使得代码更加清晰和可靠。

相关文章:

  • 【计算机网络】[第4章 网络层][自用]
  • vue3+ts 使用vue3-ace-editor实现Json编辑器
  • NV-Embed论文阅读笔记
  • 【OpenHarmony4.1 之 U-Boot 2024.07源码深度解析】008 - make distclean 命令解析
  • COUNT(id) 和 COUNT(1) 的区别
  • NLP入门——复杂函数建模与链式求导
  • 高速公路收费图片分析系统深入理解
  • HTML5和CSS3总结
  • Gone框架介绍29 - 在Gone中使用gRPC通信
  • 【MySQL】数据库
  • opencascade AIS_InteractiveContext源码学习1 object display management 对象显示管理
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • 每日一练 - OSPF邻接与邻居关系
  • SpringMVC 写个 HelloWorld
  • visual studio error MSB8008:
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • Create React App 使用
  • download使用浅析
  • Git初体验
  • Java,console输出实时的转向GUI textbox
  • Java基本数据类型之Number
  • leetcode388. Longest Absolute File Path
  • node 版本过低
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • storm drpc实例
  • 阿里研究院入选中国企业智库系统影响力榜
  • 记录一下第一次使用npm
  • 少走弯路,给Java 1~5 年程序员的建议
  • 深度学习中的信息论知识详解
  • 十年未变!安全,谁之责?(下)
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 算法系列——算法入门之递归分而治之思想的实现
  • 我从编程教室毕业
  • 异常机制详解
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • #APPINVENTOR学习记录
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (WSI分类)WSI分类文献小综述 2024
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • .NET 的程序集加载上下文
  • .Net 应用中使用dot trace进行性能诊断
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @在php中起什么作用?
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [<MySQL优化总结>]
  • [Android]使用Retrofit进行网络请求
  • [APUE]进程关系(下)
  • [BFS广搜]迷阵
  • [bzoj 3534][Sdoi2014] 重建