Использую:IAR6.10, MT-link, кит плата LPC-H2103.
Взял ИАРовский пример "IARMiniDev"
Пытаюсь переделать под мигание диодом на плате LPC-H2103.
Ничего не получается...
делаю так:
Код
int main(void)
{
// Disable PLL
PLLCON = 0;
// Write Feed
PLLFEED = 0xAA;
PLLFEED = 0x55;
// Set periphery divider /4
APBDIV_bit.APBDIV = 0;
// Memory map init flash memory is mapped on 0 address
#ifdef FLASH
MEMMAP_bit.MAP = 1;
#else
MEMMAP_bit.MAP = 2;
#endif
// Init variables
PatternInd = 0;
pNextPattern = pLedPatterns[0];
__disable_interrupt();
// Init VIC
VicInit();
// Init GPIO
PINSEL0 = PINSEL1 = 0;
// Disable fast IO
SCS_bit.GPIO0M = 0;
// Set pins connect to LEDs as outputs
IODIR = LED_MASK;
// All LEDs off
IOCLR = LED_MASK;
KeysInit();
// Init timer
// Reset and stop timer0
T0TCR = 2;
// Set timer counters mode - clock by PCLK
T0CTCR = 0;
// Set timer prescaler
T0PR = 0;
// Set timer period
T0MR0 = PCCLK/TICK_PER_SEC;
// Set match action - interrupt by MACH0 enable, reset counter
T0MCR = 3;
// No external action
T0EMR = 0;
// Assign to IRQ
VICIntSelect_bit.TIMER0 = 0;
// Set interrupt slots
VICVectAddr3 = (unsigned int) Timer0Handler;
VICVectCntl3_bit.NUMBER = VIC_TIMER0;
VICVectCntl3_bit.ENABLED = 1;
// Timer 0 interrupt enable
VICIntEnable_bit.TIMER0 = 1;
// Enable timer0
T0TCR = 1;
// __enable_interrupt();
while(1)
{
FIOCLR = LED_MASK;
// wait();
FIOSET = LED_MASK;
//wait();
};
} // main(void)
{
// Disable PLL
PLLCON = 0;
// Write Feed
PLLFEED = 0xAA;
PLLFEED = 0x55;
// Set periphery divider /4
APBDIV_bit.APBDIV = 0;
// Memory map init flash memory is mapped on 0 address
#ifdef FLASH
MEMMAP_bit.MAP = 1;
#else
MEMMAP_bit.MAP = 2;
#endif
// Init variables
PatternInd = 0;
pNextPattern = pLedPatterns[0];
__disable_interrupt();
// Init VIC
VicInit();
// Init GPIO
PINSEL0 = PINSEL1 = 0;
// Disable fast IO
SCS_bit.GPIO0M = 0;
// Set pins connect to LEDs as outputs
IODIR = LED_MASK;
// All LEDs off
IOCLR = LED_MASK;
KeysInit();
// Init timer
// Reset and stop timer0
T0TCR = 2;
// Set timer counters mode - clock by PCLK
T0CTCR = 0;
// Set timer prescaler
T0PR = 0;
// Set timer period
T0MR0 = PCCLK/TICK_PER_SEC;
// Set match action - interrupt by MACH0 enable, reset counter
T0MCR = 3;
// No external action
T0EMR = 0;
// Assign to IRQ
VICIntSelect_bit.TIMER0 = 0;
// Set interrupt slots
VICVectAddr3 = (unsigned int) Timer0Handler;
VICVectCntl3_bit.NUMBER = VIC_TIMER0;
VICVectCntl3_bit.ENABLED = 1;
// Timer 0 interrupt enable
VICIntEnable_bit.TIMER0 = 1;
// Enable timer0
T0TCR = 1;
// __enable_interrupt();
while(1)
{
FIOCLR = LED_MASK;
// wait();
FIOSET = LED_MASK;
//wait();
};
} // main(void)
В режиме пошаговой отладки диод нереагирует
пробовал так:
Код
IOCLR = LED_MASK;
// wait();
IOSET = LED_MASK;
//wait();
// wait();
IOSET = LED_MASK;
//wait();
Результата тоже нет.
В настройках проекта (ROMstart= 0x00000044, RAMstart=0x40000040)
Проект прикладываю.Схему платы тоже.