Ivan S (05.12.2005 12:33, просмотров: 5870)
Люди помогите пожалуйста таймер запустить на LPC2214 Светодиод не моргает по таймеру. Проверял на выходе светодиода ни какой реакции. Изменение тока на другом входе (то что в основной части выполняется) проходит нормально.
Текст моей программы:
#include
#include "LPC2214.h"
__arm void Init_VPBDIV_4(void);
__arm void pll_Init(void);
__arm void mam_Init(void);
__arm void gpio_Init(void);
__arm void vic_Init(void);//Инициализация прерываний
__arm void tmr_Init(void);//Инициализация таймера
__arm static void isr_Timer0(void);//Исполняемая процедура
static unsigned int ss;
// static unsigned int kk;
int main()
{
GPIO_IOCLR |= 0x40000000;
__disable_interrupt();
mam_Init();
Init_VPBDIV_4();
pll_Init();
gpio_Init();
tmr_Init();
vic_Init();
ss=4;
while (ss)
{
ss++;
if (ss>200000)
{
ss=0;
if(GPIO_IOPIN&0x10000000)
{
GPIO_IOCLR = 0x10000000;
}
else
{
GPIO_IOSET = 0x10000000;
}
}
}
__enable_interrupt();
GPIO_IOSET |= 0x40000000;
while (1)
{
ss++;
if (ss>200000)
{
ss=0;
if(GPIO_IOPIN&0x10000000)
{
GPIO_IOCLR = 0x10000000;
}
else
{
GPIO_IOSET = 0x10000000;
}
}
}
return 0;
}
__arm void mam_Init(void)
{
MAMTIM = 3;
MAMCR = 2;
return;
}
__arm void Init_VPBDIV_4(void)
{
VPBDIV &= 0xCC;
return;
}
__arm void pll_Init(void)
{
PLLCON = 0x01;
PLLCFG = 0x21;
PLLFEED = 0xAA;
PLLFEED = 0x55;
while (!(PLLSTAT&0x400));
PLLCON = 0x03;
PLLFEED = 0xAA;
PLLFEED = 0x55;
return;
}
__arm void gpio_Init(void)
{
PINSEL1 &= 0xC0FFFFFF;
GPIO_IODIR = 0x70000000;
return;
}
__arm void vic_Init(void)
{
VICProtection = 0x1;
VICIntEnClear = 0xFFFFFFFF;
VICIntSelect = 0x0;
VICVectCntl0 = 0x24;
VICVectAddr = 0x0;
VICVectAddr0 = (unsigned int) &isr_Timer0;
VICIntEnable = 0x10;
VICProtection = 0x0;
return;
}
__arm void tmr_Init(void)
{
T0_MR0 = 40000000;
T0_MCR = 0x3;
T0_PR = 0x01;
T0_TC = 0x00;
T0_TCR = 0x01;
return;
}
__arm static void isr_Timer0(void)
{
if(GPIO_IOPIN&0x40000000)
{
GPIO_IOCLR = 0x40000000; //Вкл светодиод
}
else
{
GPIO_IOSET = 0x40000000;//Выкл светодиод
}
T0_IR = 0x01; MR0
return;
}
LPC2214.h -- Содержит адреса(адреса правильные)