cortex m3 LPC1768 sprintf %f 出现崩溃 硬件错误 reset 原因是 arm-gcc 不支持 sprintf %f
来源:互联网 发布:西门子plc编程入门基础 编辑:程序博客网 时间:2024/06/16 06:17
我使用的是NXP的cortex-m3芯片LPC1768作为主控芯片,经过研究反复研究和实验,修改startup.s代码中的stack_size和heap_size的大小都无济于事,任然出现奇怪的现象,即在单步调试的时候,只能执行一次,并且这次得到的结果是正确的,然后就立即出现硬件错误,进入汇编语言的硬件错误死循环;如果全速运行,那么每次得到的结果都是0.00000,没有一次能得到正确结果,但是并没有死机,感觉应该是该sprintf %f的功能不正确而已,也不至于死机,不过偶尔确实有错误数据返回,但并没有什么规律。
基于此,在网上找了好久,终于弄明白,应该是这类微控制器不支持sprintf %f,因为这个操作太耗时,耗资源,不值得,很多微控制器都无法满足它的要求,故arm-gcc没有提供该支持或者支持得很不好,不过它也给出了凑合的解决办法,比较简单,模拟效果实现的。实现代码参考如下:
When using GCC compiler, due to internal standard C library architecture, it is strongly not recommended to use the "%f" mode in the wm_sprintf function in order to convert a float variable to a string. This leads to an ARM exception (product reset).
float float_num;uint8_t str_temp[128];sprintf(str_temp,"%d.%03d",(uint32_t)float_num,(uint32_t)((float_num * 1000) - (uint32_t)(float_num) * 1000));//(实现三位小数转换)
与大家一起分享!
- cortex m3 LPC1768 sprintf %f 出现崩溃 硬件错误 reset 原因是 arm-gcc 不支持 sprintf %f
- printf(),sprintf() 与 %f
- ARM Cortex-M3核LPC1768的μCOS-II的移植练习-1
- ARM Cortex-M3核LPC1768的μCOS-II的移植练习-2
- Cortex-M3 LPC1768上电启动
- ARM Cortex-M3
- ARM CORTEX-M3 寄存器
- ARM Cortex-M3体系结构
- ARM CORTEX-M3简介
- ARM cortex-M3相关
- C语言sprintf使用出现段错误
- sprintf
- sprintf
- sprintf
- sprintf
- sprintf
- sprintf()
- sprintf
- ant配置
- hibernate总结
- 业务单号自动增长的处理办法 eg: R000000001
- 编码20年的老程序员分享所积累的20条编程经验
- Linux操作系统上进行自动备份的方法步骤
- cortex m3 LPC1768 sprintf %f 出现崩溃 硬件错误 reset 原因是 arm-gcc 不支持 sprintf %f
- IOS真机调试常见问题整理
- 如何引用 System.Runtime.Serialization.Json
- 如何将JSON转换成实体类集合?
- mac 卸载 python 框架 django
- 内存分配——静态存储区 栈 堆
- Excel单元格中的数据输出到.txt
- pig系列教程地址
- 内核模块编程---使用内核模块参数(module_param()) (2)