- 最近重新捡起了STM32的开发工作,由于之前一年多的时间一直在从事PC端与Linux下的开发,习惯了VSCode的开发界面以及各种方便的插件,再次打开keil的界面时倍感丑陋。于是花了不少心思配置了VSCode中的代码编写环境,再次特做记录。
Keil编译与下载插件
VSCode的插件商店中其实包含了支持Keil的插件Keil Assistant
,这个插件可以理解为用VSCode给Keil做了一个套壳外衣,可以直接在VSCode的插件商店搜索安装:
值得注意的是,正常使用编译以及下载功能,仍然需要电脑上安装有KeilV5,这里就不在记录详细的安装过程了。插件安装完成后,点击插件旁边的设置按钮,即可设置对应的keil编译器的路径,示例如下:D:\software\Keil_V5\UV4\UV4.exe
由于我不作C51的开发,因此也没有配置相关路径。此后,便可以在VSCode的资源管理器中找到Keil Project的条目:
如果要打开keil项目,通过右侧的添加按钮打开文件浏览选择keil的工程项目uvprojx
文件即可
此后,只需要在keil中配置好debug等设备信息,就可以完全在VSCode中进行代码编写与编译下载了。
其他Debug
目前为止我在完成上述配置后,遇到了两个bug,一并记录在此,如果后续遇到新的问题,我会及时更新。
头文件索引报错
如果仅仅通过Keil Uvision Project打开了工程项目,可能会出现如下的头文件波浪线报警,但是此时按照上述方式编译工程没有任何问题:
这个报错其实是来自VSCode的C/C++插件,由于没有打开项目的文件夹,因此C/C++找不到对应的头文件(Keil插件本身的文件索引是不能提供给C++插件的),此时只需要在VSCode中打开项目的完整文件夹即可
这时检查一下.vscode
文件夹下的c_cpp_properties.json
文件即可
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
// "D:\\software\\Keil_V5\\ARM\\ARMCC\\bin"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE",
"USE_STDPERIPH_DRIVER"
],
"compilerPath": "D:\\software\\mingw64\\bin\\gcc.exe",
"cStandard": "c17",
"cppStandard": "gnu++14",
"intelliSenseMode": "windows-gcc-x64"
}
],
"version": 4
}
注意"includePath"
条目下的内容即可文章来源:https://www.toymoban.com/news/detail-742278.html
GPIO结构体等关键字报错
在解决了头文件索引的报错后,可能还会出现如下报错:
而在keil的文件树中可以看到,该文件在keil中是链接了对应的stm32f10x_acc.h等头文件的
因此怀疑仍然是C/C++插件的索引问题,因此我手动在adc.c
的文件前方加了两行include
,发现波浪线报警大大减少:
那么为什么在keil中adc文件不会报错呢?这些头文件又是如何自动引用的?
原因是在stm32f10x.h头文件中,当定义了USE_STDPERIPH_DRIVER
宏定义时,便会引入stm32f10x_conf.h
头文件,stm32f10x_conf.h
头文件的内容如下
也就是说当我们引stm32f10x.h
并且提前定义了USE_STDPERIPH_DRIVER”\
宏定义,就不需要再引入stm32f10x_xxx.h
的固件库头文件,在Keil中是在C/C++
预处理器设置的USE_STDPERIPH_DRIVER
宏定义
最后的解决方案是:在VSCODE中,在c_cpp_properties.json
中的defines
字段添加预处理宏即可文章来源地址https://www.toymoban.com/news/detail-742278.html
到了这里,关于【STM32】Keil V5联合VSCode配置代码编写与下载环境,解决报错问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!