打印

STM32 不知算不算是个BUG

[复制链接]
1998|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zusen|  楼主 | 2010-5-8 14:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
当将外部总线FSMC_DataSetupTime = 0 时,程序(哦,不是,应该是芯片)蹦溃,仿真器能找到内核,但无法擦除和下载程序。(程序蹦溃是正常的,但无法再次下载程序和擦除,这就有点搞怪了~~)

解决办法,将BOOT0拉高,进入BOOT模式,擦除下载,将BOOT0置0,一切正常~~~
沙发
ypj005| | 2010-5-8 16:48 | 只看该作者
;P

使用特权

评论回复
板凳
litop| | 2010-5-8 16:53 | 只看该作者
....你的是那个型号啊?
我用STM32F107RC  没法ISP,,一次都不成功,试了几天。

使用特权

评论回复
地板
无冕之王| | 2010-5-8 16:56 | 只看该作者
:),自问自答啊

使用特权

评论回复
5
ypj005| | 2010-5-8 16:58 | 只看该作者
JFLASH试试

使用特权

评论回复
6
zwll| | 2010-5-8 21:52 | 只看该作者
什么思路?

使用特权

评论回复
7
dfsa| | 2010-5-9 15:18 | 只看该作者
5楼意思是说看能不能烧写?

使用特权

评论回复
8
vigia| | 2010-5-10 09:53 | 只看该作者
无法擦除和烧录新的程序是因为你原先的程序干扰了擦除和烧录的过程。

从上电到调试器控制住芯片,已经有部分的程序已经运行了,就是这运行的部分程序干扰到了擦除和重新烧录。

如果从BOOTLOADER模式启动芯片,你原先的代码就不会运行,因此可以执行擦除和烧录。


这是很正常的。

使用特权

评论回复
9
zusen|  楼主 | 2010-5-10 15:37 | 只看该作者
正常?楼上,你不知道擦写和烧写有个RESET过程吗?

使用特权

评论回复
10
zusen|  楼主 | 2010-5-10 15:45 | 只看该作者
除了对下载接口或相应功能禁用,其他的程序意外让IC程序无法更新或整个IC功能失效(非硬件烧坏),这样算是个BUG了吧

如果,我的BOOT0直接接地,我始不是要把这只脚焊开才能让IC活过来??

有没有文档说明 FSMC_DataSetupTime 不能等于0???

使用特权

评论回复
11
vigia| | 2010-5-10 16:16 | 只看该作者
呵呵,我前面说过了,调试器要控制住芯片内核是需要时间的,即便是很短的ms级,也足够代码从reset开始运行了。你的现象很明显的说明了:
1, 芯片没有问题,因为从BOOTLOADER可以正常烧录
2, 你的代码干扰了烧录,因为你的代码一运行就不能正常烧录了

其实STM32的烧录过程是先烧录一段BOOTLOADER代码到RAM区,然后运行,运行的这段BOOTLOADER代码负责接收数据,并将之烧录到FLASH内。

所以,一旦烧录到RAM区的BOOTLOADER代码,被你自己的程序干扰到了,整个FLASH的烧录过程也就不能正常执行了。

用户代码干扰到RAM区的原因有很多,以前有贴子讨论过的,最常见的是启动了DMA。

使用特权

评论回复
12
香水城| | 2010-5-10 16:27 | 只看该作者
除了对下载接口或相应功能禁用,其他的程序意外让IC程序无法更新或整个IC功能失效(非硬件烧坏),这样算是个BUG了吧

如果,我的BOOT0直接接地,我始不是要把这只脚焊开才能让IC活过来??

有没有文档说明 FSMC_DataSetupTime 不能等于0???
zusen 发表于 2010-5-10 15:45


1)调试环境与实际应用环境不同,你需要预留一些调试需要的功能,比如BOOT0引脚。

2)关于FSMC_DataSetupTime,请看手册中对应的说明如下:

3)关于运行的程序干扰了烧录或下载,以前有很多讨论,你可以搜索一下,也可以看看这个文档的第68页:STM32F10x常见应用解析(2008年9月)。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

233

主题

3191

帖子

0

粉丝