在vs上配置嵌入式開(kāi)發(fā)環(huán)境小技巧
esp32是一塊單片機(jī),自帶藍(lán)牙和wifi模塊,功耗低功能全。我不太懂嵌入式,以前只玩過(guò)一點(diǎn)點(diǎn)stm32和c51,如果接下來(lái)的發(fā)言顯得少見(jiàn)多怪,請(qǐng)多包涵。讓我感到驚喜的是,在esp32的sdk上,我?guī)缀蹩梢允褂煤艽笠徊糠值膗crt函數(shù)和posix函數(shù)。比如我可以使用c語(yǔ)言的輸出函數(shù),日志和標(biāo)準(zhǔn)輸出會(huì)自動(dòng)從串口0發(fā)送??梢允褂胏++的線程相關(guān)功能,他們會(huì)自動(dòng)交給sdk中整合好的FreeRTOS處理。甚至可以使用c語(yǔ)言的文件相關(guān)函數(shù),如果正確配置的話,文件相關(guān)的部分會(huì)自動(dòng)交給內(nèi)置的FatFs庫(kù)處理。我喜歡這種在嵌入式系統(tǒng)上寫程序如同我在linux上寫程序一樣的感覺(jué)。

唯一讓我不爽的是,我的C++插件似乎和我的代碼之間配合的不是很默契,它總會(huì)虛空?qǐng)?bào)錯(cuò),補(bǔ)全功能也總是處在薛定諤狀態(tài)。經(jīng)過(guò)一段時(shí)間,我發(fā)現(xiàn)了其中的技巧。
首先,找到cmake生成的compile_commands.json文件,將它配置進(jìn)去

"compileCommands": "${workspaceFolder}/build/compile_commands.json"
這會(huì)讓intelliSense正確的找到頭文件。
然后需要配置compilerPath,默認(rèn)的compilerPath應(yīng)該是微軟的cl,你需要將它配置成實(shí)際使用的編譯器,這樣intelliSense才能找到正確的posix頭文件和C/C++標(biāo)準(zhǔn)頭文件。
intelliSenseMode也需要根據(jù)編譯器修改成對(duì)應(yīng)的模式。我選擇了“微系統(tǒng)-gcc-arm處理器”這個(gè)組合,因?yàn)槁?tīng)起來(lái)很合適。
我修改了這些配置之后,我的intelliSense正常工作了。