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