大多数仿真器可以通过内部复位,瞬间连接目标芯片,进入SWD调试模式。
如果没有引出复位管脚,并且SWD还被程序给禁用了,那么就只好自求多福。在某次按下复位按键,快速释放复位键的时候,与仿真器连接相配合,有可能会连接成功。
如果引出了USART1串口的话,可以进ISP模式下载程序。
我也遇到过此问题.KEIL中必须按Reset键 松手后开始下载,但在秒日下就不需要.原因未明. swd的下载口没有设置,我是用了stm32cube自动生成的代码。刚才也检查了生成的代码,没有初始化swd接口的两个io口 问题解决了,还是mcboy说的对,我用空程序发现下载正常了,然后就在外设初始化里找,发现把wakepu的引脚重新配置了,就好了,但是好了之后想再次确认问题到底出在那里了,把wakeup引脚重新配置成原来的,问题却复现不了。。。。就这样莫名其妙的好了。。
toofree 说的也对,程序下载完之后,系统提示
**JLink Warning: Could not set S_RESET_ST 所有ST芯片都有保护机制: 一旦外部晶振出问题,立刻启动HSI->LSI等,好让系统运行起来!所以,缺省状态下芯片首先开启HSI,由软件再切换到HSE; 同理,低速也是缺省启动LSI,若需要再由软件启动LSE。
楼主按复位键能侥幸成功,因为此时是上电缺省状态(HSI)!而你一接晶振就有问题说明你的下载程序还没有成功切换到HSE,导致二者冲突!而一去掉又正常了,此时是HSI在工作
库函数将这一过程帮大家自动完成的!
怀疑是外部时钟导致系统启动失败。楼主可以在仿真模式下,设置不进入main,单步确定哪儿出错了。如果怀疑时钟不兼容,可以换一个其他品牌的晶振试试。 如果是通过SWD下载程序,与外部晶体没有直接关系,采用的是内部HSI进行通讯的。BOOT脚拉高应该是没有运行用户程序,所以没有I用户O引脚初始化了。 LZ的程序里,有没有修改SWD两个引脚的功能?如果是,那只能通过短接reset电容来下载
页:
1
[2]