长话短说,由于突然要调试别人画的一块板子,用的是STM32F030调试一个ADC.
开发环境
STM32CubeIDE
基于以前开发单片机的经验,首先选择厂商提供的IDE往往有比较好的体验,加上一年前用keil开发过F103,感觉体验不佳,于是首先选择了STM32CUBE IDE,这个直接上ST官网就可以找到,ST官网还有个软件叫做STM32CubeMX,这个软件的功能是被STM32Cube包含的,因此可以先不用。
下载之后安装stm32cube ide。需要联网下载一些包。然后新建工程,选择使用的单片机,程序会提供HAL库来供开发。引脚功能以及时钟树初始化代码通过图形配置。但是需要注意,这里图形配置修改之后,会覆盖没有写在/*user code begin*/
下的个人代码。
这里只需要了解库函数的使用就行了,实际上功能看代码就可以猜出来。
在这其中遇到一个报错,就是个人代码c文件需要包含STM32硬件功能的时候,需要包含头文件
#include "stm32f0xx_hal.h"//这里这个头文件要放在其他头文件前面,就是一个顺序问题。
//不然会报错一堆未定义。这个问题可能以后编译器会优化吧,目前先记着。
然后需要编译调试。我只有DAP link,但是stm32cube不能直接支持,这个可以用openocd来解决。但是,我遇到的问题是仍然不能正确连接上,这个问题后面说。
Keil MDK
由于连接不上,还是尝试用keil来开发。
网上一大片方法都很繁琐,效率很低,这里说一下一个简单点的方法。
首先上Keil官网下载最新版keil MDK,安装。
然后打开包管理器
网络不好的话会比较慢,直接查找对应单片机,在右侧就可以下载对应的包。
然后新建工程,选择对应的单片机,
点击下一步之后这时候会弹出来一个选择
上面这个环境配置器同样可以在下图这个位置实事实时修改。
首先勾选上CMSIS core,DSP则视需求勾选。然后
勾选上这三项,注意,这里需要有STM32cubeMX来支持,这样的话工程结构和STM32cubeIDE的非常一致。因此需要先到官网安装STM32cubeMX,这个软件需要JRE支持。
安装完成之后,勾选这三项下一步,会提示启动STM32CubeMX,然后可以通过cubeMX来配置初始化代码。同时具有HAL库。这时候开发就变得非常简单。在自动生成的主函数中写自己的代码就可以了。其他的一律不用过多费精力。
debug的使用
Keil 的debug网上有很多教程,流程基本一致,我使用的是SWD下载。这里遇到一点不一样的情况就是需要按着Reset才能找到器件ID,这里也不需要连接Reset引脚,
只需要改成Under reset就可以正常通信了。由于一开始建立工程的时候选择好了器件,这里也不用修改FLash download内的器件选择。
软件使用总结
从一开始写程序到调试完AD,大概花了一个晚上+一个上午的时间,这其中费时间的主要是一个硬件问题,下面说,总体来说,如果不是STM32CubeIDE不能直接支持DAP linker,STM32cubeIDE上手更快,使用也更方便,个人也比较熟悉eclipse系列软件的debug流程。
使用Keil稍微花了点时间,一开始不是很愿意迁移工程,最后决定老老实实看一下用库函数建立工程,发现比网上那些流程简单多了,不过keil的使用仍然不是很顺手,可以考虑一下用vscode的插件。
硬件问题
由于之前从来没有用过STM32做东西,这次这个板子也不是我画的,所以犯了一个错。测试keil连接器件成功之后,使用keil开发每次打开debug都闪退,我一开始没有明白为什么,后来发现是因为Boot0没有下拉。。。下拉之后就能正常开发了。这个实际上花了不少时间。
总结
还是和上面说的那样,善用软件并尝试新方法还是能提高效率的,如果开发只会照着网上的博客来抄,来照着葫芦画瓢,并不能给自己以后的路提供什么经验。