主页 文档 下载 莱特 沙龙 English

RTESM文档
RTEMS精彩应用
RTEMS版权说明
其他RTOS
ARM/DSP专区
AVR/FPGA/PCB
嵌入式文件系统
ARM AVR仿真器DIY
莱特电子工作室
联系我们
 


中断管理提供的系统调用

作者 Ray

RTEMS版权所有,转载请注明来源www.rtems.net,作者Ray

10.4: 中断管理提供的系统调用

INTERRUPT_CATCH- 建立 ISR

INTERRUPT_DISABLE- 屏蔽中断

INTERRUPT_ENABLE- 中断使能

INTERRUPT_FLASH- 暂时对中断等级进行设置

INTERRUPT_IS_IN_PROGRESS- 是否正在进行 ISR

下面将介绍这些指令

10.4.1: INTERRUPT_CATCH- 建立 ISR

函数原型 :

rtems_status_code rtems_interrupt_catch(
rtems_isr_entry new_isr_handler,
rtems_vector_number vector
rtems_isr_entry *old_isr_handler
);

返回值代表的状态:

RTEMS_SUCCESSFUL-ISR 成功建立 ISR

RTEMS_INVALID_NUMBER- 非法的中断向量

RTEMS_INVALID_ADDRESS- 非法的 ISR 入口地址或者是非法的 old_isr_handler

描述:

该函数为指定的中断向量建立中断服务例程 (ISR) 。 new_isr_handler参数叙述ISR的入口点。该中断向量以前的ISR在old_isr_handler中返回。

为了释放一个中断向量,需要的ISR旧地址old_isr_handler。

注意:

该函数不会导致抢占。

10.4.2: INTERRUPT_DISABLE- 屏蔽中断

函数原型 :

void rtems_interrupt_disable(
rtems_interrupt_level level
);

/* 该函数通过宏实现 */

描述 :

该函数屏蔽所有可屏蔽的中断。与该函数对应的是rtems_interrupt_enable函数。

注意:

该函数不会引起抢占调度

该函数通过汇编修改中断等级,可能会引起副作用

10.4.3: INTERRUPT_ENABLE- 允许中断

函数原型:

void rtems_interrupt_enable(
rtems_interrupt_level level
);

描述:

该函数恢复被rtems_interrupt_disable屏蔽的中断。该函数必须和rtems_interrupt_disable配对使用。

注意:

该函数不会引起抢占式调度。

10.4.4: INTERRUPT_FLASH- 中断刷新

函数原型:

void rtems_interrupt_flash(
rtems_interrupt_level level
);

描述:

该函数先开放rtems_interrupt_disable屏蔽的中断。函数结束的时候又返回以前屏蔽的状态。

注意:

该函数 不会引起抢占调度。

10.4.5: INTERRUPT_IS_IN_PROGRESS-是否正在执行ISR

函数原型:

rtems_boolean rtems_interrupt_is_in_progress(void );

描述:

如果处理器正在处理ISR,那么该函数返回TRUE,否则返回FALSE。如果处理器正在处理ISR,那么能够进行的系统调用就非常有限。

注意:

该函数不会引起抢占式调度。

 

 
嵌入式软硬件设计咨询 • 8位 16位 32位 64位 RISC DSP
主页文章 方案 产品 下载反馈
 
2004 RTEMS.NET 版权所有