问题
在使用vscode+keil开发stm32程序时,发现有时候vscode的自动补全功能失效,且problem窗口一直在报错。variable “uint32_t” is not a type name
uint32_t 定义位置
uint32_t 实际是在D:/Keil_v5/ARM/ARMCC/include/stdint.h中定义的。将D:/Keil_v5/ARM/ARMCC/include添加到系统include目录。
将其添加到系统引用路径下,发现仍然报错。
vscode添加配置宏定义
在添加了stdint.h目录后,发现仍然报错了。于是网上搜索,有的说要在配置文件中添加__CC_ARM.添加后发现还是报错了。最后仔细研究了下keil工程里的宏定义,发现定义了,USE_HAL_DRIVER,STM32F407xx,_STM32
于是将上述宏定义添加到了vscode项目的配置文件中,添加STM32F407xx后,报错消失了。故再vscode项目中需要见对应单片机型号的宏定义才能不报错了。但是问题在于,uint16 int32这些都没有报错。而这些类型的定义也都在在stdint.h中。这个问题还有待研究。
宏定义配置
在项目的c_cpp_properties.json中添加单片机类型宏定义,即可正常
wx:jack_yi_null 获取vscode配置文件