简介
本文描述了如何使用在搭载了 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目录,检查 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__;pcode 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++的介绍就结束了。
绿色环保电池简介
海信LED背光液晶电视市占率高居中国平板电视市场首位
Soitec公布2022财年第三季度财报,收入同比增长40%
VK36T2A低功耗TWS触摸IC概述及特性
工业互联网平台使数据价值充分释放成为可能
如何使用在搭载了RT-Thread系统的STM32平台上使用C++
汽车传动系统各部分的功能和作用
联通UPhone计划被列为国家重大专项课题
手机影像的文艺复兴史:智能时代与华为的路标
充电手电筒电路原理图
Smellicopter“嗅觉直升机”可在机器人平台上控制生物有机体的运动
成长计划|解决方案学生挑战赛获奖名单公示
瓦里安将携智慧放疗云生态解决方案亮相进博会
一加5G手机曝光:首批5G手机会有怎样的惊喜
一文看懂印刷电路板行业前景
iPhone12辐射超标?苹果推送iOS 17.1解决此事
定时开关控制器怎么设置时间,步骤是怎样的
固体继电器的输入和输出信号是隔离的吗
BL9342 40V、600mA,降压转换器
豪威集团搭载OmniPixel®3-HS的新型300万像素图像传感器 为安防市场的网络和高清摄像头带来生动画面