• 最近重新捡起了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"条目下的内容即可

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字段添加预处理宏即可在这里插入图片描述

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐