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

一、实验目的

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【git】gitee仓库本地克隆失败可能的一种解决办法

出错点: 在 gitee 克隆远程仓库到 本地时,可能会出现以下报错情况,无法成功克隆 正常流程:(熟悉正常克隆流程的可以直接跳到下面的【解决办法】) 我们一般复制仓库地址是在下面红线框框的位置&#xff0c…

华为云与AWS负载均衡服务深度对比:性能、成本与可用性

随着云计算的迅速发展,企业对于云服务提供商的选择变得越来越关键。在选择云服务提供商时,负载均衡服务是企业关注的重点之一。我们九河云将深入比较两大知名云服务提供商华为云和AWS的负载均衡服务,从性能、成本和可用性等方面进行对比。 AW…

知识库的创建(4) - KBServiceFactory:获取不同类型知识库服务的工厂类

文章目录 前言一、 方法详解1. get_service2. get_service_by_name3. get_default 二、 代码注释总结 前言 上一篇我们在update_docs里看到了 KBServiceFactory.get_service_by_name(knowledge_base_name),这一篇我们一起来看看KBServiceFactory类 KBServiceFactor…

Vue--》从零开始打造交互体验一流的电商平台(三)

今天开始使用 vue3 + ts 搭建一个电商项目平台,因为文章会将项目的每处代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的github上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关注本专栏,学习更多…

leetcode刷题(46-50)

算法是码农的基本功,也是各个大厂必考察的重点,让我们一起坚持写题吧。 遇事不决,可问春风,春风不语,即是本心。 我们在我们能力范围内,做好我们该做的事,然后相信一切都事最好的安排就可以啦…

【机器学习】 第1章 概述

一、概念 1.机器学习是一种通过先验信息来提升模型能力的方式。 即从数据中产生“模型”( model )的算法,然后对新的数据集进行预测。 2.数据集(Dataset):所有数据的集合称为数据集。 训练集:用来训练出一个适合模…

什么是无限铸币攻击?它是如何运作的?

一、无限铸币攻击解释 无限铸币攻击是指攻击者操纵合约代码不断铸造超出授权供应限制的新代币。 这种黑客行为在去中心化金融 (DeFi) 协议中最为常见。这种攻击通过创建无限数量的代币来损害加密货币或代币的完整性和价值。 例如,一名黑客利用了 Paid 网络的智能…

ansible 模块进阶及变量

yum 模块进阶 - name: install pkgs hosts: webservers tasks: - name: install web pkgs # 此任务通过yum安装三个包 yum: name: httpd,php,php-mysqlnd state: present # 根据功能等,可以将一系列软件放到一个组中,安装软件包组,将会把很…

shell脚本之数组及冒泡排序

1.数组定义:在集合当中指定多个元素,元素的类型可以是整数、字符串及浮点。 2.数组作用:一次性的定义多个元素,可以为变量赋值提供便利。 3.数组的定义方法: 数组名(a b c d) 数组名不能重复…

【速过】2024年9月三级数据库技术题库+知识点总结

24年3月已经考了一次数据库,实话,三级比二级简单一些,知识点都比较集中,50%-60%是题库里面的原题,考前只要好好的过一遍题库考到80以上完全没有问题,你实在不会答案背下来也是可以的,不过更多的…

kotlin函数

1、函数定义 // 下边定义了main函数 fun main() {} 2、函数的类型 // foo函数定义 fun foo () {} // 对应无参类型 () -> Unit fun foo (a: Int):String {} // 对应有参类型 (Int) -> String 3、函数的引用 函数的引用类似C语言中的函数指针,可用于函数传…

外包干了2年,彻底废了...

先说一下自己的情况。大专生,17年通过校招进入湖南某软件公司,干了接近2年的点点点,今年年上旬,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了五年的功能测试…

【docker安装rabbitmq】

docker安装rabbitmq 1.查阅rabbitmq的Dokcer Hub官方说明 rabbitmq地址,因为我们需要使用的是带管理界面的rabbitmq服务。所以我们需要下载的rabbitmq:management镜像 docker pull rabbitmq:management2.启动rabbitmq 2.1.快速启动 One of the important thing…

笔记本系统盘移植与windowsLinux双系统安装

目录 一、 前言二、 Windows系统移植二、 安装Linux三、 Windows分区配置 一、 前言 笔记本内存不够了,之前给笔记本添加了一个机械硬盘,也几乎爆满了,于是购置了1T的固态硬盘,打算用这个固态硬盘安装双系统,剩余空间…

[面试题]消息队列

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis[面试题]Nginx[面试题]缓存[面试题]Redis[面试题]消息队列 什么是…

喜讯!昂辉科技通过2024年度重点产业链企业(第一批)认定

日前,合肥市推进战略性新兴产业发展工作委员会办公室公布了 2024年度重点产业链企业(第一批)新入库名单(集成电路、新型显示、网络与信息安全、城市安全、空天信息、新能源汽车和智能网联汽车、生物医药、新材料、高端装备、节能环…

嵌入式学习——Linux高级编程复习(网络编程)——day42

1. 协议 通信双方约定的一套标准称为协议 2. OSI参考模型 OSI模型是由国际标准化组织(ISO)制定的一个概念性的网络通信模型,它将网络通信的功能分为七个层次,从下至上分别为: 物理层(Physical Layer&…

百度一下首页制作(HTML+CSS)

部分代码展示&#xff1a; <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>百度一下&#xff0c;你就知道</title><style type"text/css">/*清除元素默认性质*/body { margin: 0;padding: 0;list-…

前端传进来的单选值是0,到了后端加了个逗号

如上图所示&#xff0c;标记的var的值org和id的值orgOrNot不能一样&#xff0c;如果一样&#xff0c;通过id获取&#xff08;#(“#orgOrNot”).find(“option:selected”).val()&#xff09;时候就会出现这种情况 改成如下情况&#xff0c;区别开id

BC-Linux 8.6最小化安装的服务器启用GNOME图形化界面

本文记录了BC-Linux 8.6最小化安装的服务器如何启用GNOME图形化界面的过程。 一、服务器环境 1、系统版本 [rootlocalhost ~]# cat /etc/os-release NAME"BigCloud Enterprise Linux" VERSION"8.6 (Core)" ID"bclinux" ID_LIKE"rhel fe…