cuitech-軟體練習-建立通用庫-大綱 (echoiot.com)
這篇不做強制要求,感興趣的同學可以了解。
目前我接觸過的大部分微控制器ide都是支援c++的基礎特性的。(除了51
c++中相對來說更強調封裝性一點,比如類啊,namespace啊,還有inline啊
對於微控制器來說,使用c++最大的優點是可以很快速的移植網上海量的arduino庫,
因為arduino就是c++的一層介面
ps:由於微控制器並沒有很大的記憶體。也沒有專門的記憶體管理,所以一般程式設計還是推薦使用靜態的資料,不要使用malloc。即使是實時作業系統作用也不大,可以當做是了解系統的一環去學習吧。平時編寫微控制器還是少用malloc。
當你決定使用c++的時候,意味著介面層最好也是使用c++編寫的,不使用c++也是可以的,但是要被c++呼叫的標頭檔案中屬於c的內容要加上像這樣的包著
#ifdef __cplusplus
extern
"c"#endif
接下來就來嘗試把我們的整個通用庫轉換為c++吧
1.首先我在當前的例項專案上建立cpp的分支,並且子模組部分也建立了cpp專案的分支
這篇cpp教程就會在這個分支下 進行
2、把所有庫內檔案都變成cpp
3.去nativeinte***ce.h,也就是我們存放所有原生介面的標頭檔案裡。給它包上上面所說的
4.其實到此為止我們已經轉變為了c++了
5.接下來讓我們的矩陣鍵盤更加c++一點
由於矩陣鍵盤這種,一般只可能出現乙個,也就是所謂的單例,所以我這裡有兩種寫法,
乙個是namespace,乙個是class
先來試試namespace的
keypad.h中
keypad.cpp中
keypad_drv.h中
keypad_stm32h7_hal.cpp中
像這樣之後
在keypad內部邏輯呼叫內部驅動可以直接執行drv::readrow() drv::readcol()
另外順帶一提的是。像這裡mymain中的mymainevent函式是要被main.c這個c語言呼叫的。所以我們的mymain.h裡不要include一些c++的內容,我這邊為了防止混淆,把它重新命名成mymain_c.h
至此為止已經完成了。
接下來我們來試試c++的class版本的,這邊我直接複製keypad部分,並且改為classkeypad
這一次它長這樣
cpp檔案裡呢是這樣
然後去標頭檔案中新增驅動層函式
由於驅動層是不希望暴露給外部的。所以我們放在private
然後對應的cpp
那麼這裡我們怎麼去使用這個庫呢
內部直接呼叫或通過this呼叫
外部應用層
首先通過getinstance獲取單例指標,然後呼叫scan();
至此,已經完成了
卡爾曼濾波在微控制器上的使用
ifndef kalman h define kalman h extern kalmangain 卡爾曼增益 extern estimatecovariance 估計協方差 extern measurecovariance 測量協方差 extern estimatevalue 估計值 extern...
微控制器上課總結
一 繪圖,畫板 2g,3g,4g均指通道載波的頻率。手工pcb和工業 pcb的區別 1.多了一層鋪油。2.多了一層絲印。一面有,一面沒有,叫作單層版。電阻 r開頭 電容 c開頭 繪圖軟體 1.民用 protel protel99se protel dxp altium 2.軍用,公司用 cadend...
微控制器上電復位時間 微控制器的復位
一 復位電路 剛剛接通電源的微控制器內部處於不穩定的狀態,cpu無法正常運轉。因此,就需要進行微控制器狀態初始化,這就叫做復位。微控制器帶有復位訊號輸入引腳,可以將這個訊號調至低電平狀態後讓微控制器復位。也就是說通過輸入復位訊號來徹底叫醒微控制器進入工作狀態。接下來講解一下復位的時序 如下圖 只有在...