OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2993|回复: 5

C++开发STM32,如何使用string?!

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2016-11-2
在线时间
2 小时
发表于 2016-11-7 15:30:58 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 绽放之灵 于 2016-11-7 16:43 编辑

本人现在正在用C++开发stm32。用了C++开发stm32才发现把外设写成类,常用的功能写成类的public方法使用起来是多么方便!
很自然想用string来打印log,现在问题来了,为什么一用string就会跑飞!
用前人的代码举例!Pony279的帖子  @Pony279
将main函数改为如下代码:
#include <iostream>
#include <string>

using std::cout;
using std::endl;
using std::string;

void delay()
{
        unsigned int t = 1000000;
        
        while(t--);
}

int main(void)
{   
        string str1 = "hello world! \n";

        while(1)
        {
                //cout<<"hello world! \n"<<endl;
                cout<<str1<<endl;
                delay();
        }
}

保持优化等级为level 3, 代码能正常运行。
然而,将优化等级调为0时,程序一运行就会进硬件中断。即将设置调为:

p.jpg
程序一运行就会进HardFault!

现在的情况是,我需要在一个成熟的软件框架上加入string的功能,但是不能改设个框架的工程设置!
该框架这里的设置规定了优化等级必须为level 0! 这是个棘手的问题,需要理解里面的原理!

在此请教群里各位高手:
1、要怎样才能在优化等级为level 0的情况下加入#include<string>功能?
2、优化的深层次原理是什么?为什么不开优化就会跑飞?
3、基于这个原理,能搞出什么黑科技?!


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2015-5-28
在线时间
149 小时
发表于 2016-11-7 15:36:01 | 显示全部楼层
我觉得用c++开发MCU很可能没有直接用C实现的功能多~毕竟耗内存~
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2016-11-2
在线时间
2 小时
 楼主| 发表于 2016-11-7 16:04:10 | 显示全部楼层
不要沉
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2016-11-2
在线时间
2 小时
 楼主| 发表于 2016-11-7 21:39:17 | 显示全部楼层
不要沉
回复

使用道具 举报

1

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2015-11-26
在线时间
25 小时
发表于 2016-11-12 16:56:50 | 显示全部楼层
应该还是内存的问题,自己调试看看就知道了
回复

使用道具 举报

12

主题

432

帖子

0

精华

高级会员

Rank: 4

积分
729
金钱
729
注册时间
2012-6-21
在线时间
59 小时
发表于 2016-11-13 05:36:57 来自手机 | 显示全部楼层
自己摸索吧,毕竟用的人少
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 05:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表