完善资料让更多小伙伴认识你,还能领取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函数进行解锁,你可以都进行解锁试一下
|
|
|
|
只有小组成员才能发言,加入小组>>
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2616 浏览 2 评论
2145 浏览 1 评论
ch554g的板子准备烧录程序,用串口总是显示等待设备连接是为啥
1022浏览 14评论
请问ch32v307用ch-link调试或者读写有什么特殊操作方法吗?
919浏览 13评论
Windows系统下如何确定COM口为CH340/CH341设备?
2257浏览 12评论
695浏览 12评论
CH32V307以太网接近满速后,几秒或几十秒后就死机怎么解决?
1989浏览 11评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-15 02:09 , Processed in 0.815137 second(s), Total 80, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号