3Gorec 0 16 февраля, 2011 Опубликовано 16 февраля, 2011 · Жалоба Здравствуйте, не получается использовать прерывания по таймеру. Делаю вроде бы все как в гайде по CSL написано. Прерывания не возникают. int TIMER_init() { TIMER_Config timeconfig = { 0x00000200, /* ctl */ 0x00010000, /* prd */ 0x00000000 /* cnt */ }; TIMER_config(hTimer,&timeconfig); hTimer=TIMER_open(TIMER_DEVANY,TIMER_OPEN_RESET); if(hTimer!=INV) { TIMER_config(hTimer,&timeconfig); } return 0; } void testIsr(Uint32 funcArg, Uint32 eventId) { } void main(void) { Uint16 eventId=0; IRQ_Config irqconf={ testIsr, 0x00000000, IRQ_CCMASK_DEFAULT, IRQ_IEMASK_DEFAULT }; CSL_init(); TIMER_init(); eventId=TIMER_getEventId(hTimer); IRQ_config(eventId,&irqconf); IRQ_map(eventId, 15); IRQ_clear(eventId); IRQ_enable(eventId); IRQ_globalEnable(); TIMER_start(hTimer); while(1); TIMER_close(hTimer); return; } Что у меня неправильно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
3Gorec 0 18 февраля, 2011 Опубликовано 18 февраля, 2011 · Жалоба Решил проблему. Помогла мне в этом эта тема. Оказывается таблицу векторов прерываний надо прописывать руками. Зачем тогда в CSL при конфигурировании прерывания нужно указывать функцию-обработчик? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться