__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; |