Доброго всем времени суток!
Суть проблемы такова: в IAR-e пытаюсь настроить таймер ST0(simple timer). Хочу чтобы от него срабатывало прерывание через период T. Насколько я понял из примеров, после срабатывания функции стартапа (из Cstartup_SAM7.с) нужно настроить GIC (Generic Interrupt Controller) и ST0 (Simple Timer 0).
Делаю это так (main.c):
#include "board.h"
CSP_GIC_T *const GIC = ((CSP_GIC_T*)GIC_BASE_ADDRESS); /* Generic Interrupt Controller*/
CSP_ST_T *const ST0 = ((CSP_ST_T*)ST0_BASE_ADDRESS); /* Simple Timer 1 */
int Count = 0;
__irq __arm void IRQ_Handler(void) {
Count++;
};
void Init_ST0(void) {
CSP_ST_SET_DCR( ST0, ST );
CSP_ST_SET_IDR( ST0, CHEND0|CHDISS0|CHLD0|CHEND1|CHDISS1|CHLD1 );
CSP_ST_SET_CR( ST0, CHDIS0|CHDIS1 );
CSP_ST_SET_CSR( ST0, CHEND0|CHDISS0|CHLD0|CHEND1|CHDISS1|CHLD1 );
CSP_ST_CHANNEL_SET_PR( ST0, 0, SELECTCLK_SYS|ST_PRESCALAR(0x0F)|ST_SYSCAL(0x00FF)|0x80 );
CSP_ST_CHANNEL_SET_CT( ST0, 0, 100 );
CSP_ST_SET_CR( ST0, SWRST|CHEND0 );
CSP_ST_SET_IDR( ST0, CHEND0 );
CSP_ST_SET_ECR( ST0, ST );
};
void Init_GIC(void) {
CSP_GIC_SET_IDCR( GIC, INT_22 );
CSP_GIC_SET_SVR( GIC, INT_22, (unsigned long)IRQ_Handler);
CSP_GIC_SET_SMR( GIC, INT_22, POSITIVE_EDGE_TRIGGERED | PRIOR_5 );
CSP_GIC_SET_ICCR( GIC, INT_22);
CSP_GIC_SET_IECR( GIC, INT_22);
CSP_GIC_SET_ISCR( GIC, INT_22);
};
int main()
{
Init_GIC();
Init_ST0();
while(Count < 100) {
};
return 0;
}
Подскажите пожалуйста!!!!!!!!!!! инфы не нашел по этому вопросу никакой!