窗口看門狗
中斷中喂狗。如果沒有喂狗。就會產生復位
完整程序源代碼工程文件下載地址
- #include"public.h"
- const unsigned char *sysfile[1]=
- {
- "STM32.BIN"
- };
- u8 UpData(void);
- int main(void)
- {
- u8 sd_check,fat_check,i;
-
- Init_All();
- while(1)
- {
- //如果SD卡FAT初始化OK了進入升級
- if(SD_Initialize()==0)
- {
- LCD_ShowString(20,20,"Sd Check OK",WHITE);
- sd_check=1;
- }
- else
- {
- LCD_ShowString(20,20,"Sd Check fail",WHITE);
- sd_check=0;
- }
- if(FAT_Init()==0)
- {
- LCD_ShowString(20,40,"Fat Initial OK",WHITE);
- fat_check=1;
- }
- else
- {
- LCD_ShowString(20,40,"Fat Initial fail",WHITE);
- fat_check=0;
- }
-
- if(sd_check&&fat_check)
- {
- LCD_ShowString(20,60,"Enter updata after 3s",WHITE);
- LCD_ShowString(210,60,"s",WHITE);
- for(i=3;i>0;i--)
- {
- LCD_Show_Num(190,60,i,2, 16, RED);
- delay_ms(1000);
- }
- LCD_Show_Num(190,60,i,2, 16, RED);
- if(UpData()==0)
- {
- LCD_ShowString(20,100,"UpData Success",WHITE);
- }
- else
- {
- LCD_ShowString(20,100,"UpData fail",WHITE);
- }
- LCD_ShowString(20,120,"Enter APP after 3s",WHITE);
- LCD_ShowString(210,120,"s",WHITE);
- for(i=3;i>0;i--)
- {
- LCD_Show_Num(190,120,i,2, 16, RED);
- delay_ms(1000);
- }
- LCD_Show_Num(190,120,i,2, 16, RED);
- }
- iap_load_app(FLASH_APP1_ADDR);
- }
- }
- u8 temp[512]; //零時空間
- u8 UpData(void)
- {
- u32 fcluster=0;
- u32 i;
- FileInfoStruct FileTemp;//零時文件夾
- //得到根目錄的簇號
- if(FAT32_Enable)fcluster=FirstDirClust;
- else fcluster=0;
- FileTemp=F_Search(fcluster,(unsigned char *)sysfile[0],T_BIN);//根目錄下查找BIN文件
-
- if(FileTemp.F_StartCluster==0) {LCD_ShowString(20,80,"bin was lost",WHITE);return 1 ;}
- LCD_ShowString(20,80,"find bin success",WHITE);
-
- F_Open(&FileTemp);//打開該文件
- i=0;
-
- while(F_Read(&FileTemp,temp))//成功讀出512個字節
- {
- if(i<FileTemp.F_Size)//不超過文件大小
- {
- iap_write_appbin(FLASH_APP1_ADDR+i,temp,512);//更新FLASH代碼
- //LCD_Show_Bar(50, 155, 15, 150,i, FileTemp.F_Size, RED,WHITE);
- i+=512;//增加512個字節
- if(i>FileTemp.F_Size) i=FileTemp.F_Size;
- LED0=~LED0;
- LCD_Show_Bar(50, 155, 15, 150,i, FileTemp.F_Size, RED,WHITE);
- LCD_ShowString(125,170,"%",WHITE);
- LCD_Show_Num(100,170, 100*i/FileTemp.F_Size,3, 16, RED);
- }
- }
- return 0;
- }
復制代碼
所有資料51hei提供下載:
bootloader.rar
(417.33 KB, 下載次數: 22)
2018-3-8 00:08 上傳
點擊文件名下載附件
STM32 bootlaod 下載積分: 黑幣 -5
|