STM32 进阶教程 7 - C与C++混合编程
前言
在嵌入式開發(fā)過程中經(jīng)常會(huì)用到第三個(gè)芯片/設(shè)備,這些第三方的芯片提供的DEMO程序或驅(qū)動(dòng)程序有時(shí)候是C++,如果先前的系統(tǒng)用C語言寫的就會(huì)出現(xiàn)點(diǎn)問題,往往需先將C++的驅(qū)動(dòng)程序自已手動(dòng)改成C語言再用,本節(jié)給大家介給一下如何在KEL MDK環(huán)境中實(shí)現(xiàn)C與C++混合編程。本節(jié)將在《STM32 進(jìn)階教程 4 -? 軟件實(shí)現(xiàn)高精度延時(shí) 2》基礎(chǔ)上將Delay.c變成C++實(shí)現(xiàn)的Delay.cpp編代碼實(shí)現(xiàn),實(shí)現(xiàn)一樣的延時(shí)效果。
?
示例詳解
基于硬件平臺(tái): STM32F10C8T6最小系統(tǒng)板, MCU 的型號(hào)是?STM32F103c8t6, 使用stm32cubemx 工具自動(dòng)產(chǎn)生的配置工程,使用KEIL5編譯代碼。
?
?
本示例所用的最小系統(tǒng)板原理圖:
?
?
?
Delay.h文件放在INC文件夾下即可。
?
1. 帶有C++語法(如使用了類特性)的源文件其文件名必須是.CPP后輟,如本例中的Delay.cpp文件。
2. 需要調(diào)用由C++封裝的接口的源程序其文件名也應(yīng)是.CPP后輟,如本例中的main.cpp因其要包涵delay.h頭文件,且delay.h中又包函數(shù)了C++語法/關(guān)鍵字。
3.如果要使用C++,工程就不能再使用MicroLIB庫(kù)了,因?yàn)镸icroLIB不支持C++:
4.如果工程中以.CPP為后輟的源文件中有全局函數(shù)或變量(不在類中的),可以在其頭文件中以如下方式導(dǎo)出函數(shù)接口供其它模塊/文件調(diào)用:
5.網(wǎng)上有些朋友說要把工程的 –C99特性去掉,在高版本的KEIL中C99特性其實(shí)是可以不去的!下面是筆者親自試過的三種可以實(shí)現(xiàn)C與C++混合編程的工程相關(guān)配置(如果C99與GUN兩個(gè)都不選會(huì)有問題!!):
?
?
讓程序全速運(yùn)行,查看PC13引腳上的波形:
與《STM32 進(jìn)階教程 4 -? 軟件實(shí)現(xiàn)高精度延時(shí) 2》節(jié)的C語實(shí)現(xiàn)的延時(shí)開銷會(huì)大一點(diǎn)點(diǎn):
?
通過上面的實(shí)例,我們已基本學(xué)會(huì)基于keil MDK平臺(tái)的stm32 中C與 C++混合編程的實(shí)現(xiàn)過程,是不是很簡(jiǎn)單,學(xué)完本節(jié)內(nèi)容后再遇到C++編寫的芯片驅(qū)動(dòng)或DEMO就可以可以很快移植 到我們的工程中了呢。
OK,本期實(shí)驗(yàn)完成!下期見!同時(shí)如果大家有什么疑問或是有想了解的其它內(nèi)容,也歡迎大家留言!!最后喜歡這個(gè)公眾號(hào)的同學(xué)們記得加關(guān)注了,會(huì)有不定期技術(shù)干貨推出!!
文中源碼資料下載,在公眾號(hào)里給十三發(fā)消息:
下載|STM32進(jìn)階教程 7
?
關(guān)注十三公眾號(hào)
?
總結(jié)
以上是生活随笔為你收集整理的STM32 进阶教程 7 - C与C++混合编程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32 进阶教程 6 - 汇编与C
- 下一篇: 一起学nRF51xx 22 - 实现一