呵呵,我前面说过了,调试器要控制住芯片内核是需要时间的,即便是很短的ms级,也足够代码从reset开始运行了。你的现象很明显的说明了:
1, 芯片没有问题,因为从BOOTLOADER可以正常烧录
2, 你的代码干扰了烧录,因为你的代码一运行就不能正常烧录了
其实STM32的烧录过程是先烧录一段BOOTLOADER代码到RAM区,然后运行,运行的这段BOOTLOADER代码负责接收数据,并将之烧录到FLASH内。
所以,一旦烧录到RAM区的BOOTLOADER代码,被你自己的程序干扰到了,整个FLASH的烧录过程也就不能正常执行了。
用户代码干扰到RAM区的原因有很多,以前有贴子讨论过的,最常见的是启动了DMA。
|