目前想到的检查位置有以下几处
-板子要上电,检查供电电压是否正常。
-检查驱动是否安装齐全。
-如果用ST-link注意上电前调整Boot引脚,Boot0要接地,Boot1任意,如果采用ISP下载,则Boot0接高电平,Boot1接电平。
-下载器接线,如果是JTAG方式多数不会接错,如果采用SWD方式注意接线,本人一般是取2479引脚接线。
-Device:确定所选固件库安装正确,选对芯片型号,如果没有所需型号,可以在Pack installer左侧搜索或ST官方下载,也可以去芯片官方主页下载(如APM32或GD32)或此链接https://www.keil.com/dd2/Pack/。固件库安装方式可以是直接解压安装或是从Pack installer-File-import安装下载好的pack文件,如果添加时报错则考虑是否用管理员方式打开软件再试,对于低版本的工程文件有可能会无法添加新的固件库。如果编译通过,下载时显示flash地址多处匹配错误,也是芯片选择的问题。
-Debug:选中右侧ST-Link,settings,观察右侧框中是否显示芯片序列号,如果没有确定左侧port处SWD/JTAG是否选择正确,其次是Flash Download中选择合适的Flash大小,如果没有合适的内存大小也可以去官方搜索下载,一般STM32F103C8T6虽然数据手册显示flash为64K,选择128K也可以。
-如果使用的ST-Link,但下载时弹出No J-Link found,可以在Debug右侧的Utilities中切换为ST-Link。
本人最近一次遇到此问题的解决办法:
现象:板子为自制板,Keil可以显示ST-LINK的设备号(表明stlink驱动正常),但显示no target connection。
1.首先确定供电电压正常(供电指示灯亮起)。
2.SWD接线正常(使用其他正常板验证接线无误),BOOT0接地,复位。
3.将ST-LINK的1脚(TVCC)和19脚(VDD)均连入板子,无改善。
3.利用ISP下载(BOOT0接高,BOOT1接低)亮灯程序,BOOT恢复后复位小灯正常闪烁(芯片正常,供电正常,程序正常),然后重新利用ISP完全擦除程序(避免SWD功能被代码关闭)。
4.检查Keil设置:器件型号,Flash大小均正确。
5.由于SWD电路十分简单,只有两根线并接上下拉电阻,错误只能出现在板子焊接上。最终发现SWDIO引脚翘起,用指甲按住后ST-LINK连接正常。
以上。