- 最近重新?lián)炱鹆薙TM32的開發(fā)工作,由于之前一年多的時間一直在從事PC端與Linux下的開發(fā),習慣了VSCode的開發(fā)界面以及各種方便的插件,再次打開keil的界面時倍感丑陋。于是花了不少心思配置了VSCode中的代碼編寫環(huán)境,再次特做記錄。
Keil編譯與下載插件
VSCode的插件商店中其實包含了支持Keil的插件Keil Assistant
,這個插件可以理解為用VSCode給Keil做了一個套殼外衣,可以直接在VSCode的插件商店搜索安裝:
值得注意的是,正常使用編譯以及下載功能,仍然需要電腦上安裝有KeilV5,這里就不在記錄詳細的安裝過程了。插件安裝完成后,點擊插件旁邊的設(shè)置按鈕,即可設(shè)置對應的keil編譯器的路徑,示例如下:D:\software\Keil_V5\UV4\UV4.exe
由于我不作C51的開發(fā),因此也沒有配置相關(guān)路徑。此后,便可以在VSCode的資源管理器中找到Keil Project的條目:
如果要打開keil項目,通過右側(cè)的添加按鈕打開文件瀏覽選擇keil的工程項目uvprojx
文件即可
此后,只需要在keil中配置好debug等設(shè)備信息,就可以完全在VSCode中進行代碼編寫與編譯下載了。
其他Debug
目前為止我在完成上述配置后,遇到了兩個bug,一并記錄在此,如果后續(xù)遇到新的問題,我會及時更新。
頭文件索引報錯
如果僅僅通過Keil Uvision Project打開了工程項目,可能會出現(xiàn)如下的頭文件波浪線報警,但是此時按照上述方式編譯工程沒有任何問題:
這個報錯其實是來自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"
條目下的內(nèi)容即可文章來源:http://www.zghlxwxcb.cn/news/detail-742278.html
GPIO結(jié)構(gòu)體等關(guān)鍵字報錯
在解決了頭文件索引的報錯后,可能還會出現(xiàn)如下報錯:
而在keil的文件樹中可以看到,該文件在keil中是鏈接了對應的stm32f10x_acc.h等頭文件的
因此懷疑仍然是C/C++插件的索引問題,因此我手動在adc.c
的文件前方加了兩行include
,發(fā)現(xiàn)波浪線報警大大減少:
那么為什么在keil中adc文件不會報錯呢?這些頭文件又是如何自動引用的?
原因是在stm32f10x.h頭文件中,當定義了USE_STDPERIPH_DRIVER
宏定義時,便會引入stm32f10x_conf.h
頭文件,stm32f10x_conf.h
頭文件的內(nèi)容如下
也就是說當我們引stm32f10x.h
并且提前定義了USE_STDPERIPH_DRIVER”\
宏定義,就不需要再引入stm32f10x_xxx.h
的固件庫頭文件,在Keil中是在C/C++
預處理器設(shè)置的USE_STDPERIPH_DRIVER
宏定義
最后的解決方案是:在VSCODE中,在c_cpp_properties.json
中的defines
字段添加預處理宏即可文章來源地址http://www.zghlxwxcb.cn/news/detail-742278.html
到了這里,關(guān)于【STM32】Keil V5聯(lián)合VSCode配置代碼編寫與下載環(huán)境,解決報錯問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!