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

国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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
    +關注

    關注

    2309

    文章

    11162

    瀏覽量

    373399
  • C++
    C++
    +關注

    關注

    22

    文章

    2123

    瀏覽量

    77110
  • RT-Thread
    +關注

    關注

    32

    文章

    1613

    瀏覽量

    44819

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    硬實時·廣生態·強賦能,中國工業報解讀RT-Thread工業發展之路|新聞資訊

    近日,《中國工業報》深度報道RT-Thread(睿賽德)在工業邊端操作系統領域的發展路徑。報道指出,憑借25億的全球裝機量與近20年的開源積淀,
    的頭像 發表于 02-02 18:53 ?368次閱讀
    硬實時·廣生態·強賦能,中國工業報解讀<b class='flag-5'>RT-Thread</b>工業發展之路|新聞資訊

    首搭RT-Thread程翧車控平臺| RT-Thread程翧 S32K344 快速原型開發平臺正式上市!| 產品動態

    ——基于NXPS32K344的ECU快速原型開發平臺RT-Thread程翧S32K344快速原型開發平臺,是首個深度內置RT-Thread程翧車控軟件
    的頭像 發表于 10-31 11:53 ?991次閱讀
    首搭<b class='flag-5'>RT-Thread</b>程翧車控<b class='flag-5'>平臺</b>| <b class='flag-5'>RT-Thread</b>程翧 S32K344 快速原型開發<b class='flag-5'>平臺</b>正式上市!| 產品動態

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

    --target=eclipse生成 rt-thread studio 工程 在rt-thread studio中,使用sdk Manager 導入配置成功。 配置成功, 問題: 我如何使
    發表于 09-26 06:16

    STM32cubeMX生成配置rt-thread引用問題求解

    如題,本人小白,剛接觸rt-threadSTM32F1/4簡便配置起見利用cubeMX自動生成,測試幾次后直接蒙,不知道哪些文件是rt-thread項目必須的,網上說法也五花八門,
    發表于 09-12 07:21

    rt-thread4.0.2版本stm32f407硬件平臺上,使用reboot命令無法重啟,會讓系統死機的原因?

    我在rt-thread4.0.2版本stm32f407硬件平臺上,使用reboot命令無法重啟,會讓系統死機。 reboot命令默認是調用rt
    發表于 09-12 06:08

    Windows使用ENV工具開發基于先楫MCU的RT-Thread應用

    前言Env是RT-Thread推出的開發輔助工具,針對基于RT-Thread操作系統的項目工程,提供編譯構建環境、圖形化系統配置及軟件包管理功能。其內置的menuconfig提供
    的頭像 發表于 08-29 12:22 ?1443次閱讀
    Windows<b class='flag-5'>上</b>使用ENV工具開發基于先楫MCU的<b class='flag-5'>RT-Thread</b>應用

    在Ubuntu開發基于先楫MCU的RT-Thread應用指南

    1、前言RT-ThreadEnv是RT-Thread推出的開發輔助工具,針對基于RT-Thread操作系統的項目工程,提供編譯構建環境、圖形化系統
    的頭像 發表于 08-29 12:22 ?1775次閱讀
    在Ubuntu<b class='flag-5'>上</b>開發基于先楫MCU的<b class='flag-5'>RT-Thread</b>應用指南

    【好書推薦】RT-Thread第20本相關書籍!《嵌入式實時操作系統RT-Thread原理與應用》| 技術集結

    01內容簡介ContentSummary本書為讀者提供一個全面、系統RT-Thread學習指南,旨在幫助初學者及有經驗的開發者掌握RT-Thread實時操作
    的頭像 發表于 08-24 10:05 ?1013次閱讀
    【好書推薦】<b class='flag-5'>RT-Thread</b>第20本相關書籍!《嵌入式實時操作<b class='flag-5'>系統</b><b class='flag-5'>RT-Thread</b>原理與應用》| 技術集結

    RT-Thread BSP全面支持玄鐵全系列RISC-V 處理器 | 技術集結

    RT-Thread標準版已全面適配玄鐵E、R、C系列內核,并在C906內核支持RT-Smart微內核操作
    的頭像 發表于 07-03 18:03 ?3227次閱讀
    <b class='flag-5'>RT-Thread</b> BSP全面支持玄鐵全系列RISC-V 處理器 | 技術集結

    揭秘RT-Thread的AUTOSAR CP系統

    標準,同時保留RT-Thread的POSIX支持與可裁剪性,實現通信隔離、診斷模塊集成等關鍵技術突破,為車載系統提供高安全、可擴展的解決方案。車載電子系統與傳統
    的頭像 發表于 06-23 20:22 ?3218次閱讀
    揭秘<b class='flag-5'>RT-Thread</b><b class='flag-5'>上</b>的AUTOSAR CP<b class='flag-5'>系統</b>

    如何在rt-thread studio開發STM32H747IIT6?

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

    人形機器人敏捷開發新路徑:RT-Thread以軟件底座破解復雜系統難題 | 新聞速遞

    機器人行業解決方案負責人郭占鑫發表《從異構通信到虛擬化技術:RT-Thread助力機器人敏捷、可持續開發》主題演講,系統闡述RT-Thread操作
    的頭像 發表于 06-04 14:03 ?1312次閱讀
    人形機器人敏捷開發新路徑:<b class='flag-5'>RT-Thread</b>以軟件底座破解復雜<b class='flag-5'>系統</b>難題 | 新聞速遞

    RT-Thread 如何實現 SLAAC?

    大佬們,本菜鳥有一些網絡的問題需要幫助: RT-Thread 如何實現 SLAAC(無狀態地址自動分配),給連接到我的板子的設備分配 IPv6 地址; RT-Thread 如何發
    發表于 05-27 07:21

    【直播預告】《實時操作系統應用技術—基于RT-Thread與ARM的編程實踐》教學脈絡及資源簡介

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

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

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