@zzzc18
2020-02-09T06:47:49.000000Z
字数 2465
阅读 1434
大创
使用CubeMX+SW4STM32
使用Ubuntu18,配套最新版的ROS
我改主意了,IDE不够香
用cubemx生成makefile然后直接make,用vscode编辑
要安装交叉编译器gcc-arm-none-eabi
,然后直接make就行
关于烧写,用https://github.com/texane/stlink.git似乎是不行的。。。
现在打算用STM32CubeProCgrammer
tm终于搞成了。。。
去st官网下载STM32CubeMX,STM32CubeProCgrammer,解压后整个包(含exe)给整到linux下(我是win下载好挪到ubuntu虚拟机里了),直接运行.linux即可安装,一路next
鉴于STM32CubeProCgrammer用的是oracle的jdk,我们要去官网上下载并安装对应的linuxx64最新版,此时是jdk-8u202-linux-x64.tar.gz
https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html
下载后
$ sudo tar zxvf jdk-8u202-linux-x64.tar.gz -C /usr/lib/jvm
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_202/bin/java 300
$ sudo update-alternatives --config java
#随后根据提示进行,选择刚装那个
对java一窍不通的我:这部分来源于https://blog.csdn.net/lu_embedded/article/details/103032083
这个是安装stlink的前置要求
$ sudo apt install libusb-1.0-0-dev
交叉编译器大概就是在A平台的主机下编译出可以在B平台主机下运行的可执行文件。B平台本身可能根本不具备操作系统,更不用说编译器了,所以这个很有必要。现在就是要在linux下生成cortex-M3的bin
ubuntu18下很简单
$ sudo apt install gcc-arm-none-eabi
我忘了。。。如果跑不起来现搜吧
此时STM32CubeMX,STM32CubeProCgrammer应当可以正常运行
我使用的是stlink-v2烧录器,github有开源项目https://github.com/texane/stlink.git
clone下来之后直接make,sudo make install就好
中间我不采用IDE,是因为实在是不太会用。。。
我尝试过SW4STM32,感觉不友好,功能方面可以保障,就是我用不惯。如果想用IDE也直接去官网下SW4STM32,是Eclipse。
目前采用VSCode编辑代码,确实比较好用,这部分的配置见https://www.zybuluo.com/zzzc18/note/1645112
其他地方都一样,这里不做演示,只不过最后不用生成对应IDE的,直接生成makefile版
随便写个点灯啥的,然后直接在目录下make,会生成build文件夹,里面有example.bin,example.elf和example.hex,bin和hex可以用于烧写,elf可以用于调试。
到了最坑的地方
打开STM32CubeProCgrammer
图我不好加,参照官方文档https://www.st.com/content/ccc/resource/technical/document/user_manual/group0/76/3e/bd/0d/cf/4d/45/25/DM00403500/files/DM00403500.pdf/jcr:content/translations/zh.DM00403500.pdf
实际上你能看出来大概咋用
如果前面装的驱动没问题,右侧应该能检测出来。
升级固件么,点Fireware upgrade,之后应该能显示出对应的烧录器信息,点update,如果报错说不行(not in dfu),要插拔一下,并且不能连stm32板子。再点下面的upgrade,进度条走完就好了
我折腾了不知道多久,一直以为是没有板子驱动,或者干脆不支持我这块小板子,导致连不上,显不出板子信息,后来发现不是。。。绝望地漫无目的的搜索后,在官方论坛上看见一个说法,push and hold reset,click connect,wait for a second,and release reset。照着做了一遍居然真成了。。。
中间停的时间不能太短,不然不行
这操作为啥手册上不写??这咋推敲得出来???
不过里面似乎是有一定原理的,估计事后证明是我naive
软件内打开之前生成的example.bin或example.hex,点Download就行了,点板子上的reset就开始运行了