c – 我必须在一个中禁用中断吗?
发布时间:2020-12-16 07:28:26 所属栏目:百科 来源:网络整理
导读:如果我在Microchip C18上使用多个中断,是否必须在内部禁用高中断? 请考虑以下代码: #ifndef OTHER_INTERRUPT_H#pragma interrupt InterruptHook // interrupt fnamevoid InterruptHook(void){ #ifdef STEPPER_H Stepper_Interrupt(); #endif #ifdef FLOW_H
如果我在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(); #endif } #endif 我应该采用与下面代码相同的方法吗? (然后我会将禁用放在函数内的适当位置.) #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 解决方法
这取决于硬件.某些处理器在维护中断时自动禁用中断.其他人优先考虑他们的中断,以便在更低的服务时仍然可以发生更高优先级的中断.
Microchip PIC18系列微控制器具有多级硬件中断,也可以选择优先级. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |