CH32v103 FLASH(用户选择字 0x1FFFF800) 请发个读写例子

CH32v103  FLASH(用户选择字 0x1FFFF800) 请发个读写例子

您好,在CH32V103 FLASH库函数中有直接对用户选择字区域操作的函数,如下图,解锁后直接调用该函数对用户选择字区域对应地址写入数据即可。读的话直接读该地址即可。

image.png


      0x1FFFF810设置不上,请问是什么原因?

代码:  

        FLASH_Unlock();

        FLASH_EraseOptionBytes();

        FLASH_ProgramOptionByteData((uint32_t)0x1FFFF800,0xA5);

        FLASH_ProgramOptionByteData((uint32_t)0x1FFFF808,0xFF);

        FLASH_ProgramOptionByteData((uint32_t)0x1FFFF80A,0xFF);

        FLASH_ProgramOptionByteData((uint32_t)0x1FFFF810,0x01);

        printf("0x1FFFF800---------%08x\r\n", *(u32*)0x1FFFF800);

        printf("0x1FFFF808---------%08x\r\n", *(u32*)0x1FFFF808);

        printf("0x1FFFF810---------%08x\r\n", *(u32*)0x1FFFF810);

        FLASH_Lock();


        Delay_Ms(1000);

        printf("0x1FFFF810-%08x\r\n", *(u32*)0x1FFFF810);

        Delay_Ms(3000);

返回:

0x1FFFF800---------ffff5aa5

0x1FFFF808---------00ff00ff

0x1FFFF810---------ffffffff

0x1FFFF810-ffffffff



您好,用户选择可操作区域为0x1FFFF800到0x1FFFF80F,810超过这个区域了。后续若有问题,可邮箱(lzs@wch.cn)沟通。


手册里面不是说有128字节的选择字吗,memory mapping里面也说到0x1FFFF800-880。为什么说 FLASH_ProgramOptionByteData可操作区域为0x1FFFF800到0F。


您好,如下图,V103仅下图中区域可操作使用,其中存储用户数据一般放在Data0和Data1区域。若想要操作使用0x1FFFF810后面区域,可以使用V203系列,具体可参考下链接。后续若有问题,可邮箱(lzs@wch.cn)沟通。

https://www.cnblogs.com/liaigu/p/17838776.html 

image.png


只有登录才能回复,可以选择微信账号登录