完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
看起来你正在使用一个单独的库?也许这一个?查看代码,看看你能找到的地方HAL_ERROR。有一些条件代码将告诉如何引发此异常。
|
|
|
|
尝试使用实用工具进行闪存,然后验证写入数据。如果失败,则闪光灯损坏。在运行时闪烁可能会很快破坏闪存,因为它会在你注意到程序中的错误之前执行数十万次。
|
|
|
|
好吧,我认为闪光灯消失了。我会尝试更换微控制器。
|
|
|
|
错了。即使你使用SWD程序员调试器,实际上也可以编程FLASH内存运行时。没有其他办法。像openOCD或gdbserver这样的程序首先将小程序加载到RAM,然后该程序写入FLASH。
|
|
|
|
尝试执行批量擦除。使用寄存器代替这个的库
关于运行时FLASH编程是错误的。没有其他的FLASH编程方法,即使你使用自己喜欢的调试探针(与SWD或JTAG无关)软件编程芯片(在大多数情况下ooenOCD或gdbserver将小程序加载到编程FLASH的RAM中。没有STM32 FLASH写入的硬件机制。 |
|
|
|
您也可以直接通过SWD编程FLASH,闪存加载器只是通过传输二进制文件来减少协议开销而不是直接编程,从而加速了整个过程。当然,你的观点是没有其他方法存在仍然是正确的。FLASH仍然以相同的方式物理写入,只是通过AHB AP总线而不是D总线上的数据。
|
|
|
|
没有办法直接写FLASH。与FLASH写入协议开销的速度相比,这个是无法估计的
|
|
|
|
你的第一个陈述不正确。AHB AP总线允许您直接访问闪存。这不是一个“硬件机制”,这就是为什么我同意你的答案(只是说明如果你认为我不同意它)。你的第二个陈述似乎是误解了我所说的。SWD的协议开销非常多。在我的脑海中,在标准编程模式下编程的每64位时钟大约为416位。因此,任何措施都不会使开销变得微不足道。
|
|
|
|
FLASH擦除时间2ms,DW编程80us。在4MHz时,它将是每64字节320x8个时钟
|
|
|
|
公平地说,我指的是百分比开销,而不是必要的绝对时间。在对你的数学进行三重检查之后,它让我发现了我最近写的一个SWD程序员的差异。它的运行速度为1.25MHz,但编程大约需要19秒(不完全确定,因为它会跳过空页)~50kB的数据,这与你的数学相差甚远。谢谢你帮助我实现这一点。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1441 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1373 浏览 3 评论
3018 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1519 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1949 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 02:59 , Processed in 0.735126 second(s), Total 90, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号