色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

5RJg_mcuworld ? 來源:YXQ ? 2019-06-20 14:04 ? 次閱讀

本文描述了如何使用在搭載了 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}>CODE7__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
    +關注

    關注

    2270

    文章

    10923

    瀏覽量

    357035
  • C++
    C++
    +關注

    關注

    22

    文章

    2114

    瀏覽量

    73785

原文標題:如何在搭載了RT-Thread系統的STM32平臺上使用C++?

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    清華大學出版社推出RT-Thread新作,助力嵌入式開發人才培養

    RT-Thread第16本權威著作,助力嵌入式開發人才培養近日,清華大學出版社出版由楊衛波、莊友誼、阮秀凱老師編寫的最新教材——《嵌入式系統
    的頭像 發表于 01-16 19:07 ?72次閱讀
    清華大學出版社推出<b class='flag-5'>RT-Thread</b>新作,助力<b class='flag-5'>嵌入式</b>開發人才培養

    意法半導體STM32支持RT-Thread開源4+服務,助力企業用戶加速嵌入式開發

    嵌入式系統和物聯網技術的快速發展使得企業對高效、穩定的嵌入式解決方案需求愈加迫切。STM32加入RT-Thread開源4+服務生態,這一合作
    的頭像 發表于 11-26 01:04 ?435次閱讀
    意法半導體<b class='flag-5'>STM32</b>支持<b class='flag-5'>RT-Thread</b>開源4+服務,助力企業用戶加速<b class='flag-5'>嵌入式</b>開發

    跟著RT-Thread嵌入式?我們開班

    RT-Thread官方即將發起為期三天的嵌入式操作系統專業培訓班!本次培訓將會深入講解RT-Thread嵌入式實時操作
    的頭像 發表于 10-22 08:05 ?252次閱讀
    跟著<b class='flag-5'>RT-Thread</b>學<b class='flag-5'>嵌入式</b>?我們開班<b class='flag-5'>了</b>!

    新書發布——《RT-Thread嵌入式實時操作系統內核、驅動和應用開發技術》

    我們非常高興地宣布,由鄭苗秀、沈鴻飛和廖建尚編著的《RT-Thread嵌入式實時操作系統內核、驅動和應用開發技術》一書正式發布。本書的編寫團隊由多位在嵌入式和實時操作
    的頭像 發表于 09-03 08:06 ?693次閱讀
    新書發布——《<b class='flag-5'>RT-Thread</b><b class='flag-5'>嵌入式</b>實時操作<b class='flag-5'>系統</b>內核、驅動和應用開發技術》

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

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

    RT-Thread全球嵌入式電子設計大賽

    大賽背景RT-Thread嵌入式電子設計大賽旨在匯聚全球嵌入式系統開發者和學生,通過實際項目展示他們在物聯網、智能設備等領域的創新和技術實力。本次大賽提供
    的頭像 發表于 06-20 08:35 ?910次閱讀
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>嵌入式</b>電子設計大賽

    6月6日杭州站RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    嵌入式軟件工程師郭占鑫老師為您講解有關技術知識和實踐經驗。通過本次workshop能深入理解RT-Thread專業版與混合部署的潛力,在RK3568平臺上提升系統實時
    的頭像 發表于 05-28 08:35 ?468次閱讀
    6月6日杭州站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    5月16日南京站RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    嵌入式軟件工程師郭占鑫老師為您講解有關技術知識和實踐經驗。通過本次workshop能深入理解RT-Thread專業版與混合部署的潛力,在RK3568平臺上提升系統
    的頭像 發表于 05-01 08:35 ?404次閱讀
    5月16日南京站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    北京站RT-Thread混合部署Workshop圓滿結束!

    workshop特別邀請了資深嵌入式工程師郭占鑫,為參與者提供深入淺出的技術分享,同大家一起深度探討了如何在瑞芯微RK3568平臺上實現RT-Th
    的頭像 發表于 04-29 08:35 ?441次閱讀
    北京站<b class='flag-5'>RT-Thread</b>混合部署Workshop圓滿結束!

    RT-Thread混合部署Workshop北京站來啦!

    嵌入式軟件工程師郭占鑫老師為您講解有關技術知識和實踐經驗。通過本次workshop能深入理解RT-Thread專業版與混合部署的潛力,在RK3568平臺上提升系統
    的頭像 發表于 04-19 08:34 ?465次閱讀
    <b class='flag-5'>RT-Thread</b>混合部署Workshop北京站來啦!

    4月25日北京站RT-Thread線下workshop,探索RT-Thread混合部署新模式

    嵌入式軟件工程師郭占鑫老師為您講解有關技術知識和實踐經驗。通過本次workshop能深入理解RT-Thread專業版與混合部署的潛力,在RK3568平臺上提升系統
    的頭像 發表于 04-16 08:35 ?445次閱讀
    4月25日北京站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式

    【4月10日-深圳-workshop】RT-Thread帶你探索混合部署新模式

    嵌入式軟件工程師農曉明老師為您講解有關技術知識和實踐經驗。通過本次workshop能深入理解RT-Thread專業版與混合部署的潛力,在RK3568平臺上提升系統
    的頭像 發表于 04-04 08:34 ?370次閱讀
    【4月10日-深圳-workshop】<b class='flag-5'>RT-Thread</b>帶你探索混合部署新模式

    4月10日深圳場RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    4月10日我們將在深圳福田舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現同時運行RT-Thread和linux,本次workshop邀請到RT-Thread
    的頭像 發表于 03-27 11:36 ?863次閱讀
    4月10日深圳場<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    4月10日深圳場RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    嵌入式軟件工程師農曉明老師為您講解有關技術知識和實踐經驗。通過本次workshop能深入理解RT-Thread專業版與混合部署的潛力,在RK3568平臺上提升系統
    的頭像 發表于 03-27 08:34 ?555次閱讀
    4月10日深圳場<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    就在本周四!探索RT-Thread混合部署新模式!

    嵌入式軟件工程師郭老師為您講解有關技術知識和實踐經驗。通過本次workshop能深入理解RT-Thread專業版與混合部署的潛力,在RK3568平臺上提升系統實時性
    的頭像 發表于 03-20 08:34 ?593次閱讀
    就在本周四!探索<b class='flag-5'>RT-Thread</b>混合部署新模式!
    主站蜘蛛池模板: 亚洲免费成人| 国产精品爽爽久久久久久无码| 九九热视频 这里有精品| 伊人久久综合热青草| 免费看a毛片| 草699一码二码三码四码| 小夫妻天天恶战| 老阿姨才是最有V味的直播| av亚洲色天堂2017| 忘忧草研究所 麻豆| 久久久精品3d动漫一区二区三区| AV福利无码亚洲网站麻豆| 羞羞漫画在线播放| 免费的好黄的漫画| 国产欧美日韩综合精品一区二区| 最近中文字幕MV免费高清在线| 日本中文字幕巨大的乳专区| 国产一区二区青青精品久久| 最近更新2019中文字幕国语 | 亚洲国产欧美在线人成aaaa20| 国产精品久久久久久久久齐齐 | 久艾草在线精品视频在线观看| bl高h肉文| 亚洲国产在线精品第二剧情不卡| 男人叼女人| 色橹橹欧美在线观看视频高清| aaa在线观看视频高清视频| 日韩亚洲欧美中文高清在线| 国产乱人视频在线观看| 在线观看亚洲 日韩 国产| 欧美人妇无码精品久久| 国产99久久久欧美黑人刘玥| 亚洲日本欧美日韩高观看| 狼与美女谐音歌词| 变形金刚7免费观看完整| 午夜免费无码福利视频麻豆| 久久a在线视频观看| 被公疯狂玩弄的漂亮人妻| 校花爽好大快深点h| 狼群影院视频在线观看WWW| 成年女人色毛片免费|