一、问题描述
使用 HAL 库新建 STM32 工程后,使用 vsCode 打开工程文件夹,会提示找不到头文件,以及比变量没有定义,如 uint32_t 不是一个有效类型等错误提示。如下图所示:
二、原因分析
vsCode 中没有配置头文件路径以及没有设置 HAL 使用的相关宏定义
三、解决方法
打开 C/C++ 扩展 UI 配置界面,配置头文件路径以及宏定义
如上图所示,在包含路径中,配置如下:
${workspaceFolder}/**
// 下述两个文件路径为 keil5 的安装路径,根据实际安装位置修改
D:\Keil_v5\ARM\ARMCC\include
D:\Keil_v5\Packs\ARM\CMSIS\5.7.0\CMSIS\Include
在定义中,新增如下配置:
// 我使用的 keil5 和 STM32F767,所以选择如下配置
__CC_ARM
STM32F767xx
USE_HAL_DRIVER
配置完成后,vsCode 就能正确提示了
当然也可以直接配置c_cpp_properties.json
文件,
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${default}",
"${workspaceFolder}/**",
"D:\\Keil_v5\\ARM\\ARMCC\\include",
"D:\\Keil_v5\\Packs\\ARM\\CMSIS\\5.7.0\\CMSIS\\Include"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE",
"__CC_ARM",
"STM32F767xx",
"USE_HAL_DRIVER"
],
"windowsSdkVersion": "10.0.19041.0",
"compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30037/bin/Hostx64/x64/cl.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-msvc-x64"
}
],
"version": 4
}