mcboy 发表于 2020-4-10 09:46:49

10楼说的有道理,建议换一个别的程序下载试试看,或者直接用个空程序下载试试。还有我之前遇到过复位电路的电容出现异常而导致无法下载程序的现象,提供一下参考。

toofree 发表于 2020-4-10 10:58:37

SWD接口最好引出复位管脚,在复位状态下,不论boot0、boot1是什么设置,可以进入SWD调试模式。
大多数仿真器可以通过内部复位,瞬间连接目标芯片,进入SWD调试模式。
如果没有引出复位管脚,并且SWD还被程序给禁用了,那么就只好自求多福。在某次按下复位按键,快速释放复位键的时候,与仿真器连接相配合,有可能会连接成功。
如果引出了USART1串口的话,可以进ISP模式下载程序。

zhjb1 发表于 2020-4-10 15:32:02

我也遇到过此问题.KEIL中必须按Reset键 松手后开始下载,但在秒日下就不需要.原因未明.

allemdddd 发表于 2020-4-10 20:02:01

swd的下载口没有设置,我是用了stm32cube自动生成的代码。刚才也检查了生成的代码,没有初始化swd接口的两个io口

allemdddd 发表于 2020-4-10 20:52:14

问题解决了,还是mcboy说的对,我用空程序发现下载正常了,然后就在外设初始化里找,发现把wakepu的引脚重新配置了,就好了,但是好了之后想再次确认问题到底出在那里了,把wakeup引脚重新配置成原来的,问题却复现不了。。。。就这样莫名其妙的好了。。

toofree 说的也对,程序下载完之后,系统提示
**JLink Warning: Could not set S_RESET_ST

aiherong 发表于 2020-4-10 21:28:43

所有ST芯片都有保护机制: 一旦外部晶振出问题,立刻启动HSI->LSI等,好让系统运行起来!所以,缺省状态下芯片首先开启HSI,由软件再切换到HSE; 同理,低速也是缺省启动LSI,若需要再由软件启动LSE。

楼主按复位键能侥幸成功,因为此时是上电缺省状态(HSI)!而你一接晶振就有问题说明你的下载程序还没有成功切换到HSE,导致二者冲突!而一去掉又正常了,此时是HSI在工作
库函数将这一过程帮大家自动完成的!



发表于 2020-4-10 23:24:02

怀疑是外部时钟导致系统启动失败。楼主可以在仿真模式下,设置不进入main,单步确定哪儿出错了。如果怀疑时钟不兼容,可以换一个其他品牌的晶振试试。

butterflyspring 发表于 2020-4-13 17:06:07

如果是通过SWD下载程序,与外部晶体没有直接关系,采用的是内部HSI进行通讯的。BOOT脚拉高应该是没有运行用户程序,所以没有I用户O引脚初始化了。

zhaoshan880528 发表于 2020-4-14 11:31:36

LZ的程序里,有没有修改SWD两个引脚的功能?如果是,那只能通过短接reset电容来下载
页: 1 [2]
查看完整版本: 外部晶振会导致无法下载程序