keil版本为:V5.25.30.0 下载器为ST-LINK 1.如下图,keil提示Error: Flash Download failed - Target DLL has been cancelled 2.原因是如下图中的ST-LINK的TVCC没有接到电路板的3.3V 如下图,当黄色线接上就可以正常下载,如果黄色线不接到STLINK,就会出现Target DLL has been cancelled的错误。 3.再探讨下STLINK的VDD和TVCC的区别。 如下图TVCC是1.2脚,当STLINK插上USB时,TVCC没有3.3V输出 VDD是19脚,当STLINK插上USB时,VDD有3.3V输出 当采用SW模式下载程序的时候: TVCC必须要接到3.3V才能下载成功,否则就会报错Error: Flash Download failed - Target DLL has been cancelled VDD不用接
那么能不能将VDD接到TVCC,从而给单片机上电呢,我试了下,理论上是可行的,但一般不这么做,因为这个3.3V驱动能力不强。 我用正点原子战舰的板子测试,当VDD接到TVCC,那么VDD和TVCC都会被拉到2V左右,keil也可以成功下载代码,如下图,VDD通过白线给单片机3.3V的电压,然后通过黄线给到TVCC。但是LED并不会被点亮,个人觉得是电压太低。
翻看STM32的手册可以看到STM32的工作电压是2V-3.6V,所以VDD和TVCC都是两点几V也是可以让STM32程序下载成功的。 综上所述: 1.TVCC本身是没有电压的,下载程序的时候需要连接到电路板的3.3V。 2.VDD可以给单片机供电,从而下载程序。同时如果电路板上以及单独供电了,VDD就不要连接到开发板上了,避免两个3.3V产生冲突。所以用一个词来形容,可以用但没必要。VDD这个脚就当它不存在就行了,不要去使用。 PS:附上标准的JTAG接口,可以看到19脚是不接的,至于为什么STLINK要将19脚作为VDD给3.3V输出,我没太理解。