完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
现在在rt-thread下,使用其中一个线程接收IP数据编程FLASH。发现随机出现问题(概率还极高)。打印信息,擦除地址应该是没问题的:
erase?32K:8038000erase?32K:8040000erase?32K:8048000erase?4K:8050000erase?4K:8051000erase?4K:8052000erase?4K:8053000????while(e_page_cnt>=8)????{????????FLASH_EraseBlock_32K_Fast(addr);????????DBG_PRINT("erase?32K:%xrn",?addr);????????addr?+=?32?*?1024;????????e_page_cnt?-=?8;????}????while?(e_page_cnt)????{?????????FLASH_ErasePage(addr);?????????DBG_PRINT("erase?4K:%xrn",?addr);?????????addr?+=?4?*?1024;?????????e_page_cnt--;????}但是擦除并编程完毕后,重启就发现无法启动。调试查看FLASH内容,发现0x8038000后面的数据的确成功擦写了。但是第一个4K页的数据好像也被擦除了(显示全部39E339E3)。是不是FLASH擦除的时候,不允许线程切换? 不知道为什么帖子修改之后,上面的空格编程问号了…… |
|
相关推荐
2个回答
|
|
现在尝试FLASH_EraseBlock_32K_Fast和FLASH_ErasePage不混用,只使用FLASH_EraseBlock_32K_Fast好像就没有这个问题出现了……是因为快速模式下不允许使用标准模式的编程指令么?
|
|
|
|
您好,在调用FLASH_ErasePage函数和FLASH_EraseBlock_32K_Fast函数进行擦除时,需要先执行对应的解锁操作。FLASH_ErasePage函数需要调用FLASH_Unlock函数进行解锁,FLASH_EraseBlock_32K_Fast函数需要调用FLASH_Unlock_Fast函数,你是不是整个过程只使用了FLASH_Unlock_Fast函数进行解锁,你可以都进行解锁试一下
|
|
|
|
只有小组成员才能发言,加入小组>>
522 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2903 浏览 2 评论
2399 浏览 1 评论
869浏览 2评论
688浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
418浏览 1评论
525浏览 1评论
请教一下,Mounriver 编译不成功:找不到库文件,怎么整
814浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 17:23 , Processed in 1.368903 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号