ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
131513 Топик полностью
Сергей Борщ (16.09.2008 14:11, просмотров: 123) ответил S_U на Помогите разобраться с программными прерываниями.
Примерно так: __arm __irq void SoftIntHandler(); __arm __irq void TimerIntHandler(); // инициализация: #define SOFT_INT VIC_SW VICVectAddr14 = (uint32_t)TimerIntHandler; VICVectCntl14 = (1<<5) | VIC_TIMER1; VICVectAddr15 = (uint32_t)SoftIntHandler; VICVectCntl15 = (1<<5) | SOFT_INT; VICIntEnable = (1UL<<SOFT_INT) | (1UL<<VIC_TIMER1); // генерация: VICSoftInt = (1<<SOFT_INT); // Селектор векторов обработчика: // одна команда в асмовом файле: VICVectAddr DEFINE 0xFFFFF030 CODE32 COMMON INTVEC:CODE:ROOT org 0x00000018 LDR PC, VICVectAdd ; branch to address provided by interrupt controller //собственно тела обработчиков: __arm __irq void SoftIntHandler() { // обработка VICVectAdd = 0; } __arm __irq void TimerIntHandler() { // обработка VICVectAdd = 0; }