Я в данной области начинающий...
Помогите написать обработчик прерывания. Таймер запустил, а вот прерывание связать с таймером и нужной функцией никак. В мануале ниче не пойму. Вот что я уже накалякал:
#include <csl.h>
#include <stdio.h>
#include <csl_irq.h>
#include <csl_timer.h>
volatile Uint16 iff=0;
Uint16 eventId0;
int old_intm;
/* Reference to start of interrupt vectors */
extern void VECSTART(void);
TIMER_Handle Timer0;
//обработчик прерывания
interrupt void myIsr()
{
++iff;
}
IRQ_Config myConfig = {
myIsr, //обработчик
0x00000000,
IRQ_CCMASK_DEFAULT,
IRQ_IEMASK_DEFAULT
};
void ConfigureAllTimers(void);
void SetupInterrupts(void);
void main()
{
CSL_init();
IRQ_setVecs(&VECSTART);
/* Temporarily disable all maskable interrupts, preserving */
/* previous state of INTM */
old_intm = IRQ_globalDisable();
ConfigureAllTimers();
SetupInterrupts();
TIMER_start(Timer0);
while (!IRQ_test(IRQ_EVT_TINT0));
while(iff != 100) {
;
}
/* Consider TEST PASSED if 10 interrupts occur */
printf("\nTEST PASSED\n,%d",iff);
/* Restore old value of INTM */
IRQ_globalRestore(old_intm);
/* We are through with timer, so close it */
TIMER_close(Timer0);
}
void ConfigureAllTimers(void)
{
Timer0 = TIMER_open(TIMER_DEVANY, TIMER_OPEN_RESET);
/* Get Event Id associated with Timer 0, for use with */
/* CSL interrupt enable functions. */
eventId0 = TIMER_getEventId(Timer0);
/* Clear any pending Timer interrupts */
IRQ_clear(eventId0);
TIMER_configArgs(Timer0, 0x000002C0, 0x000000FF, 0x00000000);
} /* end ConfigureAllTimers() */
void SetupInterrupts(void)
{
IRQ_set(IRQ_EVT_TINT0);
IRQ_config (eventId0,&myConfig);
IRQ_enable(eventId0); /* Enable timer0 -> CPU interrupt */
IRQ_globalEnable(); /* Globally enable all interrupts */
/* Start Timer */
} /* end SetupInterrupts() */
Буду очень признательный за помощь, очень уж нужно