mini stm32开发板IAP问题!!
bootloader下载后,再用串口助手下载app 的bin文件,程序没有正常运行,按wk-up键后串口打印“开始更新固件,非Flash应用程序程序”,按key0串口打印“开始执行flash用户代码,”“非flash应用程序无法执行”。
iap程序:
[mw_shl_code=c,true]{
if(USART_RX_CNT) {
//????????,????????????????,????±????????????ê??
if(oldcount==USART_RX_CNT) {
applenth=USART_RX_CNT;
oldcount=0;
USART_RX_CNT=0;
printf("???§???ò?????ê??!\r\n");
printf("?ú???¤??:%dBytes\r\n",applenth);
} else {
oldcount=USART_RX_CNT;
}
}
t++;
if(t==50)
{
LED0=!LED0;
t=0;
}
key=KEY_Scan();
switch(key) {
case 3:
if(applenth) {
printf("?????ü??????...\r\n");
//??????·???0X08XXXXXX
if(((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000) {
printf("?ú???¤??:%dBytes\r\n",applenth);
//?ü??FLASH?ú??
iap_write_appbin(FLASH_APP1_ADDR,USART_RX_BUF,applenth);
printf("?????ü???ê??!\r\n");
} else {
printf("·?FLASH???????ò!\r\n");
}
} else {
printf("?????????ü????????!\r\n");
}
break;
case 2:
if(applenth) {
printf("?????????ê??!\r\n");
applenth=0;
} else {
printf("??????????????????!\r\n");
}
break;
case 1:
printf("????????FLASH???§?ú??!!\r\n");
//??????·???0X08XXXXXX
if(((*(vu32*)(FLASH_APP1_ADDR+4))&0xFF000000)==0x08000000)
{
//????FLASH APP?ú??
iap_load_app(FLASH_APP1_ADDR);
} else {
printf("·?FLASH???????ò,??·¨????!\r\n");
}
break;
default:
delay_ms(10);
break;
}
}[/mw_shl_code]
app程序:
求大神指点!!!!!! |