ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
3 июля
84138 Топик полностью
Сергей Борщ (22.03.2007 13:31, просмотров: 1) ответил SergeyD на ИМХО
Может, но 1) Вам надо запомнить содержимое VICIrqStatus чтобы потом разрешить их взад. 2) Если в момент пока прерывания будут так "запрещены" произойдет какое-то прерывание и его запрос успеет сняться (например прерывание EXT_INT), прерывание будет потеряно. 3) Если в какой-то процедуре в момент такого "запрещения" нужно будет включить какое-либо прерывание, чтобы оно начало выполняться когда прерывания разрешать, что получится? Поэтому вариантов два: 1) Работать не в User а в System mode и использовать ИАРовские функции __enable_interrupt() и __disable_interrupt(), которые запрещают и разрешают прерывания правильно - манипулируя битами I и F в регистре CPSR. 2) Если же вам очень нужно работать в User mode, то делайте так: Ints.c: <c>#include <inarm.h> #pragma swi_number=0x00 __swi void EnableInts() { __enable_interrupt(); } #pragma swi_number=0x01 __swi void DisableInts() { __disable_interrupt(); }</c> Файл main.c: <c>#pragma swi_number=0x00 extern __swi void EnableInts(); #pragma swi_number=0x01 extern __swi void DisableInts(); int main() { EnableInts(); ........ DisableInts(); }</c>