根據(jù)手冊CH32V208的option byte有128個字節(jié),已使用16字節(jié),剩下的112個字節(jié)能用來存儲配置嗎?

如何操作,有沒有范例? 我根據(jù)現(xiàn)在的幾個option byte操作函數(shù)寫了代碼,操作起來總有問題,似乎寫不進去,但里面的內(nèi)容變化過,顯示寫進去過。


FLASH_Status FLASH_SaveConfig()

{

? ? FLASH_Status status = FLASH_COMPLETE;

? ? const uint32_t? ? ?Addr = 0x1FFFF800;

? ? __IO uint8_t i;

? ? uint16_t? ? ?pbuf[64];


? ? uint8_t? ? ?*optbyte = 0x1FFFF800;


? ? status = FLASH_WaitForLastOperation(ProgramTimeout);

? ? if(status == FLASH_COMPLETE)

? ? {

? ? ? ? FLASH->OBKEYR = FLASH_KEY1;

? ? ? ? FLASH->OBKEYR = FLASH_KEY2;


? ? ? ? /* Read optionbytes */

? ? ? ? for(i = 0; i < 8; i++){

? ? ? ? ? ? pbuf[i] = *(uint16_t *)(Addr + 2 * i);

? ? ? ? }


? ? ? ? /* Erase optionbytes */

? ? ? ? FLASH->CTLR |= CR_OPTER_Set;

? ? ? ? FLASH->CTLR |= CR_STRT_Set;

? ? ? ? while(FLASH->STATR & SR_BSY);

? ? ? ? FLASH->CTLR &= ~CR_OPTER_Set;


? ? ? ? /* Write optionbytes */

? ? ? ? for(i = 8; i < (8+sizeof(DEVICE_CONFIG_t)); i++){

? ? ? ? ? ? pbuf[i] = ((((uint16_t)~(g_DevConfig.bytes[i-8])) << 8) | ((uint16_t)g_DevConfig.bytes[i-8]));

? ? ? ? }


? ? ? ? FLASH->CTLR |= CR_OPTPG_Set;


? ? ? ? for(i = 0; i < (8+sizeof(DEVICE_CONFIG_t)); i++){

? ? ? ? ? ? *(uint16_t *)(Addr + 2 * i) = pbuf[i];

? ? ? ? ? ? PRINT("write option byte %d to 0x%08X:0x%04X\n", i, Addr + 2 * i, pbuf[i]);

? ? ? ? ? ? while(FLASH->STATR & SR_BSY) ;

? ? ? ? }


? ? ? ? FLASH->CTLR &= ~CR_OPTPG_Set;


? ? ? ? status = FLASH_WaitForLastOperation(ProgramTimeout);

? ? }


? ? for(i = 0; i < (8+sizeof(DEVICE_CONFIG_t)); i++){

? ? ? ? PRINT("option byte %d on 0x%08X:0x%04X\n", i, Addr + 2 * i, *(uint16_t *)(Addr + 2 * i));

? ? }


? ? return status;

}



熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

您好,可以的,附件為參考例程,你可以參考一下。后續(xù)若有問題,可通過郵箱(lzs@wch.cn)進行溝通。

icon_rar.gifCH32V208 用戶選擇字操作.zip



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

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