首页 > 其他分享 >3、中断服务

3、中断服务

时间:2023-10-21 11:00:41浏览次数:28  
标签:服务 函数 中断向量 中断 处理程序 处理器

中断服务历程

中断处理是计算机系统中的一种重要机制,用于处理异步事件或请求,如硬件中断、软件异常等。中断处理的基本原理是通过一个中断向量表来确定中断源,并执行相应的中断处理程序。在操作系统层面,这通常是通过中断服务例程(ISR)来实现的。

基本原理如下:

  1. 中断源:计算机系统中的各个硬件组件(如外设、时钟、网络适配器等)都可以产生中断信号。当某个硬件组件需要 CPU 处理时,它会发出一个中断请求。

  2. 中断控制器:中断信号通常由中断控制器收集和管理。中断控制器是一个硬件组件,负责协调各个中断源,并向 CPU 发送中断请求。

  3. 中断向量表:操作系统维护了一个中断向量表,其中包含了一系列中断向量(或中断号),每个中断向量对应一个中断处理程序的地址。

  4. 中断处理程序:每个中断向量都关联一个中断处理程序,也称为中断服务例程 (ISR)。中断处理程序是一段特定的代码,它处理特定类型的中断。当中断请求被接受后,CPU会根据中断向量找到对应的中                      断处理程序,并执行它。

  5. 中断服务例程注册:操作系统或应用程序可以注册中断服务例程,告诉系统在特定类型的中断发生时应该执行哪个处理程序。

  6. 中断处理过程:当中断请求到达 CPU 时,CPU会检查中断向量,并执行与之相关联的中断处理程序。中断处理程序负责处理中断,可能会采取一些操作,然后恢复正常的执行。

  7. 中断完成:一旦中断处理程序执行完毕,系统会继续执行之前的任务。在处理硬件中断时,通常还需要向中断控制器发送中断完成信号,以允许中断控制器继续处理其他中断请求。

通过上述机制,系统可以根据中断向量表中的信息来确定应该执行哪个中断处理程序,而不需要在每个中断请求到来时手动指定执行的代码。这使得中断处理更加高效、可扩展和可维护。

 

 

为什么我们在isr.c中写一个函数,处理器就能自动找到与其对应的中断类型呢?

在 STM32 处理器中,中断服务函数 (Interrupt Service Routine, ISR) 是用来处理特定中断事件的函数。这些函数是用户定义的,用于响应不同类型的中断请求,如外部硬件中断、定时器中断等。当中断事件发生时,处理器会自动跳转到相应的中断服务函数来执行相应的操作。为了让处理器知道哪个中断与哪个函数相关联,需要进行以下配置:

  1. 中断向量表 (Interrupt Vector Table): 在嵌入式系统中,有一个中断向量表,它是一个存储着中断服务函数地址的表格。不同的中断号(或中断优先级)会映射到不同的表项。当一个中断事件发生时,处理器会查找中断号对应的中断向量表项,然后跳转到相应的中断服务函数地址开始执行。

  2. 中断优先级和中断控制器 (NVIC, Nested Vectored Interrupt Controller): STM32 处理器使用 NVIC 控制器来管理中断。在 NVIC 中,你可以配置中断的优先级,使得一些中断比其他中断更具优先级。这是为了确保在多个中断同时发生时,处理器能够正确响应最紧急的中断。中断服务函数的执行顺序是由中断优先级决定的。

  3. 中断服务函数的命名和关联: 为了关联一个中断服务函数和特定的中断号或优先级,需要按照一定的规则给中断服务函数命名。在 STM32 HAL 库中,这些规则通常是固定的,比如命名为 void EXTI0_IRQHandler(void) 的函数,其中 EXTI0 表示外部中断线 0 的中断服务函数。处理器会根据这些规则找到正确的中断服务函数。

综合上述,当你在 isr.c 中编写一个中断服务函数,并按照正确的命名规则,同时在中断向量表中配置好对应的中断号和中断优先级,处理器就会自动关联中断服务函数和中断事件。当中断事件发生时,处理器会自动跳转到正确的中断服务函数执行相应的操作。这种机制使得处理中断变得更加方便和高效,同时也提高了代码的可维护性。

 

我们不能随意定义isr.c中的函数名称

在很多嵌入式系统和操作系统中,中断向量表是一个包含中断处理程序入口地址的数据结构。这些入口地址通常指向中断服务子程序(ISR)或中断处理函数,这些函数通常是按照特定的命名规则定义的。

当特定中断发生时,系统会查找中断向量表,找到对应的入口,然后跳转到该入口,以执行相应的中断处理程序。

因此,确保 ISR 函数的名称与中断向量表中的入口名称相匹配是关键的,这样系统知道应该执行哪个处理程序来处理特定的中断。如果 ISR 函数的名称不匹配,系统将无法正确地关联中断源和处理程序,从而导致中断处理错误或无法正常工作。

从c语言角度来理解这种模式,及中断向量表中定义了一个label,而函数名本身其实是一个地址,我们将这个label作为函数名就可完成只编写一个函数,系统自动处理的操作。

 

标签:服务,函数,中断向量,中断,处理程序,处理器
From: https://www.cnblogs.com/zk6696/p/17778621.html

相关文章

  • laravel:部署到nginx服务器(10.27.0)
    一,相关文档:https://learnku.com/docs/laravel/10.x/deployment/14840二,配置nginx1,站点文件server{listen80;#listen[::]:80;server_namedig.lhdtest.com;root/webdata/site/dig/public;add_headerX-Frame-Options"SAMEORIGIN";a......
  • Windows Server服务器下的Linux子系统
    Windows、Linux看似死敌一对,但其实微软对于开源实业还是相当支持的,Windows10系统内就首次内置了一个Linux子系统(WindowsSubsystemforLinux/WSL),允许开发者模拟Linux环境,而且有需要的可以直接从Windows应用商店下载SUSE、Ubuntu。今天,微软又首次推出了用于WindowsSer......
  • 上传超大文件到云端服务器
    一直以来,通过互联网传送超大文件都是个麻烦事,传统的SSH/FTP工具只适合传输不太大的文件和目录,遇到上G的文件经常会出现传输错误,常用手段如百度云在Linux服务器上没法使用,一些专业传输软件需要在服务端安装开端口,而我们日常遇到的超大文件越来越多,linux的安装包要几个G,docker镜像要......
  • APP开发定制设计包年服务一般怎么收费?
    在移动应用开发行业,许多公司和开发者提供包年服务,以帮助客户维护、更新和改进其移动应用。这种模式对于客户来说具有吸引力,因为它可以提供持续的支持和服务。但是,app开发定制设计包年服务的收费方式可以因不同因素而异。下面将探讨一些常见的包年服务收费方式。固定年费:这是最简单......
  • 汽车零部件加工刀具,“数控刀具协同设计制造与服务关键技术研究及应用示范”召开工作会
    成都工具研究所有限公司的前身是成都工具研究所,于1956年创建于北京,是原机械工业部的直属研究所,是我国机械工业的综合性工具科研机构。公司官网:http://www.ctri.com.cn/公司主要从事精密切削工具、精密测量仪器以及表面改性处理技术的技术研究、产品开发和应用服务。2021年3月17日......
  • 安装使用服务
    internalclassProgram{staticstringconfigDir=Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),"WallpaperService");staticstringserviceFilePath=Path.Combine(Environment.GetFolderPat......
  • 游戏服务器性能压测实战分析
    今天遇到一个性能压测的问题,也是很多同学做游戏服务器开发经常会遇到的,今天记录一下分享给大家。 性能压测遇到的问题 服务器硬件情况: 8核16G服务器,  带宽1000M,redis假设在独立的内网云服务上,通过内网连接;性能压测:压测功能接口1: 查询当前服务器的时间戳,并返......
  • Win2012 搭建NTP 服务器
    1、regedit1、修改HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config中"AnnounceFlags"值为52、修改HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer中"Enabled"值为12、servi......
  • 千年服务器架设的细节
    千年服务器的架设主要有以下步骤1.服务器相关配置文件的修改DBSERVER:remoteip.txt主要写的是remote工具所在服务器的IP地址IPList.txt需要填写这组服务器的Game和Gate服务器的IP地址GAMESERVER:主要的配置文件是sv1000.ini,具体说明如下:[DB_SERVER]IPADDRESS=ipPORT=3051说明:记录......
  • 79基于java的在线家政预约服务系统设计与实现(配套lun文,可参考做bi设)
    本章节给大家带来一个基于java在线家政预约服务系统设计与实现,可适用于java家政服务系统,java预约家政系统,java在线家政系统,在线服务系统,社会家政系统,家政管理系统,家政服务平台,家政更加服务平台系统,家政管理系统等等;项目背景现代社会,由于经济不断发展,家政服务的数量也在不断的......