ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
292140
feo_kos (16.12.2011 03:04, просмотров: 3976)
at91sam7 среда keil четвёртый Разбираюсь с timer counter. По совпадению с RC должно быть прерывание. Но в обработчик не заходит. Может что-то забыл? (никакого практического применения, просто должно моргать. дилей добавил чтобы наверняка заметить моргание) #include "AT91SAM7S256.h" #include "board.h" int b=1; AT91PS_TC pTC0 =AT91C_BASE_TC0; AT91PS_AIC pAIC =AT91C_BASE_AIC; AT91PS_PIO pPIO =AT91C_BASE_PIOA; AT91PS_PMC pPMC=AT91C_BASE_PMC; void delay(unsigned d) { for(;d;d--); } __irq void tc_irq_handler(void) { if(b) { pPIO->PIO_CODR=LED_MASK; } else pPIO->PIO_SODR=LED_MASK; b=~b; delay(100000); pTC0->TC_SR; AT91C_BASE_AIC->AIC_EOICR = 0; } void ConfigureTC (void) { AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_TC0); pAIC->AIC_IDCR = 1 << AT91C_ID_TC0; pAIC->AIC_SVR[AT91C_ID_TC0] = (unsigned int) tc_irq_handler; pAIC->AIC_SMR[AT91C_ID_TC0] = AT91C_AIC_PRIOR_LOWEST; pAIC->AIC_ICCR = 1 << AT91C_ID_TC0; pAIC->AIC_IECR = 1 << AT91C_ID_TC0; pTC0->TC_RC=0xFFFF; pTC0->TC_CMR=AT91C_TC_CLKS_TIMER_DIV1_CLOCK;//mck/2 pTC0->TC_IER=AT91C_TC_CPCS; pTC0->TC_CCR=AT91C_TC_CLKEN; pTC0->TC_CCR=AT91C_TC_SWTRG; } int main (void) { pPIO->PIO_OER=LED_MASK; pPIO->PIO_SODR=LED_MASK; ConfigureTC(); while (1); }