[STM32F1] STM32F103 FLASH_ProgramWord()遇到写保护FLASH_ERROR_WRP

[复制链接]
 楼主| ``` 发表于 2017-4-19 19:46 | 显示全部楼层 |阅读模式
我想在Flash同一个位置写两次。
比如在0x8010000,第一次写0xFFFFFFFF,第二次写0x7FFFFFFF,第三次写0x4FFFFFFF。
根据Flash原理,bit 1可以单独放电编程0,bit 0不能单独充电变成1。理论上上述操作是可行的。
可实际在第2次写就遇到FLASH_ERROR_WRP的问题。
难道STM32的Flash在Programming之前必须先Erase吗?不可以对同一个位置直接重复写吗?
  1.     FLASH_UnlockBank1();
  2.     FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);

  3.     FLASH_ProgramWord(addr, data);

  4.     FLASH_LockBank1();



aozima 发表于 2017-4-19 21:24 | 显示全部楼层
bit 1可以单独放电编程0,bit 0不能单独充电变成1

这点是明确的,但没明确说同个byte或word内可以把剩余不是0的再变成0。
有些芯片是支持这样重复写入的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

```
个人签名:bGlAeW91enVmYW5nLm5ldCANCg==

1

主题

81

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部
```
个人签名:bGlAeW91enVmYW5nLm5ldCANCg==

1

主题

81

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部