Доброго всем времени суток!
Суть проблемы такова: в 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; }
Подскажите пожалуйста!!!!!!!!!!! инфы не нашел по этому вопросу никакой!
|