__asm void boot_jump( uint32_t address ){
LDR SP, [R0];Load new stack pointer address
LDR PC, [R0, #4];Load new program counter address
}
void execute_user_code(void)
{
uint8_t tmp;
NVIC->ICER[0] = 0xFFFFFFFF;//Disable all interrupts
NVIC->ICER[1] = 0x00000001;
NVIC->ICPR[0] = 0xFFFFFFFF;//Clear all pending interrupts
NVIC->ICPR[1] = 0x00000001;
for(tmp = 0; tmp < 32; tmp++)// Clear all interrupt priority
{
NVIC->IP[tmp] = 0x00;
}
LPC_SC->CCLKSEL = 0x01; // set sysclk (12MHz) as clock source
LPC_SC->PLL0CON = 0; // disable PLL
LPC_SC->PLL0FEED = 0xAA;
LPC_SC->PLL0FEED = 0x55;
SCB->VTOR = (0x2000) & 0x1FFFFF80;
boot_jump(0x2000);
}
|
NVIC->ICER[0] = 0xFFFFFFFF;//Disable all interrupts NVIC->ICER[1] = 0x000001FF; NVIC->ICPR[0] = 0xFFFFFFFF;//Clear all pending interrupts NVIC->ICPR[1] = 0x000001FF; |