完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在调试STM32F103C8内部FLASH当EEPORM使用时,一直没调通,求助友们;调了好几天没调通,读取指定位置没有问题,但是尝试擦除或者写入时就会死机,就是程序执行擦除FLASH_ErasePage()或者写入FLASH_ProgramHalfWord()这句时就会死机。把看门狗打看可以看到只要程序执行到擦除或者写入函数时就死机。再细致发现执行写入函数这一句*(__IO uint16_t*)baseaddr =就会死机,只要把这句*(__IO uint16_t*)baseaddr =删除跳过这一句就不会死机。求大家相助,谢谢,
[tr]我把函简化成下面,就是会死机,万分求助 void FLASHINIT_FLASH(void) { FLASH_Unlock();//解锁 FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);//清除标志位 FLASH_ErasePage(0x08002a50);//要擦出页的起始地址 FLASH_ProgramWord(0x08002a50,0x1234);//写数据 //是一个字即四个字节 FLASH_Lock();//锁定 } [/tr] |
|
相关推荐
15个回答
|
|
你看看在写入时有没有解锁FLASH,记住写完成后由“上锁”。
|
|
|
|
|
|
|
|
写的地址对吗?
|
|
|
|
楼主写FLASH的地址最好不要和程序的地址混在一起,单独找一个比较远的地址来测试。
|
|
|
|
看过没有和使用程序地址混在一起,我选择的位置是空位置 |
|
|
|
|
|
|
|
需要判断FLASH->SR。 在不busy的时候再去写入
|
|
|
|
|
|
|
|
ST官方有代码可以参考呀
|
|
|
|
请参考10楼附件,Flash模拟EEPROM用过很多回,从来没有出过问题。
楼主你的程序工程呢,发上来看看。 0x2a52的地址不算大,才10K,STM32程序和有初始化值的数据占个10K不是什么难事,生成bin文件看一下,超过了没有。 |
|
|
|
楼主去看看正点原子的407板子的程序, 实验34 FLASH模拟EEPROM实验 这里有详细的解答。对比你的程序看
|
|
|
|
|
|
|
|
地址长度是32位的,强制转换为16位肯定出问题。
|
|
|
|
我之前也遇到过题主的问题,现在解决了所以特意回来说一下问题所在。
查手册的时候看到这一句话:For write and erase operations on the Flash memory (write/erase), the internal RC oscillator (HSI) must be ON. 在写/擦除闪存时,内部RC振荡器(HSI)必须打开。即使使用HSE作为系统时钟。 |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
878 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
936 浏览 2 评论
2044 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1145 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1568 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 01:26 , Processed in 0.859742 second(s), Total 103, Slave 86 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号