C++ features ---> Support C++ features,如圖所示:" />

女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用在搭載了RT-Thread系統的STM32平臺上使用C++

GReq_mcu168 ? 來源:玩轉單片機 ? 2019-12-08 10:27 ? 次閱讀

簡介

本文描述了如何使用在搭載了 RT-Thread 系統的 STM32 平臺上使用 C++,包括 C++的配置和應用等。并給出了在STM32F411 NUCLEO開發板上驗證的代碼示例。

硬件平臺簡介

本文基于意法半導體STM32F411 NUCLEO開發板,給出了 C++的具體應用示例代碼,由于RT-Thread上層應用API的通用性,因此這些代碼不局限于具體的硬件平臺,用戶可以輕松將它移植到其它平臺上。

STM32F411 NUCLEO是意法半導體推出的一款基于ARM Cortex-M4內核的開發板,最高主頻為100Mhz,該開發板具有豐富的板載資源,可以充分發揮STM32F411RE 的芯片性能。

STM32F411RE從屬于銷量名列前茅的STM32F4系列,眾所周知,F4是STM32主打高性能和數字信號處理的“輕奢”系列。

“奢侈”在F4作為內核為Cortex-M4 (DSP+FPU)的MCU,可選180MHz 主頻、2M Flash/384KB RAM、Chrom-ART加速器、MPI-DSI接口、延伸到125度的工作溫度、DFSDM數字濾波器以及各種常見的音頻(SAI)、連接(Ethernet、Camera、USB)、控制(CANUARTI2C)、存儲(FMC、2/4/8 bits SPI、SDMMC)外設。

“輕”在價格讓人“輕松”、尺寸“輕巧”(不到3mm*3mm的封裝)、功耗“輕微”。

如何在STM32上使用C++

準備工作

1、下載RT-Thread 源碼

2、下載ENV 工具

3、進入rt-threadspstm32f411-st-nucleo目錄,檢查 BSPrtconfig.py文件和SConstruct文件是否支持C++配置,如下圖所示

檢查rtconfig.py文件中對C++的支持

檢查SConstruct文件中對C++的支持

打開C++支持:

打開Env工具,在Env命令行中輸入menuconfig,進入配置界面,使用menuconfig工具(學習如何使用)配置工程。在menuconfig配置界面依次選擇RT-Thread Components ---> C++ features ---> Support C++ features,如圖所示:

編譯工程:scons --target=mdk51. 生成mdk5工程,將示例代碼附帶的main.cpp替換掉BSP中的main.c并重新加入到工程中,如圖所示:

編譯,下載程序,在終端輸入help命令可以看到test_cpp已經添加成功了。

運行C++程序:

在終端輸入test_cpp運行結果如下圖所示。

C++ 全局對象構造函數的調用

RT-Thread中對全局對象構造函數的實現中,以GNUC為例,在rt-threadcomponentscplusplus目錄下的crt_init.c文件中對C++進行了系統初始化, 在特定的BSP目錄下,連接腳本文件link.lds為C++全局構造函數的代碼分配了段,使C++全局對象構造函數鏈接后能夠存放在指定的段中。如下圖所示:

crt_init.c文件完成了C++系統的初始化工作

C++系統初始化部分:

1RT_WEAKintcplusplus_system_init(void) 2{ 3typedefvoid(*pfunc)(); 4externpfunc__ctors_start__[]; 5externpfunc__ctors_end__[]; 6pfunc*p; 7 8for(p=__ctors_start__;p

在cplusplus_system_init函數中,將全局對象的構造函數依次鏈接到了鏈接腳本文件中為其分配的段中,并且調用了RT-Thread組件自動初始化的宏INIT_COMPONENT_EXPORT,所以在鏈接的時候,C++全局對象構造函數所產生的目標文件就被鏈接到了__ctors_start__和__ctors_end__組成的段中。

鏈接腳本中為C++全局構造函數分配的段部分:

1PROVIDE(__ctors_start__=.); 2KEEP(*(SORT(.init_array.*))) 3KEEP(*(.init_array)) 4PROVIDE(__ctors_end__=.);

__ctors_start__分配了C++全局構造函數段的起始地址,__ctors_end__分配了C++全局構造函數段的結束地址,所以全局構造函數在系統初始化的時候,就會被鏈接到這里分配的段地址中。

RT-Thread C++ 異常說明

同樣,在鏈接腳本文件link.lds中,也為C++異常分配了段地址:

1__exidx_start=.; 2ARM.exidx: 3{ 4*(.ARM.exidx*.gnu.linkonce.armexidx.*) 5_sidata=.; 6}>CODE 7__exidx_end=.;

__exidx_start分配了C++異常的起始地址,__exidx_end分配了C++異常的結束地址,當異常產生的時候,就會被分配到指定的段地址中。

這里以一個C++除零異常的拋出和捕獲為例:

1#include 2 3#defineMIN_VALUE(1e-4) 4#defineIS_DOUBLE_ZERO(d)(abs(d)

當除零異常發生的時候div_func函數會拋出一個異常,在throw_exceptions函數中會去捕獲這個異常。

下載代碼,并在終端輸入throw_exceptions運行結果如下圖所示。

到這一步為止,如何在搭載了RT-Thread系統的STM32平臺上如何使用C++的介紹就結束了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2289

    文章

    11011

    瀏覽量

    362340
  • C++
    C++
    +關注

    關注

    22

    文章

    2117

    瀏覽量

    74777
  • RT-Thread
    +關注

    關注

    32

    文章

    1369

    瀏覽量

    41506

原文標題:在 STM32 上使用 C++ 指南

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    中新社:RT-Thread攜“睿擎平臺”亮相工博會 | 媒體視角

    4月23日,成都國際工業博覽會拉開帷幕。中國新聞網專訪RT-Thread睿賽德,以“國產操作系統再亮劍,睿擎平臺開啟工業新時代”為題,報道“睿擎工業開發
    的頭像 發表于 04-24 11:16 ?331次閱讀
    中新社:<b class='flag-5'>RT-Thread</b>攜“睿擎<b class='flag-5'>平臺</b>”亮相工博會 | 媒體視角

    如何將RT-Thread移植到NXP MCUXPressoIDE

    RT-Thread默認支持的IDE只有IAR 和 Keil, 那如何將RT-Thread移植到NXP MCUXPressoIDE呢?本文內容比較簡單但稍有瑣碎,希望對有需要的小伙伴有所幫助。
    的頭像 發表于 02-13 10:37 ?1720次閱讀
    如何將<b class='flag-5'>RT-Thread</b>移植到NXP MCUXPressoIDE<b class='flag-5'>上</b>

    Deepseek單片機?RT-Thread跑通大語言模型

    前言單片機也能聊天?RT-Thread跑通大語言模型在RT-Thread論壇忽然看到了單片機和大模型對話的文章,想著春節期間看到大語言模型的熱度持續攀升,恰巧手頭有塊RA8D1Vi
    的頭像 發表于 02-07 18:59 ?1309次閱讀
    Deepseek<b class='flag-5'>上</b>單片機?<b class='flag-5'>RT-Thread</b><b class='flag-5'>上</b>跑通大語言模型

    RT-ThreadCAN實踐

    開箱測試RT-Thread官方已完成了對英飛凌XMC7200EVK的移植,通過shell可以看到做好了uart3的console。本文將介紹如何進行RT-ThreadCan移植。接下來我們要完成CAN_FD的驅動移植,并正常啟動RT-T
    的頭像 發表于 11-13 01:03 ?1891次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>上</b>CAN實踐

    課程上線 - RT-Thread應用開發實踐課程上線慕課平臺啦!

    我們非常高興地告訴大家,由廣東機電職業技術學院的老師們制作的,使用《RT-Thread應用開發實踐》作為教材的課程——嵌入式操作系統應用,正式上線慕課平臺啦!歡迎各位想要系統學習
    的頭像 發表于 09-14 08:07 ?581次閱讀
    課程上線 - <b class='flag-5'>RT-Thread</b>應用開發實踐課程上線慕課<b class='flag-5'>平臺</b>啦!

    混合部署 | 在RK3568同時部署RT-Thread和Linux系統-迅為電子

    混合部署 | 在RK3568同時部署RT-Thread和Linux系統-迅為電子
    的頭像 發表于 09-06 15:32 ?706次閱讀
    混合部署 | 在RK3568<b class='flag-5'>上</b>同時部署<b class='flag-5'>RT-Thread</b>和Linux<b class='flag-5'>系統</b>-迅為電子

    MK米客方德SD NAND:STM32平臺上的存儲方案

    STM32平臺上,SD卡的重要性不言而喻,它為嵌入式系統提供必要的數據存儲和讀寫能力。MK米客方德SD作為市場上的一種選擇,因其耐用性、較小的體積以及高速的傳輸性能,在
    的頭像 發表于 08-26 10:23 ?1029次閱讀
    MK米客方德SD NAND:<b class='flag-5'>STM32</b><b class='flag-5'>平臺上</b>的存儲方案

    【QEMU系列】不用開發板運行RT-Thread指南-ARM架構

    成為一個門檻。本文將詳細介紹如何在QEMU虛擬機的Vexpress-A9平臺上運行RT-Thread,幫助開發者在沒有實際硬件開發板的情況下,輕松體驗和學習RT-Th
    的頭像 發表于 08-09 08:35 ?1436次閱讀
    【QEMU系列】不用開發板運行<b class='flag-5'>RT-Thread</b>指南-ARM架構

    2024 RT-Thread全球巡回 線下培訓火熱來襲!

    親愛的RT-Thread社區成員們:我們非常高興地宣布,2024年RT-Thread全球開發者線下培訓即將拉開帷幕!24年全球巡回培訓將覆蓋超10座城市及國家,為開發者提供一個深入學習RT-Thread嵌入式開發的絕佳機會。
    的頭像 發表于 08-07 08:35 ?2411次閱讀
    2024 <b class='flag-5'>RT-Thread</b>全球巡回 線下培訓火熱來襲!

    【好書推薦】RT-Thread設備驅動開發指南

    近年來國內芯片產業和物聯網產業的快速崛起,行業發展迫切需要更多人才,尤其需要掌握嵌入式操作系統等底層技術的人才。隨著RT-Thread被更廣泛地應用于行業中,開發者對嵌入式驅動開發的需求越來越
    的頭像 發表于 08-01 08:35 ?1156次閱讀
    【好書推薦】<b class='flag-5'>RT-Thread</b>設備驅動開發指南

    RT-Thread 新里程碑達成——GitHub Star 破萬!

    RT-Thread實時操作系統開源項目在GitHub的star數量突破一萬!截止發文,RT-Thread作為實時操作系統在業界Star數量
    的頭像 發表于 07-04 08:35 ?696次閱讀
    <b class='flag-5'>RT-Thread</b> 新里程碑達成——GitHub Star 破萬!

    基于 RT-Thread專業版的EtherCAT主站方案

    特點。在RT-Thread實時操作系統運行EtherCAT主站協議,大大提高了實時性,極大降低了循環同步抖動時間,可滿足各種對實時性要求苛刻的應用場景。以下是在瑞
    的頭像 發表于 06-19 08:35 ?1679次閱讀
    基于 <b class='flag-5'>RT-Thread</b>專業版的EtherCAT主站方案

    杭州站RT-Thread混合部署Workshop圓滿落幕!

    參與。非常感謝睿賽德科技工程師張康帶來精彩的技術講解,并與大家深入探討了在瑞芯微RK3568平臺上實現RT-Thread與Linux的高效混合運行方法。本次Wor
    的頭像 發表于 06-08 08:35 ?637次閱讀
    杭州站<b class='flag-5'>RT-Thread</b>混合部署Workshop圓滿落幕!

    開發者分享 | 基于先楫RT-Thread BSP,使用CLion開發應用

    搭載RT-Thread實時操作系統,使用RT-ThreadStudio進行開發。RT-Thread是一個偉大的操作
    的頭像 發表于 06-07 08:17 ?3604次閱讀
    開發者分享 | 基于先楫<b class='flag-5'>RT-Thread</b> BSP,使用CLion開發應用

    使用RT-Thread的scons構建系統來編譯ESP32C3固件?

    我正在嘗試使用 RT-Thread 的 scons 構建系統來編譯 ESP32C3 固件。目前 ESP32C3 的 bsp 已經被社區小伙伴們 PR 到
    發表于 06-07 06:18