請(qǐng)問(wèn)使用CH552T的Data存儲(chǔ)數(shù)據(jù),發(fā)現(xiàn)掉電,上電存儲(chǔ)的數(shù)據(jù)變,請(qǐng)問(wèn)有什么好辦法?晶振頻率24M

請(qǐng)問(wèn)使用CH552T的Data存儲(chǔ)數(shù)據(jù),發(fā)現(xiàn)掉電,上電存儲(chǔ)的數(shù)據(jù)變,請(qǐng)問(wèn)有什么好辦法?晶振頻率24M

您好,代碼中用到DataFlash一般也會(huì)有寫(xiě)Flash的函數(shù)在代碼中,要注意上下電過(guò)程芯片不正常的時(shí)候代碼跑飛的風(fēng)險(xiǎn),意外進(jìn)入Flash寫(xiě)函數(shù)。

extern?UINT8?FLASH_CHECK_BYTE_1;

extern?UINT8?FLASH_CHECK_BYTE_2;


UINT8?UserDefFlashErase(?UINT16?Addr,?UINT16?len?)

{

????bit?e_all;

????UINT8?status;????????????????????????????????????/*?返回操作狀態(tài)?*/

????UINT8?FlashType;?????????????????????????????????/*?Flash?類(lèi)型標(biāo)志?*/

????UINT16?addr?=?Addr+UserDefineFlashAddr;

????UINT16?restlen?=?len;

????/*?判斷是否可以正常執(zhí)行FLASH操作?*/

????if(?(?FLASH_CHECK_BYTE_1?!=?DEF_FLASH_OP_CHECK1?)?&&?(?FLASH_CHECK_BYTE_2?!=?DEF_FLASH_OP_CHECK2?)?)

????{???//FLASH_CHECK_BYTE_1和FLASH_CHECK_BYTE_2通常在USB中斷中滿足一定條件置位,或者在GPIO中斷中置位,這個(gè)標(biāo)志的置位來(lái)源一定是芯片外部操作實(shí)現(xiàn)的,防止自己就擦寫(xiě)了

????????return?0x02;

????}

????if((addr>=DATA_FLASH_ADDR)?&&?(addr/*?DataFlash區(qū)域?*/

????{

????????FlashType?=?bDATA_WE;

????}

????else?????????????????????????????????????????????/*?CodeFlash區(qū)域?*/

????{

????????FlashType?=?bCODE_WE;

????}

????SAFE_MOD?=?0x55;?????????????????????????????????/*?進(jìn)入安全模式?*/

????SAFE_MOD?=?0xAA;

????//下面就是FLASH的擦(554以下不需要擦)、寫(xiě)、讀

????//操作結(jié)束之后FLASH_CHECK_BYTE_1和FLASH_CHECK_BYTE_2及時(shí)復(fù)位

????GLOBAL_CFG?|=?FlashType;

????????do

????????{

????????????ROM_ADDR?=?addr;?????????????????????????????????/*?寫(xiě)入目標(biāo)地址?*/

????????????????ROM_BUF_MOD?=?bROM_BUF_BYTE;?????????????????????/*?選擇塊擦除模式或單字節(jié)編程模式?*/

????????????????ROM_DAT_BUF?=?0;?????????????????????????????????/*?擦寫(xiě)數(shù)據(jù)緩沖區(qū)寄存器為0?*/

????????????????if?(?ROM_STATUS?&?bROM_ADDR_OK?)?????????????????/*?操作地址有效?*/

????????????????{

????????????????????????ROM_CTRL?=?ROM_CMD_ERASE;????????????????????/*?啟動(dòng)擦除?*/

????????????????????????if(ROM_STATUS?&?bROM_CMD_ERR)

????????????????????????{

????????????????????????????????status?=?0x02;????/*?未知命令或超時(shí)?*/

????????????????????????????????return?status;

????????????????????????}

????????????????????????else

????????????????????????{

????????????????????????????????status?=?0x00;????/*?操作成功?*/

????????????????????????}

????????????????}

????????????????else

????????????????{

????????????????????????status?=?0x01;????/*?地址無(wú)效?*/

????????????????????????return?status;

????????????????}

????????????????addr?+=?64;

????????????????if(?restlen?>=?64?)

????????????????{

????????????????????restlen?-=?64;

????????????????}

????????????????else?if(?restlen?<?64?)

????????????????{

????????????????????restlen?=?0;

????????????????}

????????}while(?restlen?);

????SAFE_MOD?=?0x55;?????????????????????????????????/*?進(jìn)入安全模式?*/

????SAFE_MOD?=?0xAA;

????GLOBAL_CFG?&=?~FlashType;????????????????????????/*?開(kāi)啟寫(xiě)保護(hù)?*/

????EA?=?e_all;??????????????????????????????????????/*?恢復(fù)全局中斷狀態(tài)?*/

????????CH549WDTModeSelect(1);???????????????????????????/*?啟動(dòng)看門(mén)狗?*/

????return?status;

}



只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频