
ТЕкст (кстати стандартный) приведен ниже:
//ф-ия обработки прерывания
void timer1_c_irq_handler(void)
{
AT91PS_TC TC_pt = AT91C_BASE_TC1;
unsigned int dummy;
//* Acknowledge interrupt status
dummy = TC_pt->TC_SR;
//* Suppress warning variable "dummy" was set but never used
dummy = dummy;
count_timer0_interrupt++;
vParTestToggleLED( 2 );
}
void AT91F_TC_Open ( AT91PS_TC TC_pt, unsigned int Mode, unsigned int TimerId)
{
unsigned int dummy;
AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1<< TimerId ) ;
AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_TC1);
TC_pt->TC_CCR = AT91C_TC_CLKDIS ;
TC_pt->TC_IDR = 0xFFFFFFFF ;
dummy = TC_pt->TC_SR;
TC_pt->TC_CMR = Mode ;
TC_pt->TC_CCR = AT91C_TC_CLKEN ;
}
void timer_init ( void )
{
unsigned int oldHandler;
unsigned int mask ;
AT91S_AIC *pAIC = AT91C_BASE_AIC;
AT91S_TC *pTMR = AT91C_BASE_TC1;
//init the timer interrupt counter
count_timer0_interrupt=0;
count_timer1_interrupt=0;
//* Open timer1
AT91F_TC_Open(AT91C_BASE_TC1,TC_CLKS_MCK128,AT91C_ID_TC1);
//* Open Timer 1 interrupt
AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_TC1, TIMER1_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, timer1_c_irq_handler);
AT91C_BASE_TC1->TC_IER = AT91C_TC_CPCS; // IRQ enable CPC
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_TC1);
//* Start timer1
//AT91C_BASE_TC1->TC_CCR = AT91C_TC_SWTRG ;
}
P.S. Знаю, что подобные посты уже были, но хотелось бы ещё раз остановиться на данной проблеме! Спасибо заранее за ответы.