91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

網上很多關于bootloader的例程,一直沒找到利用U盤更新的,這里提供一個通過U盤更新APP程序的例程,測試環境是ALIENTEK STM32F407開發板。 其中值得注意的是U盤中斷問題,更新完程序后要及時關閉中斷跳轉到APP后才能正常運行,否則可能會死在上有中斷未處理的地方。

資源截圖

代碼片段和文件信息

#include?“string.h“
#include?“exfuns.h“
#include?“fattester.h“
#include?“malloc.h“
#include?“usart.h“
////////////////////////////////////////////////////////////////////////////////// ?

//FATFS?擴展代碼 ???
??
//////////////////////////////////////////////////////////////////////////////////?
#define?FILE_MAX_TYPE_NUM 7 //最多FILE_MAX_TYPE_NUM個大類
#define?FILE_MAX_SUBT_NUM 4 //最多FILE_MAX_SUBT_NUM個小類

?//文件類型列表
u8*const?FILE_TYPE_TBL[FILE_MAX_TYPE_NUM][FILE_MAX_SUBT_NUM]=
{
{“BIN“} //BIN文件
{“LRC“} //LRC文件
{“NES“} //NES文件
{“TXT““C““H“} //文本文件
{“WAV““MP3““APE““FLAC“}//支持的音樂文件
{“BMP““JPG““JPEG““GIF“}//圖片文件
{“AVI“} //視頻文件
};
///////////////////////////////公共文件區使用malloc的時候////////////////////////////////////////////
FATFS?*fs[_VOLUMES];//邏輯磁盤工作區. ?
FIL?*file; ?? //文件1
FIL?*ftemp; ?? //文件2.
UINT?brbw; //讀寫變量
FILINFO?fileinfo; //文件信息
DIR?dir;?? //目錄

u8?*fatbuf; //SD卡數據緩存區
///////////////////////////////////////////////////////////////////////////////////////
//為exfuns申請內存
//返回值:0成功
//1失敗
u8?exfuns_init(void)
{
u8?i;
for(i=0;i<_VOLUMES;i++)
{
fs[i]=(FATFS*)mymalloc(SRAMINsizeof(FATFS)); //為磁盤i工作區申請內存
if(!fs[i])break;
}
file=(FIL*)mymalloc(SRAMINsizeof(FIL)); //為file申請內存
ftemp=(FIL*)mymalloc(SRAMINsizeof(FIL)); //為ftemp申請內存
fatbuf=(u8*)mymalloc(SRAMIN512); //為fatbuf申請內存
if(i==_VOLUMES&&file&&ftemp&&fatbuf)return?0;??//申請有一個失敗即失敗.
else?return?1;
}

//將小寫字母轉為大寫字母如果是數字則保持不變.
u8?char_upper(u8?c)
{
if(c<‘A‘)return?c;//數字保持不變.
if(c>=‘a‘)return?c-0x20;//變為大寫.
else?return?c;//大寫保持不變
} ??????
//報告文件的類型
//fname:文件名
//返回值:0XFF表示無法識別的文件類型編號.
// ?其他高四位表示所屬大類低四位表示所屬小類.
u8?f_typetell(u8?*fname)
{
u8?tbuf[5];
u8?*attr=‘\0‘;//后綴名
u8?i=0j;
while(i<250)
{
i++;
if(*fname==‘\0‘)break;//偏移到了最后了.
fname++;
}
if(i==250)return?0XFF;//錯誤的字符串.
? for(i=0;i<5;i++)//得到后綴名
{
fname--;
if(*fname==‘.‘)
{
fname++;
attr=fname;
break;
}
?? }
strcpy((char?*)tbuf(const?char*)attr);//copy
? for(i=0;i<4;i++)tbuf[i]=char_upper(tbuf[i]);//全部變為大寫?
for(i=0;i {
for(j=0;j {
if(*FILE_TYPE_TBL[i][j]==0)break;//此組已經沒有可對比的成員了.
if(strcmp((const?char?*)FILE_TYPE_TBL[i][j](const?char?*)tbuf)==0)//找到了
{
return?(i<<4)|j;
}
}
}
return?0XFF;//沒找到 ? ???
} ?

//得到磁盤剩余容量
//drv:磁盤編號(“0:“/“1:“)
//total:總容量 ?(單位KB)
//free:剩余容量 ?(單位KB)
//返回值:0正常.其他錯誤代碼
u8?exf_getfree(u8?*drvu32?*totalu32?*free)
{
FATFS?*fs1;
u8?res;
????u32?fre_clust=0?fre_sect=0?tot_sect=0;
????//得到磁盤信息及空閑簇數量
????res?=(u32)f_getfree((const?TCHAR*)drv?(DWORD*)&fre_clust?&fs1);
????if(res==0)
{ ???
????tot_sect=(fs1->n_fatent-2)*fs1->csize; //得到總扇區數
????fre_sect=fre_clust*fs1->csize; //得到空閑扇區數 ???
#if?_MAX_SS!=512 ?? //扇區大小不是512字節則轉換為512字節
tot_sect*=fs1->ssize/512;
fre_sect*=fs1->ssize/512;
#endif ??
*t

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-09-28?16:54??bootloader測試成功\
?????文件?????????711??2015-09-29?10:32??bootloader測試成功\readme.txt
?????目錄???????????0??2015-09-28?14:55??bootloader測試成功\U盤bootloader\
?????目錄???????????0??2015-09-28?12:36??bootloader測試成功\U盤bootloader\CORE\
?????文件??????109142??2014-07-17?21:52??bootloader測試成功\U盤bootloader\CORE\core_cm4.h
?????文件???????22735??2014-07-17?21:52??bootloader測試成功\U盤bootloader\CORE\core_cm4_simd.h
?????文件???????29605??2014-08-02?00:12??bootloader測試成功\U盤bootloader\CORE\startup_stm32f40_41xxx.s
?????目錄???????????0??2015-09-28?16:28??bootloader測試成功\U盤bootloader\FATFS\
?????目錄???????????0??2015-09-29?10:44??bootloader測試成功\U盤bootloader\FATFS\exfuns\
?????文件????????3452??2015-09-29?10:44??bootloader測試成功\U盤bootloader\FATFS\exfuns\exfuns.c
?????文件????????1564??2014-08-29?15:13??bootloader測試成功\U盤bootloader\FATFS\exfuns\exfuns.h
?????文件????????7722??2014-08-29?15:14??bootloader測試成功\U盤bootloader\FATFS\exfuns\fattester.c
?????文件????????1225??2014-05-15?17:20??bootloader測試成功\U盤bootloader\FATFS\exfuns\fattester.h
?????文件????????4652??2015-09-29?10:44??bootloader測試成功\U盤bootloader\FATFS\exfuns\mycc936.c
?????目錄???????????0??2015-09-29?10:42??bootloader測試成功\U盤bootloader\FATFS\src\
?????文件????????7340??2015-09-29?10:42??bootloader測試成功\U盤bootloader\FATFS\src\diskio.c
?????文件????????2567??2014-01-15?00:31??bootloader測試成功\U盤bootloader\FATFS\src\diskio.h
?????文件??????156975??2014-08-29?15:02??bootloader測試成功\U盤bootloader\FATFS\src\ff.c
?????文件???????13391??2014-07-25?11:34??bootloader測試成功\U盤bootloader\FATFS\src\ff.h
?????文件????????9978??2015-09-12?11:55??bootloader測試成功\U盤bootloader\FATFS\src\ffconf.h
?????文件?????????706??2015-09-12?11:55??bootloader測試成功\U盤bootloader\FATFS\src\integer.h
?????目錄???????????0??2015-09-28?12:36??bootloader測試成功\U盤bootloader\FWLIB\
?????目錄???????????0??2015-09-28?12:36??bootloader測試成功\U盤bootloader\FWLIB\inc\
?????文件????????6924??2014-08-01?23:18??bootloader測試成功\U盤bootloader\FWLIB\inc\misc.h
?????文件???????32880??2014-08-01?23:18??bootloader測試成功\U盤bootloader\FWLIB\inc\stm32f4xx_adc.h
?????文件???????27318??2014-08-01?23:18??bootloader測試成功\U盤bootloader\FWLIB\inc\stm32f4xx_can.h
?????文件????????2416??2014-08-01?23:18??bootloader測試成功\U盤bootloader\FWLIB\inc\stm32f4xx_crc.h
?????文件???????14481??2014-08-01?23:18??bootloader測試成功\U盤bootloader\FWLIB\inc\stm32f4xx_cryp.h
?????文件???????14946??2014-08-01?23:18??bootloader測試成功\U盤bootloader\FWLIB\inc\stm32f4xx_dac.h
?????文件????????4296??2014-08-01?23:18??bootloader測試成功\U盤bootloader\FWLIB\inc\stm32f4xx_dbgmcu.h
?????文件???????12977??2014-08-01?23:18??bootloader測試成功\U盤bootloader\FWLIB\inc\stm32f4xx_dcmi.h
............此處省略534個文件信息

評論

共有 條評論