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

chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

GReq_mcu168 ? 來(lái)源:玩轉(zhuǎn)單片機(jī) ? 2019-12-08 10:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

簡(jiǎn)介

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

硬件平臺(tái)簡(jiǎn)介

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

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

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

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

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

如何在STM32上使用C++

準(zhǔn)備工作

1、下載RT-Thread 源碼

2、下載ENV 工具

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

檢查rtconfig.py文件中對(duì)C++的支持

檢查SConstruct文件中對(duì)C++的支持

打開(kāi)C++支持:

打開(kāi)Env工具,在Env命令行中輸入menuconfig,進(jìn)入配置界面,使用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)添加成功了。

運(yùn)行C++程序:

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

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

RT-Thread中對(duì)全局對(duì)象構(gòu)造函數(shù)的實(shí)現(xiàn)中,以GNUC為例,在rt-threadcomponentscplusplus目錄下的crt_init.c文件中對(duì)C++進(jìn)行了系統(tǒng)初始化, 在特定的BSP目錄下,連接腳本文件link.lds為C++全局構(gòu)造函數(shù)的代碼分配了段,使C++全局對(duì)象構(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ù)中,將全局對(duì)象的構(gòu)造函數(shù)依次鏈接到了鏈接腳本文件中為其分配的段中,并且調(diào)用了RT-Thread組件自動(dòng)初始化的宏INIT_COMPONENT_EXPORT,所以在鏈接的時(shí)候,C++全局對(duì)象構(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)初始化的時(shí)候,就會(huì)被鏈接到這里分配的段地址中。

RT-Thread C++ 異常說(shuō)明

同樣,在鏈接腳本文件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)生的時(shí)候,就會(huì)被分配到指定的段地址中。

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

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

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

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

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

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

    關(guān)注

    2301

    文章

    11073

    瀏覽量

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

    關(guān)注

    22

    文章

    2120

    瀏覽量

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

    關(guān)注

    32

    文章

    1497

    瀏覽量

    43531

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何使用rt-thread studio中,使用 定制化的SDK建立工程?

    --target=eclipse生成 rt-thread studio 工程 在rt-thread studio中,使用sdk Manager 導(dǎo)入配置成功。 配置成功, 問(wèn)題: 我如何使
    發(fā)表于 09-26 06:16

    STM32cubeMX生成配置rt-thread引用問(wèn)題求解

    如題,本人小白,剛接觸rt-threadSTM32F1/4簡(jiǎn)便配置起見(jiàn)利用cubeMX自動(dòng)生成,測(cè)試幾次后直接蒙,不知道哪些文件是rt-thread項(xiàng)目必須的,網(wǎng)上說(shuō)法也五花八門,
    發(fā)表于 09-12 07:21

    rt-thread4.0.2版本stm32f407硬件平臺(tái)上,使用reboot命令無(wú)法重啟,會(huì)讓系統(tǒng)死機(jī)的原因?

    我在rt-thread4.0.2版本stm32f407硬件平臺(tái)上,使用reboot命令無(wú)法重啟,會(huì)讓系統(tǒng)死機(jī)。 reboot命令默認(rèn)是調(diào)用rt
    發(fā)表于 09-12 06:08

    Windows使用ENV工具開(kāi)發(fā)基于先楫MCU的RT-Thread應(yīng)用

    前言Env是RT-Thread推出的開(kāi)發(fā)輔助工具,針對(duì)基于RT-Thread操作系統(tǒng)的項(xiàng)目工程,提供編譯構(gòu)建環(huán)境、圖形化系統(tǒng)配置及軟件包管理功能。其內(nèi)置的menuconfig提供
    的頭像 發(fā)表于 08-29 12:22 ?650次閱讀
    Windows<b class='flag-5'>上</b>使用ENV工具開(kāi)發(fā)基于先楫MCU的<b class='flag-5'>RT-Thread</b>應(yīng)用

    在Ubuntu開(kāi)發(fā)基于先楫MCU的RT-Thread應(yīng)用指南

    1、前言RT-ThreadEnv是RT-Thread推出的開(kāi)發(fā)輔助工具,針對(duì)基于RT-Thread操作系統(tǒng)的項(xiàng)目工程,提供編譯構(gòu)建環(huán)境、圖形化系統(tǒng)
    的頭像 發(fā)表于 08-29 12:22 ?954次閱讀
    在Ubuntu<b class='flag-5'>上</b>開(kāi)發(fā)基于先楫MCU的<b class='flag-5'>RT-Thread</b>應(yīng)用指南

    【好書(shū)推薦】RT-Thread第20本相關(guān)書(shū)籍!《嵌入式實(shí)時(shí)操作系統(tǒng)RT-Thread原理與應(yīng)用》| 技術(shù)集結(jié)

    01內(nèi)容簡(jiǎn)介ContentSummary本書(shū)為讀者提供一個(gè)全面、系統(tǒng)RT-Thread學(xué)習(xí)指南,旨在幫助初學(xué)者及有經(jīng)驗(yàn)的開(kāi)發(fā)者掌握RT-Thread實(shí)時(shí)操作
    的頭像 發(fā)表于 08-24 10:05 ?507次閱讀
    【好書(shū)推薦】<b class='flag-5'>RT-Thread</b>第20本相關(guān)書(shū)籍!《嵌入式實(shí)時(shí)操作<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>RT-Thread</b>原理與應(yīng)用》| 技術(shù)集結(jié)

    揭秘RT-Thread的AUTOSAR CP系統(tǒng)

    標(biāo)準(zhǔn),同時(shí)保留RT-Thread的POSIX支持與可裁剪性,實(shí)現(xiàn)通信隔離、診斷模塊集成等關(guān)鍵技術(shù)突破,為車載系統(tǒng)提供高安全、可擴(kuò)展的解決方案。車載電子系統(tǒng)與傳統(tǒng)
    的頭像 發(fā)表于 06-23 20:22 ?2715次閱讀
    揭秘<b class='flag-5'>RT-Thread</b><b class='flag-5'>上</b>的AUTOSAR CP<b class='flag-5'>系統(tǒng)</b>

    如何在rt-thread studio開(kāi)發(fā)STM32H747IIT6?

    如題,我希望在rt-thread studio開(kāi)發(fā)STM32H747IIT6這款雙核單片機(jī),在keil里兩個(gè)核的代碼是完全隔離的,分別在兩個(gè)工程中編寫。 但是在rt-thread
    發(fā)表于 06-11 06:24

    人形機(jī)器人敏捷開(kāi)發(fā)新路徑:RT-Thread以軟件底座破解復(fù)雜系統(tǒng)難題 | 新聞速遞

    機(jī)器人行業(yè)解決方案負(fù)責(zé)人郭占鑫發(fā)表《從異構(gòu)通信到虛擬化技術(shù):RT-Thread助力機(jī)器人敏捷、可持續(xù)開(kāi)發(fā)》主題演講,系統(tǒng)闡述RT-Thread操作
    的頭像 發(fā)表于 06-04 14:03 ?884次閱讀
    人形機(jī)器人敏捷開(kāi)發(fā)新路徑:<b class='flag-5'>RT-Thread</b>以軟件底座破解復(fù)雜<b class='flag-5'>系統(tǒng)</b>難題 | 新聞速遞

    RT-Thread 如何實(shí)現(xiàn) SLAAC?

    大佬們,本菜鳥(niǎo)有一些網(wǎng)絡(luò)的問(wèn)題需要幫助: RT-Thread 如何實(shí)現(xiàn) SLAAC(無(wú)狀態(tài)地址自動(dòng)分配),給連接到我的板子的設(shè)備分配 IPv6 地址; RT-Thread 如何發(fā)
    發(fā)表于 05-27 07:21

    【直播預(yù)告】《實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù)—基于RT-Thread與ARM的編程實(shí)踐》教學(xué)脈絡(luò)及資源簡(jiǎn)介

    直播預(yù)告直播主題:《實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù)—基于RT-Thread與ARM的編程實(shí)踐》教學(xué)脈絡(luò)及資源簡(jiǎn)介開(kāi)放時(shí)間:2025年5月29日(周四)20:00主講老師:王宜懷課程類型:視頻直播觀看平臺(tái)
    的頭像 發(fā)表于 05-26 17:50 ?980次閱讀
    【直播預(yù)告】《實(shí)時(shí)操作<b class='flag-5'>系統(tǒng)</b>應(yīng)用技術(shù)—基于<b class='flag-5'>RT-Thread</b>與ARM的編程實(shí)踐》教學(xué)脈絡(luò)及資源簡(jiǎn)介

    中新社:RT-Thread攜“睿擎平臺(tái)”亮相工博會(huì) | 媒體視角

    4月23日,成都國(guó)際工業(yè)博覽會(huì)拉開(kāi)帷幕。中國(guó)新聞網(wǎng)專訪RT-Thread睿賽德,以“國(guó)產(chǎn)操作系統(tǒng)再亮劍,睿擎平臺(tái)開(kāi)啟工業(yè)新時(shí)代”為題,報(bào)道“睿擎工業(yè)開(kāi)發(fā)
    的頭像 發(fā)表于 04-24 11:16 ?953次閱讀
    中新社:<b class='flag-5'>RT-Thread</b>攜“睿擎<b class='flag-5'>平臺(tái)</b>”亮相工博會(huì) | 媒體視角

    如何將RT-Thread移植到NXP MCUXPressoIDE

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

    Deepseek單片機(jī)?RT-Thread跑通大語(yǔ)言模型

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

    RT-ThreadCAN實(shí)踐

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