STM32
直播中

甘满盛

8年用户 1360经验值
擅长:386660
私信 关注
[问答]

STM32L151RTC6在写数据前清除所有的标志,清除不掉写不进内容的原因?

本人刚刚使用ARM,比较生疏,模仿网上使用库函数编写程序!使用的芯片是STM32L151RTC6!
      使用FLASH_Status DATA_EEPROM_ProgramByte(uint32_t Address, uint8_t Data)函数,只能写入一个地址一次,重复写入是不知什么原因FLASH_GetStatus()标志位一直不是FLASH_COMPLETE,清楚标志位之后也不好用,不知什么原因标志位一直都在不知FLASH_ERROR_PROGRAM就是 FLASH_ERROR_WRP,导致程序一直无法写入!
       奇怪的是如果忽略这几个标志位,不调用库函数,直接以寄存器的形式编写程序则读写无误,不知原因,请大家多帮助,如何使用库函数,尝试了在写数据前清除所有的标志,没用,似乎清除不掉,后面获取标志还是FLASH_ERROR_PROGRAM或FLASH_ERROR_WRP,一直写不进内容!
        请大家帮忙,多多益善,谢谢!

回帖(1)

京五环以外

2024-4-18 18:01:41
可能有多种原因导致无法写入数据:

1. FLASH已经被锁定:在写入数据之前,确保你已经对FLASH解锁。你可以使用FLASH_Unlock和FLASH_Lock函数来解锁和锁定FLASH。

2. 写入错误:如果数据写入时发生错误,标志位将被设置为FLASH_ERROR_PROGRAM或FLASH_ERROR_WRP。检查这些标志位可以帮助你找出错误的原因。

3. 输入参数错误:确保传递给DATA_EEPROM_ProgramByte函数的地址和数据参数是正确的。

4. 电源问题:如果电源电压不稳定或者不足,可能会导致写入错误。确保你的芯片的电源稳定。

如果以上都没有问题,你可以尝试使用寄存器的方式编写程序来进行读写操作,看看是否能够成功写入数据。如果能够成功写入数据,可能是库函数的问题,你可以尝试使用其他的库函数或者自己编写相关功能的代码来处理。同时,确保你的库函数版本是最新的,有没有相关的bug修复。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分