I try to erase flash address in stm32l011k4. My code like that;

我尝试擦除stm32l011k4中的flash地址。我的代码就是这样;

#define SLAVE_ID_ADDR_I                             0x08080001
#define SLAVE_ID_ADDR_II                            0x08080002
#define SLAVE_ID_ADDR_III                           0x08080003
#define MASTERID                                    0x08080000

void software_erase(void){  

        HAL_FLASH_Unlock();

    /* Fill EraseInit structure*/
    EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
    EraseInitStruct.PageAddress = SlaveID_III;              
    EraseInitStruct.NbPages     = 4;                                    

    if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK)
    {
        playTone=3;
    }
    else{           
        MasterID = 0;
        SlaveID_I = 0;
        SlaveID_II = 0;
        SlaveID_III = 0;
        MasterID_loaded = 0;
        SlaveID_loaded_I = 0;
        SlaveID_loaded_II = 0;
        SlaveID_loaded_III = 0;
        clear_keyfobs = 1;
        playTone=2;
    }
}

Edit: But I want to erase bytes between 0x08080001 - 0x08080003. Not all sections. It's means "0x08080001, 0x08080002, 0x08080003" must be deleted but "0x08080000" must be remain.

编辑:但我想删除0x08080001 - 0x08080003之间的字节。不是所有部分。这意味着必须删除“0x08080001,0x08080002,0x08080003”,但必须保留“0x08080000”。

Any suggestion?

2 个解决方案

#1


2

The addresses are pointing to EEPROM, not flash.

地址指向EEPROM,而不是闪存。

You don't have to erase anything in EEPROM, just unlock it and write the new values.

您不必擦除EEPROM中的任何内容,只需将其解锁并写入新值即可。

However, in order to write a byte, you'd need a properly dereferenced pointer, an integer constant won't work.

但是,为了写一个字节,你需要一个正确的解引用指针,一个整数常量将不起作用。

#define SLAVE_ID_ADDR_I   (*(volatile unsigned char *)0x08080001)
#define SLAVE_ID_ADDR_II  (*(volatile unsigned char *)0x08080002)
#define SLAVE_ID_ADDR_III (*(volatile unsigned char *)0x08080003)
#define MASTERID          (*(volatile unsigned char *)0x08080000)

void software_erase(void)
{
    if(FLASH->PECR & FLASH_PECR_PELOCK)
        HAL_FLASH_Unlock();
    SLAVE_ID_ADDR_I = 0;
    ...

更多相关文章

  1. 将字节列表转换为字节字符串
  2. Python学习之——Tcp/ip基础/IP地址/DNS/端口简介
  3. 【python coding 1:网络检测】ping本地文件里的ip地址
  4. python正则表达式匹配时间和IP地址
  5. Python——域名解析成IP地址
  6. 套接字错误“IP地址在其上下文中无效” - Python
  7. python中查看变量内存地址的方法
  8. CentOS 7下配置IP地址
  9. 如果后台的SVN服务器IP地址更改了,如何修改客户端的连接url呢?

随机推荐

  1. Android ExpandableListView同时显示多种
  2. CheckBox设置颜色和自定义样式
  3. 如何在G1上安装非android market的apk
  4. Android 双进程守护
  5. Android RadioButton
  6. android绑定服务方法使用
  7. android studio 遇到的问题
  8. ERROR:Android Studio - “Unmappable cha
  9. android 无root截屏
  10. android 的分享功能