Keil5 STM32 C++开发 ARM V6编译器的使用教程
Keil5更新之后,開始支持ARM V6編譯器,新版本的編譯器對C++有了更多的支持,在編譯方面也做了很多的改善,具體的沒有詳細了解,本文只是對STM32 開發下,使用V6版本的編譯器進行STM32的C++開發作一個記錄,方便和大家交流和參考。至于說為什么STM32要C++開發,這個沒有解釋,只是個人覺得C++比C有更多的方便,使得編程更加的容易,C++有更多的生態....
開始上教程:Keil5的安裝和破解以及STM32 pack庫的安裝不在本文范圍之內,需要的話請自己百度,網上以及有了很多的教程。
筆者打開以前的STM32 工程,想自己通過更改編譯器版本實現,結果發現編譯之后會出現很多的錯誤,故還是采取Keil5的建立工程方式來建立新的STM32工程。
項目概覽
第一步:建立Keil5工程-》配置STM32類型。
第二步:STM32工程文件的配置,CMSIS需要勾選CORE,然后在Device下選中STM32 的啟動Startup,最后就是選擇需要外設。(勾選過程全部是綠色為有效,如果出現黃色,可能是有相關的依賴性沒有選中)
第三步:切換到V6編譯器,同時對C/C++進行配置
注意:正常情況下按照上述步驟,不需要進行額外編譯預處理的宏定義,比如定義STM32的芯片密度類型和外設宏等
第四步:程序的編寫:建立main入口,可以行建立main.cpp,或者main.c,注意要檢查文件的類型是不是C++文件類型。然后就可以按照C++方式進行STM32開發,把各種操作包裝到C++類里面,進行更方便的開發。
第五步:注意事項:如果在編譯的過程中,編譯器提示不能識別 class之類關鍵字,則需要檢查相關的類的頭文件的類型是不是C++類型,具體如下:
最后,簡單對C++的Vector 和lambda進行了測試,給出簡單的代碼串口打印輸出:
std::string str="Command ends with '$'\n";
str+="Baude ratio is :115200\n";
str+="Firmware version:1.0\n";
str+="======================\n";
UsartHelper.UsartInit();
UsartHelper.SerialEvent.AttachHandler(this,&System::SerialHandler);
UsartHelper.log(str,false); TickerHelper.TickerInit();
TickerHelper.SetIntervalms(1500);
TickerHelper.Elapsed.AttachHandler(this,&System::TickerElapsed); //TickerHelper.Start(); std::vector<std::string> vec;
vec.push_back("zhangliang");
vec.push_back("lijie"); auto tmpx = vec.at(0);
UsartHelper.log(tmpx);
UsartHelper.log(vec.at(1)); auto pfun=[](){UsartHelper.log("this is lambda expression");};
pfun();
測試結果串口打印出來如下,可以看到都可以很好執行了。
在最后,祝大家使用C++開發STM32 愉快,有任何的問題可以和我交流,或者大家相互請教,有錯誤或者其他請告知,謝謝!
總結
以上是生活随笔為你收集整理的Keil5 STM32 C++开发 ARM V6编译器的使用教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: io流概述-一切皆为字节
- 下一篇: MarkDownPad 注册码