|
发表于 2012-11-14 08:15:58
|
显示全部楼层
yuhui 发表于 2010-6-9 14:08
可以,P2.10上电为低电平时,自动进去ISP状态,可以用flash magic写。
也可以在用户程序态下用IAP指令reinv ...
hi,yuhui,我也试图用你提到的办法进入(在user app里面revokeISP),但是一直没成功,调用RevokeISP之后,就死机了,这个是我使用的:
void ReinvokeISP(void)
{
IAP iap_entry = (IAP)0x1fff1ff1;
uint32_t command[5], result[4];
/* make sure 32-bit Timer 1 is turned on before
calling ISP */
LPC_SYSCON->SYSAHBCLKCTRL |= 0x00400;
/* make sure GPIO clock is turned on before calling ISP */
LPC_SYSCON->SYSAHBCLKCTRL |= 0x00040;
/* make sure IO configuration clock is turned
on before calling ISP */
LPC_SYSCON->SYSAHBCLKCTRL |= 0x10000;
/* make sure AHB clock divider is 1:1 */
LPC_SYSCON->SYSAHBCLKDIV = 1;
/* Send Reinvoke ISP command to ISP entry point*/
command[0] = 57;
/* Set stack pointer to ROM value (reset default).
This must be the last piece of code executed before
calling ISP, because most C expressions and function
returns will fail after the stack pointer is changed. */
__set_MSP(*((uint32_t *)0x1FFF0000)); /* inline asm */
/* Invoke ISP. We call "iap_entry" to invoke
ISP because the ISP entry is done through the same
command interface as IAP. */
iap_entry(command, result);
// Code will never return!
}
能帮忙指点一下么?呵呵 |
|