Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我必须在一次中断时禁用中断吗?_C_Interrupt_Pic_Microchip - Fatal编程技术网

C 我必须在一次中断时禁用中断吗?

C 我必须在一次中断时禁用中断吗?,c,interrupt,pic,microchip,C,Interrupt,Pic,Microchip,如果我在微芯片C18上使用多个中断,我是否必须在一个内部禁用高中断 考虑以下代码: #ifndef OTHER_INTERRUPT_H #pragma interrupt InterruptHook // interrupt fname void InterruptHook(void) { #ifdef STEPPER_H Stepper_Interrupt(); #endif #ifdef FLOW_H Flow_Interrupt()

如果我在微芯片C18上使用多个中断,我是否必须在一个内部禁用高中断

考虑以下代码:

#ifndef OTHER_INTERRUPT_H
#pragma interrupt InterruptHook // interrupt fname
void InterruptHook(void)
{
    #ifdef STEPPER_H
        Stepper_Interrupt();
    #endif

    #ifdef FLOW_H
        Flow_Interrupt();
    #endif
}
#endif
我应该遵循下面代码中的相同方法吗?(然后我会将禁用项放在函数中的适当位置。)


这取决于硬件。某些处理器在维护中断时自动禁用中断。其他人对中断进行优先级排序,以便在为较低优先级的中断提供服务时,仍然可以发生较高优先级的中断


该系列微控制器具有多个级别的硬件中断,并且可以选择优先顺序。

hm。。。。这是高中断内的代码,两个功能优先级相同。我还有一个pragma->#pragma LowInterruptHandler。。。。。。。。或者可能我搞错了,所以flow和stepper的优先级不同。
#ifndef OTHER_INTERRUPT_H
#pragma interrupt InterruptHook // interrupt fname
void InterruptHook(void)
{
    #ifdef STEPPER_H
        INTCONbits.GIEH = 0;
        Stepper_Interrupt();
        INTCONbits.GIEH = 1;
    #endif

    #ifdef FLOW_H
        INTCONbits.GIEH = 0;    
        Flow_Interrupt();
        INTCONbits.GIEH = 1;
    #endif
}
#endif