1,為什麽很少用C++開發單片機?
不知道妳對面向過程和面向對象了解多少?
C語言是面向過程的語言,C++是面向對象的編程語言。結合本文,面向過程編程與面向對象編程相比,代碼更少,運行效率更高。
因此,與C++相比,C語言的代碼量更小,運行速度更快。
當然,這是C相對於C++而言的。其實匯編和C相比,代碼量更小,運行速度更快。可以參考文章:用匯編和用C語言寫流水燈程序有什麽區別?
因為單片機的RAM資源比較少,運行速度比較低,所以妳會發現很少有人用C++在單片機上開發項目。
事實上,隨著單片機存儲資源和運行速度的提高,壹些工程師開始用C++開發單片機項目。
2.準備工作
用C語言開發STM32是相當常見的。本文將不討論安裝開發環境和創建項目等步驟。
3.使用說明
在Keil MDK環境下,使用Arm編譯器,很多在線教程都是用V6編譯的。事實上,V5和V6版本都支持C++編程語言。
將C++源代碼添加到項目中(例如:main.cpp)。
在V5和V6中,項目配置選項有壹些不同:
4.定義LED類別。
本文默認大家已經掌握了用C語言開發STM32流水燈的知識,並直接描述了C++代碼的內容。
本文講壹個很基礎的例子“LED燈”,比如創建壹個main.cpp源代碼文件。
首先,定義壹個LED類:
class LED_Class{
然後定義私有成員(當然公有也可以):
class LED_Class{
第三,使用的函數:初始化GPIO,打開和關閉LED等。
class LED_Class{
這段代碼很簡單嗎?就算妳不懂C++,只要妳懂C語言,我相信妳也能看懂。
5、流水燈實現(主要功能)
使用C++的思路和C語言類似,先初始化,再實現:
int main(void)
還有壹個初始化:
int main(void)
編譯的代碼量相對較大:
然後,如果有開發板,直接下載運行LED閃爍現象。