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

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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

GReq_mcu168 ? 來源:玩轉(zhuǎn)單片機 ? 2019-12-08 10:27 ? 次閱讀

簡介

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

硬件平臺簡介

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

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

STM32F411RE從屬于銷量名列前茅的STM32F4系列,眾所周知,F(xiàn)4是STM32主打高性能和數(shù)字信號處理的“輕奢”系列。

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

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

如何在STM32上使用C++

準(zhǔn)備工作

1、下載RT-Thread 源碼

2、下載ENV 工具

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

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

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

打開C++支持:

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

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

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

運行C++程序:

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

C++ 全局對象構(gòu)造函數(shù)的調(diào)用

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

crt_init.c文件完成了C++系統(tǒng)的初始化工作

C++系統(tǒng)初始化部分:

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函數(shù)中,將全局對象的構(gòu)造函數(shù)依次鏈接到了鏈接腳本文件中為其分配的段中,并且調(diào)用了RT-Thread組件自動初始化的宏INIT_COMPONENT_EXPORT,所以在鏈接的時候,C++全局對象構(gòu)造函數(shù)所產(chǎn)生的目標(biāo)文件就被鏈接到了__ctors_start__和__ctors_end__組成的段中。

鏈接腳本中為C++全局構(gòu)造函數(shù)分配的段部分:

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

__ctors_start__分配了C++全局構(gòu)造函數(shù)段的起始地址,__ctors_end__分配了C++全局構(gòu)造函數(shù)段的結(jié)束地址,所以全局構(gòu)造函數(shù)在系統(tǒng)初始化的時候,就會被鏈接到這里分配的段地址中。

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++異常的結(jié)束地址,當(dāng)異常產(chǎn)生的時候,就會被分配到指定的段地址中。

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

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

當(dāng)除零異常發(fā)生的時候div_func函數(shù)會拋出一個異常,在throw_exceptions函數(shù)中會去捕獲這個異常。

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10904

    瀏覽量

    356414
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2110

    瀏覽量

    73689
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1293

    瀏覽量

    40212

原文標(biāo)題:在 STM32 上使用 C++ 指南

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

收藏 人收藏

    評論

    相關(guān)推薦

    RT-ThreadCAN實踐

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

    【QEMU系列】不用開發(fā)板運行RT-Thread指南-ARM架構(gòu)

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

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

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

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

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

    使用RT-Thread的scons構(gòu)建系統(tǒng)來編譯ESP32C3固件?

    我正在嘗試使用 RT-Thread 的 scons 構(gòu)建系統(tǒng)來編譯 ESP32C3 固件。目前 ESP32C3 的 bsp 已經(jīng)被社區(qū)小伙伴們 PR 到
    發(fā)表于 06-07 06:18

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

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

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

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

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

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

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

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

    RT-Thread混合部署Workshop深圳站落幕,深度體驗混合運行的高效!

    嵌入式工程師農(nóng)曉明,帶來了精彩的技術(shù)分享,讓參與者們在瑞芯微RK3568平臺上深度體驗RT-Thread與Linux混合運行的高效實踐。活動的核心目標(biāo),是讓每一位參
    的頭像 發(fā)表于 04-12 08:36 ?325次閱讀
    <b class='flag-5'>RT-Thread</b>混合部署Workshop深圳站落幕,深度體驗混合運行的高效!

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

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

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

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

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

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

    RT-Thread混合部署Workshop在上海張江成功舉行

    軟件工程師郭老師,向參與者們分享在瑞芯微RK3568平臺上實現(xiàn)RT-Thread與Linux混合運行的技術(shù)內(nèi)容和實踐經(jīng)驗。此次Workshop的核心,是能讓參與
    的頭像 發(fā)表于 03-23 08:34 ?359次閱讀
    <b class='flag-5'>RT-Thread</b>混合部署Workshop在上海張江成功舉行

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

    嵌入式軟件工程師郭老師為您講解有關(guān)技術(shù)知識和實踐經(jīng)驗。通過本次workshop能深入理解RT-Thread專業(yè)版與混合部署的潛力,在RK3568平臺上提升系統(tǒng)實時性
    的頭像 發(fā)表于 03-20 08:34 ?565次閱讀
    就在本周四!探索<b class='flag-5'>RT-Thread</b>混合部署新模式!
    主站蜘蛛池模板: 免费国产黄线在线播放| 俄罗斯极品hd| 欧美人妇无码精品久久| 国产精品嫩草久久久久| 91精品一区二区三区在线观看| 无码137片内射在线影院| 免费一级片网站| 九九精品久久| 国产高清超清在线播放| DASD-700美谷朱里| 在线精品视频免费观看| 亚洲成a人不卡在线观看| 日本特黄网站| 暖暖视频中国在线观看免费韩国 | 手机在线国产视频| 久久青草免费91线频观看站街| 国产精品观看视频免费完整版 | 亚洲人成伊人成综合网久久久 | 99久久99久久精品免费看子| 一区二区中文字幕在线观看 | 亚洲色噜噜狠狠网站| 三级黄在线| 欧美性受xxxx狂喷水| 啦啦啦 中文 中国 免费 高清在线 | 最近免费视频中文2019完整版| 亚洲 自拍 欧洲 视频二区| 日本无码欧美激情在线视频| 擼擼擼麻豆密臀AV| 久久人妻熟女中文字幕AV蜜芽 | 精品一区二区三区在线成人| 国产曰韩无码亚洲视频| 国产精品一区二区在线播放| 国产69精品久久久久乱码免费| yellow日本动漫观看免费| 99RE8国产这里只有精品| 2019香蕉在线观看直播视频| 在线观看免费精品国产| 伊人热| 征服艳妇后宫春色| 中文字幕日本一区| 0855午夜福利伦理电影|