自从主力机器使用MBP以后,家里的唯一的一台Windows机器就是NAS了,一直远程使用NAS在Win下面玩STM MCU。但是低功耗的J3160跑开发还是慢啊,最近终于下决心把开发环境迁移到MacOS并使用完全开源IDE,决定使用STM32CubeMX和System Workbench的组合。折腾了大约一天,遇到了好几个坑,在MacOS和Win10之间来回折腾最终解决了。在此记录一下并分享给大家。
软件版本:
STM32CubeMX V4.25.0
System Workbench V2.4
硬件:麒麟座Mini版
MacOS下遇到的问题:
1.1 Eclipse下载的时候报错:
Info : vid/pid are not identical: 0x0483/0x374B 0x0483/0x3748
1.2 Eclipse下载的时候报错:
Error: init mode failed (unable to connect to the target)
*******************
** OpenOCD init failed **
1.3 Eclipse下载的时候报错:
Error: timed out while waiting for target halted
TARGET: STM32F103RETx.cpu - Not halted
in procedure 'program'
in procedure 'reset' called at file "embedded:startup.tcl", line 490
in procedure 'ocd_bouncer'
** Unable to reset target **
shutdown command invoked
Win下遇到的问题:
2.1 Stlink USB communication error
2.2 No Target Connected
2.3 Error:Flash Download Failed-"Cortex-M3"
2.4 Cannot load flash programming algorithm
因为对STM32CubeMX不熟悉, 然后参考了某网站的教程,该教程里面没有提到SYS设置,而STM32CubeMX默认SYS设置里面的Debug选项默认是No Debug, 然后我就开始了烧写,然后就出现了问题1.1(Info : vid/pid are not identical: 0x0483/0x374B 0x0483/0x3748)和问题1.2 (** OpenOCD init failed **)的错误。未配置SYS就进行烧写导致PA13和PA14引脚被错误设置,所以无法下载程序,错误设置后即便修正了SYS设置(Debug选择Serial Wire)也无法正常下载。搜索了很多网上相关的网页,而且尝试升级了STlink V2的固件 (http://www.st.com/en/development-tools/stsw-link007.html ),都没解决问题1.2 。
而问题1.1的解决比较简单,就是不使用自动生成的cfg配置文件,自定义cfg配置文件并修改其中的 source [find interface/stlink.cfg] 为source [find interface/stlink-v2.cfg] 即可。这两个文件在/Applications/Ac6/SystemWorkbench.app/Contents/Eclipse/plugins/fr.ac6.mcu.debug_2.1.4.201801121207/resources/openocd/st_scripts/interface/下,有兴趣可以看一下,其中一个pid是0x374B,另外一个pid是0x3748,所以使用stlink-v2.cfg这个正确的文件即可,还有一个文件是stlink-v2-1.cfg,里面的pid也不匹配。
问题1.2折腾无果后,然后决定在Win下面尝试一下,因为原先Win下面用Keil是可以的。然后Keil下载麒麟座自带的跑马灯程序的时候,遇到了问题2.1 (Stlink USB communication error),网上有两个方法解决:升级Keil,或者给STlink-v2固件降级(好吧 我两样都做了),低版本固件地址(V2.J20.S4 链接:https://pan.baidu.com/s/1dHlgYwL 密码:6vwr),解决了问题2.1。再次尝试用Keil下载,遇到了问题2.2(No Target Connected)。
其实问题2.2的原因和问题1.2一样,都是因为PA13和PA14引脚被错误设置导致的。于是搜了很久,参考了西城无故事的博客(https://blog.csdn.net/liaodong2010/article/details/52734384 )和周勇的博客( http://zhyong319.blog.163.com/blog/static/6857205201276105311857/),他们的解决方式是下载前手动reset大约0.5s然后有一定概率能正常烧写,但是我在周勇的博客评论中看到一个更简单的方法,那就是把Boot0和Boot1拉高,随意写一个能跑的程序然后就能正常烧写了。
解决了这两个问题以后,再次尝试Keil烧写,遇到了错误2.3和错误2.4,主要原因是因为升级了Keil,板子类型没有选对,在Flash->Configure Falsh Tools配置窗口中,切换到“Utilities"页,按“Setting"按钮进入“Flash download setup"配置窗口,在“Flash download setup"配置窗口点击“Add”按钮,在“Add Flash Programming Algorlthm"窗口中选择STM32F10x Med-density 128k (麒麟座Mini版的处理器是STM32F103CBT6 128k Flash),然后2.3和2.4就都解决了。
然后回到MacOS,再次烧写,遇到1.3错误,解决办法是把配置文件中的 reset_config 这一行改为reset_config none 即可。最后一个问题是,如果在项目名称上点右键,如果直接选择Target-Program chip,我这里无法把最新程序下载到MCU上。不过直接在菜单栏上点击Run是可以下载的。后来发现需要先右键-Build project,然后右键再选择Target-Program chip才可以。所以还是直接菜单栏点击Run最方便。
最后,我把STlink V2的固件升级到最新,全部都能正常工作了。
总结一下:
MacOS下遇到的问题解决方法:
1.1 Eclipse下载的时候报错:
Info : vid/pid are not identical: 0x0483/0x374B 0x0483/0x3748
解决方法:
使用自定义配置文件进行编译,并进行如下修改:
source [find interface/stlink.cfg] 更改为 source [find interface/stlink-v2.cfg]
自定义配置文件方法,直接右键点击 项目名 Run.cfg 文件并改个文件名,然后右键点击项目树里面的项目名称,选择“Propeties”,然后在Run/Debug Settings-选择项目名-Edit-Debugger-User Defined-Browse 那里选择你自己改名的配置文件:
1.2 Eclipse下载的时候报错:
Error: init mode failed (unable to connect to the target)
*******************
** OpenOCD init failed **
解决方法:这里是由于PA13和PA14被错误配置导致的。首先修复STM32CubeMX中的SYS设置,在SYS-Debug中选择Serial Wire。然后拉高Boot0和Boot1烧写一个正常固件,然后拉低他们,就能正常烧写了。
1.3 Eclipse下载的时候报错:
Error: timed out while waiting for target halted
TARGET: STM32F103RETx.cpu - Not halted
in procedure 'program'
in procedure 'reset' called at file "embedded:startup.tcl", line 490
in procedure 'ocd_bouncer'
** Unable to reset target **
shutdown command invoked
解决方法:
修改 * Run.cfg文件,把 reset_config srst_only srst_nogate connect_assert_srst 这一行改为 reset_config none
配置文件自定义方法参考1.1 解决方法。
Win下遇到的问题解决方法:
2.1 Stlink USB communication error
解决方法:更新Keil,或者给STLink V2固件降级。V2.J20.S4 链接:https://pan.baidu.com/s/1dHlgYwL 密码:6vwr
2.2 No Target Connected
解决方法:这里是由于PA13和PA14被错误配置导致的。拉高Boot0和Boot1烧写一个正常固件,然后拉低他们,就能正常烧写了。
2.3 Error:Flash Download Failed-"Cortex-M3"
解决方法:这里是由于芯片类型没有选择正确导致的。在Flash->Configure Falsh Tools配置窗口中,切换到“Utilities"页,按“Setting"按钮进入“Flash download setup"配置窗口,在“Flash download setup"配置窗口点击“Add”按钮,在“Add Flash Programming Algorlthm"窗口中选择正确的芯片型号和Flash大小即可。
2.4 Cannot load flash programming algorithm
解决方法:这里是由于芯片类型没有选择正确导致的。解决方法同上。
上一篇:STM32CubeMX学习教程之七:ADC读取电压并输出到串口
下一篇:MacOS下STM32CubeMX安装文件双击无反应的解决办法
推荐阅读最新更新时间:2024-11-12 19:12