STM32调试和下载:SW配置
一、问题
在参与STM32外围电路设计时,发现Boot引脚没有跳线或开关,也就是不能设置Boot引脚。ISP(In System Programming)功能从而也不能使用。
- SWDIO/SWCLK引脚被引出,该引脚在未配置的情况下,能否用来烧录程序?
- 如果SW引脚被禁用(复用为其他功能),是否有“挽救”办法?
二、办法
查阅 参考手册Debug support(DBG)章节:
- STM32提供SWJ-DP(融合SW 、JTAG的)
- JTAG-Debug Port,默认开启。
- SW-Debug Port,可认为默认开启。在TMS/TCK( SWDIO/SWCLK)发送特定序列信息后启动SW-Debug Port。在keil调试选择使用SW后,该步骤自动进行。
- 不同状态下可用的Debug Ports。Release表明该引脚复用为其他功能,不能用来Debug
上图可见,复位状态下SWJ-DP调试引脚都是可用的。但在disable时(复用为其他功能),调试引脚不可用
查阅博客、帖子等
多篇文章说明,手动复位+SW下载可在SWD被禁用情况下烧录程序。经测试,具有一定的成功几率,不是很稳定。
开展实验
- 未配置SWD引脚时(Reset State),尝试SW下载和调试
- 配置SWD引脚时,尝试SW下载和调试
- 配置SWD引脚为其他复用功能时,尝试SW下载和调试
三、结论
1. SWD引脚未配置(Reset State)或配置为SWD
能正常使用SWD功能,包含下载和调试
2. SWD默认引脚配置复用为其他功能
在STM32执行主程序时,引脚会被复用为其他功能,不再具有SWD下载和调试功能
在 引脚复用功能 配置完成前,SW仍为默认引脚配置。 这是复位后能够烧录程序的原因。但也由于这一段时间很短暂,所以手动复位时烧录失败经常发生。
3. SW禁用(复用为其他)时如何烧录?
- 使用其他方式烧录,如ISP烧录。更改启动时boot0,boot1引脚电平,从厂商预置的BootLoader启动,即ISP(In Application Programing)。(稳定可行)
- 复位+SW烧录。
- 手动复位。先按下reset按键,再点击执行下载命令,放开reset按键。(概率成功)
- 放开reset按键与点击下载命令接近同时,略滞后。实际上是抓住上电后 至 配置复用前的时间间隔。
- keil中配置Debug–Setting:Max Clock选最低档5kHZ;Flash Download仅选择Erase Sectors(降低时钟频率和擦除操作,或可增加烧录成功几率)
- 调试器复位。连接调试器(STlink Jlink等)的复位引脚到STM32的复位引脚(推测能成功,未测试😂)
- keil中配置Debug–Setting。Connect&Reset Options:Connect [under Reset] Reset [Reset Pin]
- 参考:Keil5,Debug调试模式下,Connect& Reset Options的操作你真的懂了吗?
参考手册Debug support(DBG)章节描述较为详细,由于时间原因我仅阅读了部分内容,如有纰漏烦请指正!😆
|