中断和时钟机制
中断跨时钟域同步处理

中断跨时钟域同步处理
中断跨时钟域同步处理是指在多个时钟域之间进行中断传递时
需要进行同步处理的一种方法。
在不同的时钟域中,时钟信号的频率可能不同,因此需要进行同步处理,以确保中断传递的正确性和可靠性。
中断跨时钟域同步处理的关键是确定中断来源和中断目标之间
的时钟域之间的关系。
一般情况下,中断来源和中断目标的时钟域可能不同,因此需要通过一些特殊的硬件或软件机制来进行同步处理。
在中断跨时钟域同步处理中,一般会使用一些特殊的寄存器来进行同步。
这些寄存器能够记录中断源和中断目标之间的时钟域信息,以及中断传递的状态信息。
当中断发生时,中断源会向一个中央控制器发送信号,该控制器会根据寄存器中的信息将中断传递到目标时钟域。
同时,中断目标会根据控制器的信号进行相应的处理。
总之,中断跨时钟域同步处理是确保中断传递正确性和可靠性的关键技术之一,它需要特殊的硬件和软件机制来实现。
- 1 -。
中断方式的名词解释

中断方式的名词解释中断方式是计算机操作系统中的一种重要机制,用于处理实时事件和优先级任务的调度。
它允许计算机在执行程序时,根据事件的紧急程度,临时中断当前任务并转而执行其他任务,然后再返回原来的任务继续执行。
本文将对中断方式进行详细解释。
一、中断方式的概念和原理中断方式是一种计算机操作系统提供的一项功能,可以在执行用户程序时,根据硬件或软件条件的变化,实现对当前任务的暂停和其他任务的执行。
它通过外部设备或软件代码向CPU发送中断信号,以引起CPU的注意并响应,然后根据中断的类型和优先级,执行相应的中断服务程序。
中断方式的原理是基于计算机系统中断控制器的工作机制。
当外部设备或软件代码需要CPU的处理时,它会向中断控制器发送中断请求信号。
中断控制器将中断请求转发给CPU,并根据中断请求的优先级,确定中断源和中断向量。
在接收到中断请求后,CPU会立即停止正在执行的任务,并保存当前任务的上下文(包括寄存器的状态、程序计数器等信息)。
接着,CPU根据中断向量,跳转到相应的中断服务程序中执行。
中断服务程序是预先编写好的,用于处理特定的中断类型,如时钟中断、键盘中断等。
执行完中断服务程序后,CPU会恢复原来的任务,并继续执行。
二、中断方式的分类根据中断请求的来源,中断方式可分为外部中断和内部中断。
外部中断是由外部设备引起的中断。
它包括硬件中断和输入输出中断。
硬件中断指的是外部设备(如时钟、键盘、鼠标等)工作时所产生的中断请求。
输入输出中断指的是当CPU执行输入输出指令时,外部设备未完成操作而导致的中断请求。
内部中断是由程序中的指令引起的中断。
它包括陷阱和软件中断。
陷阱是在程序执行过程中,根据特定的条件而产生的中断请求,如除法溢出、非法指令等。
软件中断是由软件代码主动产生的中断请求,例如系统调用、中断指令等。
三、中断方式的优势和应用中断方式具有以下优势和应用:1. 实时响应能力:中断方式可以迅速响应外部设备或软件的中断请求,及时处理实时性要求高的任务,如键盘输入、网络通信等。
定时器中断的工作原理

定时器中断的工作原理定时器中断是现代计算机中的一种重要机制,用于实现计算机系统中的时间管理。
它通过定期产生中断信号来通知 CPU,告诉它该执行哪些任务或者切换到哪个进程。
本文将详细介绍定时器中断的工作原理。
第一步:操作系统启动时,初始化时钟装置操作系统启动时,会初始化时钟装置。
这个时钟装置是一个硬件模块,它通过内置的振荡器控制计算机内部的一个计时器,并且产生硬件中断请求信号,使 CPU 执行相应的中断处理程序。
时钟装置产生的时钟信号的频率决定了计时器的计时精度,这通常是 CPU 内部时钟频率的一个固定值。
第二步:操作系统设定定时器计时器的初值操作系统将计时器的初值设定为一个固定的时间间隔,通常是几十毫秒、百毫秒或者一秒钟。
当计时器的值减到零时,就会产生一个时钟中断请求,通知操作系统有一段时间已经过去了,并要求操作系统重启计时器。
第三步:操作系统安装定时器中断处理程序当时钟中断请求到来时,CPU 将转入操作系统的中断处理程序。
在处理程序中,操作系统会完成一些必要的工作,比如更新系统时间、检查进程的状态并进行切换、检查定时任务等。
一旦中断处理程序执行完毕,程序的执行流程将返回到被打断的进程或者应用中。
第四步:应用程序执行与系统中断的交织在 CPU 执行正在运行的应用程序时,可能会发生中断请求。
如果系统正在执行应用程序,那么,在执行当前应用程序的一段时间内,系统会随时地接受中断请求并进行处理。
这种并发执行的模式称为交织执行(Time-sharing)。
操作系统不断地切换进程,让每个进程都有机会获取 CPU 的执行时间。
而定时器中断则是真正驱动交织执行过程的重要机制之一。
总之,定时器中断是计算机系统中的一种重要机制,它可以准确地测量时间、切换进程、进行系统调度等。
了解定时器中断的工作原理是理解计算机系统的关键之一,并能够更好地实现和优化系统。
ce中断条件

ce中断条件CE中断条件是指在计算机系统中,当某一特定条件发生时,中断处理器的执行流程,转而执行某一特定的中断处理程序。
CE中断条件可以根据不同的需求和应用场景设置,下面将介绍几种常见的CE中断条件。
一、除法错误中断(Divide Error)除法错误中断是指在执行除法操作时,发生了除数为0的情况。
在这种情况下,CPU会中断当前的执行流程,并跳转到事先定义好的中断处理程序中进行处理。
除法错误中断是一种非常常见的中断条件,在编程过程中需要注意避免除数为0的情况。
二、溢出中断(Overflow)溢出中断是指在执行数值运算时,结果超出了所能表示的范围。
例如,在进行整数运算时,结果超出了整数类型的表示范围。
溢出中断的发生会导致CPU执行中断处理程序,以处理这种计算结果无法表示的情况。
三、非法操作码中断(Illegal Opcode)非法操作码中断是指在执行指令时,遇到了CPU不支持的指令或者无效的指令。
这可能是由于程序错误、编译错误或者硬件故障引起的。
非法操作码中断会中断当前的执行流程,并跳转到中断处理程序中进行处理。
四、页错误中断(Page Fault)页错误中断是指在进行虚拟内存管理时,访问了未分配或者不存在的内存页。
当程序需要访问的数据或代码不在当前的内存页中时,会引发页错误中断,CPU会中断当前的执行流程,并跳转到中断处理程序中进行处理。
五、非法访问中断(Invalid Access)非法访问中断是指在程序中访问了不属于自己权限范围内的内存地址。
例如,一个进程试图访问其他进程的内存空间,或者试图访问操作系统的内核空间。
这种情况下,CPU会中断当前的执行流程,并跳转到中断处理程序中进行处理。
六、时钟中断(Timer Interrupt)时钟中断是指计算机系统中定时器到达预设值时触发的中断。
定时器通常用于控制系统的时间片轮转调度、时钟显示等功能。
时钟中断的发生会导致CPU中断当前的执行流程,并跳转到中断处理程序中进行处理。
单片机指令集的中断优先级与响应时间分析

单片机指令集的中断优先级与响应时间分析在单片机系统中,中断是一种重要的程序执行机制。
当系统出现某种特定的事件时,中断能够打断当前程序的执行,转而执行中断服务程序,而不影响原来的程序流程。
在处理中断时,中断优先级以及中断的响应时间是需要考虑的重要因素。
一、中断优先级的概念中断优先级是指在多个中断同时发生时,系统根据中断优先级的高低,决定先响应哪个中断。
在单片机中,中断优先级一般由硬件决定。
不同的单片机芯片,其中断优先级的实现方式可能有所不同。
一般来说,中断优先级是通过由高到低的方式来进行排序的,最高优先级的中断将会被优先处理。
中断的优先级设置对于系统的稳定性和性能有一定的影响。
优先级设置过低可能导致某些紧急中断无法及时得到响应,从而影响系统的正常工作;而优先级设置过高,则可能导致某些低优先级的中断无法得到及时响应,从而影响系统的灵活性。
二、中断响应时间的分析中断响应时间是指中断事件发生到中断服务程序开始执行的时间间隔。
在实际应用中,要保证系统在接收到中断请求后能够及时响应,以确保中断服务程序能够尽快地执行。
中断响应时间主要由以下几个方面的因素决定:1. 中断响应优先级:如果发生多个中断请求,系统将根据中断优先级的高低来决定响应顺序。
因此,正确设置中断优先级可以降低中断响应时间。
2. 中断向量和中断向量表:在单片机系统中,每个中断都有一个唯一的中断向量号,通过中断向量号可以定位到相应的中断服务程序。
为了方便管理和使用,单片机通常使用中断向量表来存储各个中断向量的地址。
在中断响应过程中,系统需要通过中断向量表来确定中断服务程序的地址,进而开始执行中断服务程序。
因此,中断向量的定义和中断向量表的设计也会对中断响应时间产生影响。
3. 中断屏蔽和中断使能:中断屏蔽是指在某些情况下禁止中断的发生,以防止出现不可预料的错误。
中断使能则是指在某些情况下允许中断的发生。
合理的中断屏蔽和中断使能机制可以确保系统在需要中断响应时能够及时地进行。
中断可以分为哪些类型?

中断可以分为哪些类型?中断是计算机系统中的一种重要的事件驱动机制,用于在运行过程中暂时停止正在执行的程序,转而去执行其他的任务,从而提高计算机系统的效率和更好地响应外部事件。
中断按照不同的划分标准,可以分为以下几个类型:1. 硬件中断硬件中断是由计算机硬件产生的信号,用于处理与外部设备的交互。
例如,当键盘有输入时,计算机系统会产生一个中断信号,通知操作系统中断当前的执行,去处理键盘输入的数据。
硬件中断可以进一步划分为外部中断和内部中断。
外部中断是由外部设备引起的,例如,键盘输入、鼠标点击等;内部中断是由处理器内部的异常或错误引起的,例如,零除错误、非法指令等。
2. 软件中断软件中断是由程序主动触发的中断。
程序可以通过软件中断指令,请求操作系统停止当前的执行,并转而执行某个指定的中断服务程序。
软件中断有时也被称为系统调用。
常见的软件中断包括文件操作、进程管理、内存管理等。
3. 异常中断异常中断是由于程序执行过程中的异常情况而引发的。
例如,当程序发生除零操作时,计算机系统会产生一个异常中断,中断当前的执行流程,去处理这个异常。
异常中断帮助计算机系统保持了良好的稳定性和安全性。
4. 时钟中断时钟中断是计算机系统中最基本的中断类型。
计算机时钟会以一定的频率产生时钟中断信号,用于定时中断当前的执行流程,去处理一些需要定时执行的任务,例如,刷新显示屏、调度进程等。
中断是计算机系统中的重要机制,能够提高系统的效率和响应能力,有效地处理外部事件和内部异常。
了解不同类型的中断有助于我们更好地理解和使用计算机系统,提高工作效率。
希望本文对您有所帮助!。
定时器中断的应用原理总结
定时器中断的应用原理总结什么是定时器中断定时器是一种用来测量和控制时间间隔的设备。
定时器中断是指当定时器计时到达预设时间时,系统会触发一个中断请求,从而使程序执行特定的中断处理函数。
在嵌入式系统中,定时器中断被广泛应用于各种场景,例如任务调度、实时数值采集、通信协议处理等。
定时器中断的工作原理时钟源选择在使用定时器中断之前,需要首先选择一个适合的时钟源。
嵌入式系统中通常使用系统时钟或者外部晶体振荡器作为时钟源。
预设定时器计数初值定时器中断的触发是基于定时器计数器的计数值。
在使用定时器中断之前,需要预设定时器计数初值,即定时器计数器从哪个值开始计数。
预设定时器中断时间定时器中断的触发时间通过预设定时器中断时间来确定。
根据嵌入式系统的需求,可将定时器中断设置为周期性触发,或者仅触发一次。
中断服务函数当定时器中断被触发时,系统会自动进入中断服务函数处理中断。
中断服务函数是一段特殊的代码,用来响应中断请求,执行特定的任务或操作。
中断优先级设置在嵌入式系统中,经常会同时使用多个定时器中断。
为了避免不同中断之间的冲突,需要设置中断的优先级。
一般情况下,越重要的中断优先级越高。
定时器中断的应用场景嵌入式操作系统中的任务调度在嵌入式操作系统中,任务调度是实现多个任务协同运行的重要机制之一。
定时器中断可用于触发任务调度,当定时器计数到达预设时间时,引发任务切换,切换到下一个任务的执行。
实时数值采集在实时数值采集场景中,需要按照一定的频率对传感器进行采样。
定时器中断可用于定时触发采样操作,确保采样频率的准确性和稳定性。
通信协议处理通信协议处理是嵌入式系统中的一项重要任务。
定时器中断可用于定时检测接收到的数据,并触发相应的处理函数,实现通信协议的解析和执行。
时钟显示定时器中断可用于实现时钟显示功能,定时触发更新显示的时分秒。
定时器中断的优势和注意事项优势•精确控制时间间隔:定时器中断可实现精确的时间控制,适用于对时间精度要求较高的场景。
定时器中断的工作原理
定时器中断的工作原理
定时器中断是一种常见的硬件中断机制,它可以在预设的时间间隔内自动触发中断,以便执行相应的中断服务程序。
其工作原理主要涉及以下几个方面:
1. 定时器的初始化:在使用定时器中断之前,需要先对定时器进行初始化设置。
通常需要配置定时器的时钟源、计数方式、计数周期等参数,以满足具体应用需求。
2. 定时器的计数:一旦定时器被初始化,它会开始按照预设的计数方式和周期进行计数。
通常情况下,定时器的计数值会不断递增,直到达到预设的上限值。
3. 中断触发:当定时器计数值达到预设的上限值时,就会自动触发中断。
此时,CPU会暂停当前的程序执行,转而跳转到预设的中断服务程序中执行相关的操作。
4. 中断服务程序:中断服务程序通常是针对特定中断类型编写的处理程序,用于处理中断事件并进行相应的操作。
在定时器中断中,中断服务程序通常会进行一些周期性的任务,例如更新系统时间、检查状态等。
5. 中断处理完成:当中断服务程序执行完毕后,CPU会返回到原先被中断的程序中继续执行。
此时,定时器又开始重新计数,直到下一次中断触发。
总之,定时器中断是一种非常有用的硬件中断机制,它可以帮助我们实现各种周期性的任务和操作。
理解定时器中断的工作原理对于
嵌入式系统和实时系统开发都非常重要。
1系统中断与时钟节拍
1 系统中断与时钟节拍1.1 系统中断中断是种硬件机制用于通知CPU有个异步事件发生了中断旦被系统识别CPU则保存部分(或全部)现场(context)即部分(或全部)寄存器值跳转到专门子称为中断服务子(ISR)中断服务子做事件处理处理完成后执行任务调度回到就绪态优先级最高任务开始运行(对于可剥夺型内核)中断使得CPU可以在事件发生时才予以处理而不必让微处理器连续不断地查询(polling)是否有事件发生通过两条特殊指令:关中断(disable errupt)和开中断(enable errupt)可以让微处理器不响应或响应中断在实时环境中关中断时间应尽量短关中断影响中断响应时间关中断时间太长可能会引起中断丢失中断服务处理时间应该尽可能短中断服务所做事情应该尽可能少应把大部分工作留给任务去做1.2 系统时钟节拍时钟节拍是特定周期性中断(时钟中断)这个中断可以看作是系统心脏脉动操作系统通过时钟中断来确定时间间隔实现时间延时及确定任务超时中断之间时间间隔取决于不同应用般在10~200 ms之间时钟节拍式中断使得内核可以将任务延时若干个整数时钟节拍以及当任务等待事件发生时提供等待超时依据时钟节拍频率越快系统额外开销就越大系统定义了32位无符号整数OSTime来记录系统启动后时钟滴答数目用户必须在多任务系统启动以后再开启时钟节拍器也就是在OSStart之后μC/OSII中时钟节拍服务是通过在中断服务子中OSTimeTick实现时钟节拍中断服务子示意代码如下:void OSTickISR(void) {保存处理器寄存器值;OSIntEnter 或是将OSIntNesting加1;OSTimeTick ;OSIntExit ;恢复处理器寄存器值;执行中断返回指令;}2 时钟管理系统2.1 μC/OSII时钟管理系统μC/OSII原有时钟管理系统类似于Linux但是比Linux简单得多它仅向用户提供个周期性信号OSTime时钟频率可以设置在10~100 Hz时钟硬件周期性地向CPU发出时钟中断系统周期性响应时钟中断每次时钟中断到来时中断处理更新个全局变量OSTimeμC/OSII时钟中断服务核心是OSTimeTick OSTimeTick 用来判断延时任务是否延时结束从而将其置于就绪态其伪代码如下:void OSTimeTick(void) {OSTimeTickHook;// 用户定义时钟节拍外连while { (除空闲任务外所有任务)OS_ENTER_CRITICAL;//关中断对所有任务延时时间递减;扫描时间到期任务并且唤醒该任务;OS_EXIT_CRITICAL;//开中断指针指向下个任务;}OSTime;//累计从开机以来时间}在μC/OSII时钟节拍中需要执行用户定义时钟节拍外连OSTimeTickHook 以及对任务链表进行扫描并且递减任务延时这样就造成了时钟节拍OSTimeTick 有两点不足:①在时钟中断中处理额外任务OSTimeIickHook 这样增加了中断处理负担影响了定时服务准确性;②在关中断情况下扫描任务链表任务越多所需要时间越长而长时间关中断对中断响应有不利影响是中断处理应当避免2.2 改进时钟管理系统针对上述OSTimeTick 不足之处需加以改进来优化时钟节拍在Linux中般对中断响应分为两部分:立即中断服务和底半中断处理(bottom half)立即中断服务仅仅做重要并且能快速完成工作而把不太重要需要较长时间完成工作放在底半处理部分来完成这样就可以提高中断响应速度μC/OSII不支持底半处理为了减轻时钟中断处理工作量来提高μC/OSII时钟精确度可以将部分在每次时钟中断需处理工作内容放在任务级来完成这样就可以减少每次时钟中断处理CPU消耗从而提高中断响应速度和μC/OSII时钟精确度为此定义任务OSTimeTask 由它来处理原来在OSTimeTick中需要处理操作μC/OSII采用基于优先级抢占式调度策略而每次时钟中断处理结束后需要首先调度该任务执行因此让任务OSTimeTask具有系统内最高优先级由它执行用户定义时钟节拍外连OSTimeTickHook 以及对所有任务延时时间进行递减并把到期任务链入到链表OSTCBRList中OSTCBRList管理所有到期任务OSTimeTask伪代码如下:void OSTimeTask {OSTimeTickHook//用户定义时间处理while { (除空闲任务外所有任务)对所有任务延时时间进行递减;把所有要到期任务链入到OSTCBRList链表中;} 任务状态改为睡眠OSSched 进行任务调度;}在任务OSTimeTask中执行原来在时钟中断处理用户OSTimeIickHook 并实现将延时到期任务链入到OSTCBRList链表中这样在时钟中断中就只需要扫描任务到期链表而不需要扫描整个链表减少了关中断时间,OSTCBRList为新建链表它管理所有到期任务,同时需要减少OSTimeTick 执行工作量只对OSTCBRList链表扫描这样也减少了关中断时间OSTimeTick 伪代码如下:void OSTimeTick(void) {OSTime;OS_TCB* ptcb=OSTCBList;// OSTCBRList指向所有到期任务链表while(ptchb!=null){关中断;唤醒任务;开中断;指针指向下个任务;}}。
第三章 系统时钟与中断
高速和低速外设时钟控制。 CPU主频
看门狗单元
看门狗单元,又称为看门狗定时器 WatchDog Timer(WDT),其本质是一 个定时器电路;
若使能看门狗单元,则在系统运行时,看 门狗定时器自动计数;如果不能定时清除 看门狗计数器(俗称“喂狗”,或“踢 狗”Kick Dog),那么看门狗定时器就会 溢出从而引起看门狗中断,强行系统复位。
当TRB位被软件置1时,也会重装。可以通过寄存 器检查PSCH:PSC的值,但不能直接设置。
CPU定时器的寄存器
CPU定时器预分频计数器(TIMERxTPR)
PSCH:PSC的值只能通过TDDRH:TDDR获得。 复位时,计数器清零。
TDDRH:TDDR是定时器分频器,每过 ( TDDRH:TDDR +1)个时钟周期,定时 器计数器寄存器减1。复位时被清除。
高速外设EVA/B 12位ADC
功耗模式 控制
16路ADC输入
‘28x
DSP 芯片 内部 的时 钟和 复位 电路
外设复位
C28X 中央处理器
看门狗模块:
用于监控程序的
运行状态,是提 系统控制
时钟使能
寄存器
高系统可外设靠性的
重要环节寄存器
外设 寄存器
低速外设 SCIA/B, SPI, McBSP
外设总线
用于看门狗计数器寄存器清零,以便在系统正常状态下 防止看门狗计数器溢出产生系统复位中断 。 对8位WDKEY写入0x55之后紧跟着再写入0xAA,将清 除WDCNTR位。写入任何其他值则会立即产生看门狗 复位。
看门狗控制寄存器(WDCR)
WDCR用于控制看门狗模块的状态和使能情况,并可以 设置看门狗计数器的时钟频率。 WDFLAG:看门狗复位状态标志位。1表示看门狗复位 引起了系统复位;0表示是上电或者外部器件引起系统 复位; WDDIS:看门狗禁止位 ,1禁止看门狗模块 ; WDCHK:看门狗逻辑校验位 ,必须向WDCHK位写 入101 ,否则会引起系统复位; WDPS :看门狗预分频设置位 ,配置看门狗计数器时 钟WDCLK频率与OSCCLK/512的倍率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OSPrioHighRdy = (INT8U)((OSIntExitY <<
3)+OSUnMapTbl[OSRdyTbl[OSIntExitY]]);
if (OSPrioHighRdy != OSPrioCur)
{ OSTCBHighRdy = OSTCBPrioTbl[OSPrioHighRdy];
---精品---
void OSIntEnter (void) {
if (OSRunning == TRUE) { if (OSIntNesting < 255)
{ OSIntNesting++; //中断嵌套层数计数器加1 } } }
---精品---
---精品---
void OSIntExit (void)
}
---精品---
OSTimeTick ()函数
μC/OS-II时钟中断服务程序的核心是调用OSTimeTick ()
函数。OSTimeTick ()函数用来判断延时任务是否延时结
束从而将其置于就绪态。其程序伪代码如下:
void OSTimeTick(void) {
OSTimeTickHook();/* 调用用户定义的时钟节拍外连
OSCtxSwCtr++;
OSIntCtxSw( );
}
}
OS_EXIT_CRITICAL( );
函数*/
while {
/*(除空闲任务外的所有任务)*/
OS_ENTER_CRITICAL();
/*关中断*/
对所有任务的延时时间递减;
扫描时间到期的任务,并且唤醒该任务;
OS_EXIT_CRITICAL();
/*开中断*/
指针指向下一个*/
}
---精品---
有新高级任务则 运行高级任务
中断的响应过程
---精品---
本章分为内核中断管理及其结构,系统时钟实现 方法,时间管理模块的基本结构与功能,基本服 务与接口函数,及其设计与调用方法,相关应用 实例程序分析等。
将µC/OS-II内核时间模块与中断与时钟管理功能 进行组合的原因在于,两个模块的功能和性能是 密切相关的,中断管理是时间管理的基础。
---精品---
系统中断
中断就是内核控制的任务在运行过程中,应内 部或外部异步事件的请求,中止当前任务的运 行,转去处理异步事件所要求的任务或处理的 过程。中断服务程序(Interrupt Service Routine)就是应中断请求而运行的子程序。 简称为ISR。中断向量指中断服务子程序ISR 的入口地址,即起始地址。
2. 硬 件 定 时 器 以 时 钟 节 拍 为 周 期 定 时 地 产 生中断,该中断的中断服务程序叫做 OSTickISR( )。中断服务程序通过调用函 数OSTimeTick( )来完成系统在每个时钟 节拍时需要做的工作。
---精品---
时钟节拍中断服务子程序
void OSTickISR(void) { 保存处理器寄存器的值; 调用OSIntEnter ()或是将OSIntNesting加1; 调用OSTimeTick (); 调用OSIntExit (); 恢复处理器寄存器的值; 执行中断返回指令;
第八章 μC/OS-Ⅱ的中断和时钟
---精品---
本章主要内容:
---精品---
μC/OS-II系统响应中断的过程
系统接收到中断请求后,如果中断未关闭, 系统就会中止正在运行的当前任务,按照中断向 量转而去运行ISR。
当ISR运行结束,系统将会返回到被中止的任 务继续或者转向另一个具有更高优先级别的就绪 任务。
时钟的节拍式中断使得内核可以将任务延时若干个整 数时钟节拍,以及当任务等待事件发生时提供等待超 时的依据。时钟节拍频率越快,系统额外开销越大。
系统定义了32位无符号整数OSTime来记录系统启动 后时钟节拍数。用户程序必须在多任务系统启动以后 开启时钟节拍计时,在应用程序中调用系统函数 OSStart()之后。
---精品---
uC/OS-II内核中CPU能够响应中断的条件, 可以理解为以下两个部分:一是至少有一个 中断源向CPU发出中断信号,二是内核及应 用系统允许中断,即未屏蔽中断信号。
μC/OS-II内核中的时钟中断技术分为系统中 断与系统时钟节拍两个部分组成。
---精品---
系统时钟节拍
时钟节拍是特定的周期性中断,也称时钟中断,这个 中断可以看作是系统心脏的脉动。操作系统通过时钟 中断来确定时间间隔,实现时间的延时及确定任务超 时。中断之间的时间间隔取决于不同的应用,一般在 10~200 ms之间。
---精品---
转到中断向量
任 务 响 应 时 间中
断 恢 复
保存CPU寄存器
通知内核进入 ISR
通知内核退出 ISR
恢复CPU寄存器
中断返回
中断请求 关闭中断
ISR给任务发信号 通知内核退出 ISR
恢复CPU寄存器
中断返回
中 断 响 应
任 务 响 应 时 中间 断 恢 复
无新高级任务则 返回原任务
uC/OS-II内核对于以上中断响应及中断处理过 程,使用以下若干系统函数实现中断与内核之 间的控制管理和联系,这些函数分别是:
中断的进入函数OSIntEnter() 中断的退出函数OSIntExit() 中断服务子程序ISR 中断级任务切换函数ISR的任务切换函数
OSIntCtxSw( )
μC/OS-II中的时钟节拍服务通过在时钟节拍中断服务 子程序中调用OSTimeTick()实现。
---精品---
1. μC/OS-II与大多数计算机系统一样,用硬 件定时器产生一个周期为ms级的周期性 中断来实现系统时钟,最小的时钟单位 就是两次中断之间相间隔的时间,这个 最 小 时 钟 单 位 叫 做 时 钟 节 拍 ( Time Tick)。
{
if (OSRunning == TRUE)
{OS_ENTER_CRITICAL( );
if (OSIntNesting > 0)
{OSIntNesting--;
//中断嵌套层数计数器减1
}
if ((OSIntNesting == 0) && (OSLockNesting == 0))
{
OSIntExitY = OSUnMapTbl[OSRdyGrp];