初级会员
- 积分
- 155
- 金钱
- 155
- 注册时间
- 2023-2-14
- 在线时间
- 51 小时
|
10金钱
本帖最后由 wyp010123 于 2023-7-17 13:08 编辑
我的BootLoader程序中,为什么总是在检查FLASH APP的地址时,总是不对呢
int main(void)
{
// u8 t;
FIL files;
// FILINFO file;
FRESULT res;
HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_2);//设置系统中断优先级分组2
delay_init(72); //初始化延时函数
LED_Init();
//uart_init(9600); //初始化串口波特率为115200
while(SD_Init())//检测不到SD卡
{
//LCD_ShowString(30,150,200,16,16,"SD Card Error!");
//delay_ms(500);
//LCD_ShowString(30,150,200,16,16,"Please Check! ");
delay_ms(100);
LED0=!LED0;//DS0闪烁
//iap_load_app(FLASH_APP1_ADDR);//执行FLASH APP代码
}
mem_init(); //初始化内部内存池
exfuns_init(); //为fatfs相关变量申请内存
f_mount(fs[0],"0:",1); //挂载SD卡
//res=f_stat("2.bin",&file);
//LED0=0;
res= f_open(&files,"0:/2/2.bin",FA_READ);
if(res==0)
{
FirmwareUpdate(); //进行固件升级 // printf("固件升级失败!\r\n");
if(((*(vu32*)(FLASH_APP1_ADDR+4))&0xFF000000)==0x08000000)//判断是否为0X08XXXXXX.
{
f_close(&files);
f_unlink("0:/2/2.bin");
iap_load_app(FLASH_APP1_ADDR);//执行FLASH APP代码
}
//iap_load_app(FLASH_APP1_ADDR);
}
else
{
iap_load_app(FLASH_APP1_ADDR);//执行FLASH APP代码
}//执行FLASH APP代码
//LED0=0;
}
#define FLASH_APP1_ADDR 0x08020000 //第一个应用程序起始地址(存放在FLASH)
//保留0X08000000~0X0800FFFF的空间为IAP使用
|
-
-
|