<em id="escxe"><acronym id="escxe"></acronym></em>

    <dd id="escxe"><input id="escxe"></input></dd>

  1. <progress id="escxe"><pre id="escxe"><rt id="escxe"></rt></pre></progress><th id="escxe"></th><dd id="escxe"><pre id="escxe"></pre></dd>
    1. <button id="escxe"><acronym id="escxe"><cite id="escxe"></cite></acronym></button>
    2. <button id="escxe"><acronym id="escxe"></acronym></button>
      1. <span id="escxe"></span>

          <th id="escxe"></th>
          <tbody id="escxe"></tbody>

          <li id="escxe"></li>
          侵权投诉

          如何使用在搭载了RT-Thread系统的STM32平台上使用C++

          玩转单片机 ? 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)、控制(CAN、UART、I2C)、存储(FMC、2/4/8 bits SPI、SDMMC)外设。

          “轻”在价格让人“轻松”、尺寸“轻巧”(不到3mm*3mm的封装)、功耗“轻微”。

          如何在?STM32?上使用?C++

          准备工作

          1、下载?RT-Thread 源码

          2、下载?ENV 工具

          3、进入rt-threadspstm32f411-st-nucleo?目录,检查 BSP?rtconfig.py?文件和?SConstruct?文件是否支持?C++?配置,如下图所示

          检查?rtconfig.py?文件中对?C++?的支持

          检查?SConstruct?文件中对?C++?的支持

          打开?C++?支持:

          打开?Env?工具,在?Env?命令行中输入?menuconfig,进入配置界面,使用?menuconfig?工具(学习如何使用)配置工程。在?menuconfig?配置界面依次选择?RT-Thread Components ---> C++ features ---> Support C++ features,如图所示:

          编译工程:?scons --target=mdk5?1. 生成?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_WEAK?int?cplusplus_system_init(void) 2{ 3????typedef?void(*pfunc)(); 4????extern?pfunc?__ctors_start__[]; 5????extern?pfunc?__ctors_end__[]; 6????pfunc?*p; 7 8????for?(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?=?.; 2????ARM.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????#define?MIN_VALUE?????????????????(1e-4)?????????????????????????? 4????#define?IS_DOUBLE_ZERO(d)?????????(abs(d)?

          当除零异常发生的时候?div_func?函数会抛出一个异常,在?throw_exceptions?函数中会去捕获这个异常。

          下载代码,并在终端输入?throw_exceptions?运行结果如下图所示。

          到这一步为止,如何在搭载了?RT-Thread?系统的?STM32?平台上如何使用?C++?的介绍就结束了。

          原文标题:在 STM32 上使用 C++ 指南

          文章出处:【微信号:mcu168,微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处。

          收藏 人收藏
          分享:

          评论

          相关推荐

          UART的Rx和Tx引脚如何互换 电平如何反转

          UART的Rx和Tx引脚如何互换,电平如何反转
          的头像 黄工的嵌入式技术圈 发表于 02-26 16:42 ? 14次 阅读
          UART的Rx和Tx引脚如何互换 电平如何反转

          STM32MPU和OpenSTLinux你了解多少?

          STM32MPU、OpenSTLinux你了解多少?
          的头像 黄工的嵌入式技术圈 发表于 02-26 16:16 ? 23次 阅读
          STM32MPU和OpenSTLinux你了解多少?

          PST光学定位(光学追踪)系统的标记点都有哪些类型?

          PST光学定位(光学追踪)系统支持的标记点都有哪些类型? ...
          发表于 02-26 10:29 ? 101次 阅读
          PST光学定位(光学追踪)系统的标记点都有哪些类型?

          关于电脑无法识别CH340电路

          问题描述: 自己在网上买了一块STM32的最小系统板,板子提供了原理图,然后我依葫芦画瓢,画了个“一键下载电路”,如图1所示...
          发表于 02-26 10:19 ? 105次 阅读
          关于电脑无法识别CH340电路

          初学32单片机,遇到思考不懂的难题,请大佬指教?。?!

          我流水灯程序能亮了,但我试了一下全亮和全灭就出现以下问题,请各位大佬指教: #include "stm32f10x.h" /**  &...
          发表于 02-26 09:11 ? 183次 阅读
          初学32单片机,遇到思考不懂的难题,请大佬指教?。?!

          意法半导体STM32MP157A MPU加持,米尔科技首款ST Linux开发板MYD-YA157C评测

          ST公司去年推出了MPU系列芯片,MPU系列不同于以往产品,它既包含有ARM公司Cortex M 单....
          的头像 米尔MYIR 发表于 02-25 14:30 ? 150次 阅读
          意法半导体STM32MP157A MPU加持,米尔科技首款ST Linux开发板MYD-YA157C评测

          开发STM32MP1,怎能没有一块好开发板

          STM32MP1系列的出现吸引了很多STM32的新老用户的关注,但是很多的人都会担心一个问题:以前是....
          的头像 米尔MYIR 发表于 02-25 14:24 ? 119次 阅读
          开发STM32MP1,怎能没有一块好开发板

          Java语言为什么一直位居排行榜第一

          一.Java是目前使用最为广泛的网络编程语言之一。
          的头像 Wildesbeast 发表于 02-24 15:53 ? 144次 阅读
          Java语言为什么一直位居排行榜第一

          走进MEasy的世界:基于STM32MP1的IOT参考设计

          走进MEasy的世界:基于STM32MP1的IOT参考设计 在万物互联快速发展的趋势下,板卡处理器性能、内存大小、接口外设等都是...
          发表于 02-24 15:46 ? 485次 阅读
          走进MEasy的世界:基于STM32MP1的IOT参考设计

          C++能不能让编译器自动推导变量类型吗

          随着计算机性能的持续提升,编程语言似乎迎来了一次大爆发,各种编程语言不断出现,乐意折腾的人总能找到一....
          的头像 Wildesbeast 发表于 02-24 15:26 ? 152次 阅读
          C++能不能让编译器自动推导变量类型吗

          C++多态的实现原理详细讲解

          通过基类指针调用基类和派生类中的同名「虚函数」时:若该指针指向一个基类的对象,那么被调用是基类的虚函....
          的头像 Wildesbeast 发表于 02-24 14:50 ? 125次 阅读
          C++多态的实现原理详细讲解

          C语言与Java之间的主要区别有哪些

          本文主要为C??⑷嗽绷私釰ava提供一些基础。 Java中缺少C#的功能 C#包含更多....
          的头像 Wildesbeast 发表于 02-24 14:31 ? 174次 阅读
          C语言与Java之间的主要区别有哪些

          Java和C++、python及PHP等主流编程语言的特点说明

          每一个新入门的程序员对于各种各样的编程语言都感觉很头大,当你迷茫于该学习什么样的语言时,那么你就应该....
          的头像 Wildesbeast 发表于 02-20 14:32 ? 265次 阅读
          Java和C++、python及PHP等主流编程语言的特点说明

          意法半导体推出新STSAFE安全单元为开发者提供经过认证的资产跟踪和品牌?;そ饩龇桨?/a>

          意法半导体的STSAFE-A110 安全单元(SE)引入新的数据安全功能,在网络安全威胁日益严峻的环....
          的头像 inr999 发表于 02-18 17:40 ? 780次 阅读
          意法半导体推出新STSAFE安全单元为开发者提供经过认证的资产跟踪和品牌?;そ饩龇桨? />    </a>
</div><div class=

          Java与Python到底有什么区别和共同点详细对比

          JAVA:Java是一种计算机编程语言,最常用于开发Android智能手机应用程序。它于1995年由....
          的头像 Wildesbeast 发表于 02-18 12:15 ? 596次 阅读
          Java与Python到底有什么区别和共同点详细对比

          关于磁导航传感器设计的一些问题(纯小白)

          根据地上的磁条激发霍尔电压,再通过运算放大器把电压放到STM32F103的电压范围内直接连接上就可以了吗?有其他需要注意的地方...
          发表于 02-16 19:49 ? 232次 阅读
          关于磁导航传感器设计的一些问题(纯小白)

          意法半导体推出面向IoT的首个兼备超低功耗与数据安全的新一代STM32L5微控制器

          在Arm TrustZone技术基础上搭建专有安全功能,获得PSA 2级认证 包含安全启动,全硬件隔....
          发表于 02-14 19:06 ? 766次 阅读
          意法半导体推出面向IoT的首个兼备超低功耗与数据安全的新一代STM32L5微控制器

          关于STM32F103ZE生成4路PWM波的问题

          使用定时器3产生4路PWM,对应复用引脚为PC6、7、8、9. 。但仿真结果一直是四路同样占空比的PWM,特此求助?。?! ...
          发表于 02-13 22:32 ? 852次 阅读
          关于STM32F103ZE生成4路PWM波的问题

          java开发应该如何发展

          在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子....
          的头像 Wildesbeast 发表于 02-12 14:58 ? 274次 阅读
          java开发应该如何发展

          基于STM32的以太网络光纤端口设计求帮助

          主要解决的问题是以STM32微处理器为主,选择网络接口芯片,设计两者之间的硬件接口电路和光路接口,然后编写程序,实现两个处...
          发表于 02-11 16:21 ? 854次 阅读
          基于STM32的以太网络光纤端口设计求帮助

          L298N驱动电机的问题求教

          一个小车: 一个直流减速电机控制两个前轮,一个舵机 一个电机控制两个后轮, 所以前后两轮的转速与方向相同, 能否用L29...
          发表于 02-08 16:39 ? 315次 阅读
          L298N驱动电机的问题求教

          easyOS基于Cortex-M内核的学习型RTOS

          适合新手RTOS学习使用,学会后转学习ucos/freertos/rt-thread等会轻松很多。 这是说明:https://blog.csdn.net/qq_3700782...
          发表于 02-07 20:11 ? 490次 阅读
          easyOS基于Cortex-M内核的学习型RTOS

          线程的基本知识

          【RT-Thread】线程的基本知识
          的头像 黄工的嵌入式技术圈 发表于 02-04 15:42 ? 449次 阅读
          线程的基本知识

          什么是STM32Trust?ST最新发布一种支持STM32的SMI技术

          什么是STM32Trust?ST最新发布了一种支持STM32的SMI技术
          的头像 黄工的嵌入式技术圈 发表于 02-04 15:30 ? 649次 阅读
          什么是STM32Trust?ST最新发布一种支持STM32的SMI技术

          意法半导体和Fieldscale为基于STM32的智能设备带来简单直观的触控体验

          意法半导体和Fieldscale公司合作,让Fieldscale的SENSE开发平台支持意法半导体的....
          发表于 02-04 14:58 ? 517次 阅读
          意法半导体和Fieldscale为基于STM32的智能设备带来简单直观的触控体验

          学习编程需要克服那些难关

          作为一个C/C++软件开发的老程序员,我看到过很多新手程序员满怀热情投入到学习中来,却总是处处碰壁。....
          的头像 Wildesbeast 发表于 02-04 12:32 ? 386次 阅读
          学习编程需要克服那些难关

          比特币是什么?比特币的原理详细说明

          究竟是什么让一枚虚拟货币的汇率在3年间翻了25000倍,是什么力量让央行副行长“感兴趣”但“不承认”....
          的头像 Wildesbeast 发表于 02-03 15:07 ? 1904次 阅读
          比特币是什么?比特币的原理详细说明

          HAL_SPI_TransmitReceive与osDelay冲突问题

          我准备在官方的STM32L476+ST253993增加freertos,但是代码下进去系统运行时就卡住,单步调试,系统一直卡在prvCheckTask...
          发表于 02-02 22:36 ? 505次 阅读
          HAL_SPI_TransmitReceive与osDelay冲突问题

          C++在现在的市场上主要使用在什么领域上

          我读研期间学的 Windows C++ 开发,毕业第一份工作很挑,非 Windows C/C++ 不....
          的头像 Wildesbeast 发表于 01-20 11:50 ? 400次 阅读
          C++在现在的市场上主要使用在什么领域上

          怎么样才能使用STM32芯片设计电压无功控制器人机交互界面

          本设计以STM32为主控芯片,通过LCD彩屏显示简单友好的界面提示用户参数输入,并通过屏幕的触摸???...
          发表于 01-17 14:19 ? 197次 阅读
          怎么样才能使用STM32芯片设计电压无功控制器人机交互界面

          2020年最火的编程语言你知道是什么吗

          当今世界最重要的技能就是学会编写程序,几乎每个行业都涉及计算机,无论是飞机上的自动驾驶仪器还是你手上....
          的头像 Wildesbeast 发表于 01-16 17:59 ? 1583次 阅读
          2020年最火的编程语言你知道是什么吗

          STM32F10x开发板的多任务工程FSC-OS资料合集免费下载

          本文档的主要内容详细介绍的是STM32F10x开发板的多任务工程FSC-OS资料合集免费下载。
          发表于 01-16 10:23 ? 169次 阅读
          STM32F10x开发板的多任务工程FSC-OS资料合集免费下载

          USART波特率与SPI速率对比

          USART波特率 vs SPI速率
          的头像 黄工的嵌入式技术圈 发表于 01-15 16:37 ? 621次 阅读
          USART波特率与SPI速率对比

          意法半导体更新TouchGFX软件框架,新增强大功能和支持STM32Cube的便利工具

          意法半导体在STM32微控制器(MCU)软件框架TouchGFX中增加了新功能,方便设备厂商为家用电....
          发表于 01-15 11:09 ? 337次 阅读
          意法半导体更新TouchGFX软件框架,新增强大功能和支持STM32Cube的便利工具

          如何设计及实现STM32的CAN总线

          CAN(Controller Area Network)即控制器局域网,属于工业现场总线的范畴,通常....
          发表于 01-15 08:00 ? 232次 阅读
          如何设计及实现STM32的CAN总线

          关于STM32定时器触发SPI逐字收发之应用示例

          STM32定时器触发SPI逐字收发之应用示例
          的头像 黄工的嵌入式技术圈 发表于 01-14 16:35 ? 650次 阅读
          关于STM32定时器触发SPI逐字收发之应用示例

          意法半导体推出STM32系统芯片,加快LoRa? IoT智能设备开发

          STM32WLE5采用5mm x 5mm UFBGA73封装,完全支持经过市场检验的STM32生态系....
          发表于 01-13 08:06 ? 888次 阅读
          意法半导体推出STM32系统芯片,加快LoRa? IoT智能设备开发

          ARM的指令集详细说明

          虽然嵌入式应用大多数应用程序都可采用C或C++等高级语言编程,以及汇编语言与C语言之间的混合编程,但....
          发表于 01-13 08:00 ? 149次 阅读
          ARM的指令集详细说明

          STM32平台下GP2Y1010AU0F灰尘传感器的使用源代码

          本文档的主要内容详细介绍的是STM32平台下GP2Y1010AU0F灰尘传感器的使用源代码。
          发表于 01-09 17:15 ? 190次 阅读
          STM32平台下GP2Y1010AU0F灰尘传感器的使用源代码

          分享一些C++的历史进程

          2019年C++有哪些发展?
          的头像 黄工的嵌入式技术圈 发表于 01-09 14:20 ? 471次 阅读
          分享一些C++的历史进程

          开发STM32MP1,你需要一块好开发板

          以前是基于Cortex M系列MCU惊醒开发,对于cortex-A架构的处理器以及Linux系统都不....
          发表于 01-09 12:13 ? 412次 阅读
          开发STM32MP1,你需要一块好开发板

          首创通用32位MCU跑分大战-中国芯超越stm32

          衡量MCU处理器的一个重要指标就是性能,另外一个重要指标便是功耗。本期我们先从性能开始,跑分大赛。本....
          发表于 01-09 09:03 ? 1262次 阅读
          首创通用32位MCU跑分大战-中国芯超越stm32

          STM32F427xx和STM32F429xx微控制器的中文数据手册

          本文档的主要内容详细介绍的是STM32F427xx和STM32F429xx微控制器的中文数据手册。
          发表于 01-09 08:00 ? 140次 阅读
          STM32F427xx和STM32F429xx微控制器的中文数据手册

          STM32F427xx和STM32F429xx微控制器的英文原版数据手册免费下载

          STM32F427xx和STM32F429xx设备基于高性能ARM?Cortex?M4 32位RIS....
          发表于 01-09 08:00 ? 158次 阅读
          STM32F427xx和STM32F429xx微控制器的英文原版数据手册免费下载

          定向耦合器的网络分析方法和超宽带对称定向耦合器的设计说明

          该文首先介绍了定向耦合器的网络分析法以及平行耦合线定向耦合器的奇偶模分析法,为多阶定向耦合器的综合过....
          发表于 01-08 15:12 ? 136次 阅读
          定向耦合器的网络分析方法和超宽带对称定向耦合器的设计说明

          HID数据收发工具V1.3版软件免费下载

          本文档的主要内容详细介绍的是HID数据收发工具V1.3版软件免费下载。 数据接收稳定,自动检索端口,....
          发表于 01-08 08:00 ? 108次 阅读
          HID数据收发工具V1.3版软件免费下载

          C Primer Plus中文第6版PDF电子书免费下载

          本书详细讲解了C语言的基本概念和编程技巧。全书共17章。第1章、第2章介绍了C语言编程的预备知识。第....
          发表于 01-08 08:00 ? 291次 阅读
          C Primer Plus中文第6版PDF电子书免费下载

          C++语言编码规范详细说明

          本文档的主要内容详细介绍的是C++语言编码规范详细说明。
          发表于 01-07 16:19 ? 147次 阅读
          C++语言编码规范详细说明

          移植FreeRTOS到STM32开发板上的工程文件和源代码免费下载

          本文档的主要内容详细介绍的是移植FreeRTOS到STM32开发板上的工程文件和源代码免费下载。
          发表于 01-07 08:00 ? 123次 阅读
          移植FreeRTOS到STM32开发板上的工程文件和源代码免费下载

          为什么要学习Java

          ① 是目前最为广泛的网络编程语言。它具有简单,面向对象,稳定等特点。②Java 语言简单是指这门语言....
          的头像 Wildesbeast 发表于 01-04 11:08 ? 832次 阅读
          为什么要学习Java

          STM32中断优先级相关概念与使用笔记资料免费下载

          1.ARM cortex_m3内核支持256个中断(16个内核+240外部)和可编程256级中断优先....
          发表于 01-03 16:39 ? 142次 阅读
          STM32中断优先级相关概念与使用笔记资料免费下载

          STM32 M4 时钟配置示例源代码和工程文件免费下载

          本文档的主要内容详细介绍的是STM32 M4 时钟配置示例源代码和工程文件免费下载。
          发表于 01-03 16:22 ? 106次 阅读
          STM32 M4 时钟配置示例源代码和工程文件免费下载

          什么是SysTick定时器?实现STM32时钟系统的详细资料说明

          什么是SysTick定时器?实现STM32时钟系统的详细资料说明主要内容包括了:Systick原理和....
          发表于 01-02 08:00 ? 85次 阅读
          什么是SysTick定时器?实现STM32时钟系统的详细资料说明

          STM32串口实验的详细资料简介

          本文档的主要内容详细介绍的是STM32串口实验的详细资料简介主要内容包括了:Systick原理和配置....
          发表于 01-02 08:00 ? 111次 阅读
          STM32串口实验的详细资料简介

          STM32单片机的外部中断实验详细资料说明

          本文档的主要内容详细介绍的是STM32单片机的外部中断实验详细资料说明。
          发表于 01-02 08:00 ? 104次 阅读
          STM32单片机的外部中断实验详细资料说明

          使用STM32单片机实现独立看门狗实验的教程说明

          本文档的主要内容详细介绍的是使用STM32单片机实现独立看门狗实验的教程说明。
          发表于 01-02 08:00 ? 108次 阅读
          使用STM32单片机实现独立看门狗实验的教程说明

          使用STM32单片机实现定时器中断实验的详细资料说明

          在向下模式中,计数器从自动装入的值(TIMX_ARR计数器的值)开始向下计数到0,然后从自动装入的值....
          发表于 01-02 08:00 ? 125次 阅读
          使用STM32单片机实现定时器中断实验的详细资料说明

          使用STM32单片机实现PWM输出实验的资料说明

          脉冲宽度调制模式可以产生一个由TIMX_ARR寄存器确定频率、由TIMX_CCRx寄存器确定占空比的....
          发表于 01-02 08:00 ? 145次 阅读
          使用STM32单片机实现PWM输出实验的资料说明

          STM32单片机的输入捕获实验详细说明

          本文档的主要内容详细介绍的是STM32单片机的输入捕获实验详细说明。
          发表于 01-02 08:00 ? 141次 阅读
          STM32单片机的输入捕获实验详细说明

          使用STM32实现LCD显示实验的资料说明

          本文档的主要内容详细介绍的是使用STM32实现LCD显示实验的资料说明包括了:LCD原理讲解,FSM....
          发表于 01-02 08:00 ? 105次 阅读
          使用STM32实现LCD显示实验的资料说明
          2019年新103期梦解诗句大全