Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread Studio
浮点数打印
rt-thread printf打印信息(包含打印浮点型float)
发布于 2020-05-22 12:28:45 浏览:3650
订阅该版
![微信截图_20200522113937.png](/uploads/202005/22/115406h79f5ge0j5bb1f51.png) 最近在钻研如何让我的设备支持通过printf串口输出,摸了一段时间终于摸出来了,希望可以帮助到有需要的朋友。 本人使用的RTOS版本是RTT-NANO,芯片采用的是STM32F030CCT6,同样情况应该对于应用到非阉割版的也是没有问题。 编译工具链`arm-none-eabi-gcc` 需要修改的地方有3个: 1.在代码中定义`int32_t _write(int32_t file, char *data, int32_t len)`函数,需要包含头文件stdio.h,使用哪个串口进行输出请选择相应的参数 ```c int32_t _write(int32_t file, char *data, int32_t len) { int32_t i; for(i=0;i
') { HAL_UART_Transmit(&huart2, (uint8_t*)" ", 1, HAL_MAX_DELAY); } HAL_UART_Transmit(&huart2, (uint8_t*)&data*, 1, HAL_MAX_DELAY); } return len; } ``` 2.修改连接参数 在rt-thread studio中修改构建配置 ![微信截图_20200522115241.png](/uploads/202005/22/115406tb0lttjl7bbpipp2.png) 勾选相应的选项,连接nosys库(-lnosys) 我的makefile中连接参数具体为 ``` LDSCRIPT = link.lds LIBS = -lstm32f030xc -lrtt -lc -lm **-lnosys -u _printf_float** LIBDIR = -L./Lib LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections ``` 修改完这里,假如现在编译会出现以下的连接失败的信息 `sbrk.c:(.text._sbrk+0x18): undefined reference to `end'collect2: error: ld returned 1 exit status` 3.修改link.lds ```c ... __bss_start = .; .bss : { . = ALIGN(4); /* This is used by the startup in order to initialize the .bss secion */ _sbss = .; *(.bss) *(.bss.*) *(COMMON) . = ALIGN(4); /* This is used by the startup in order to initialize the .bss secion */ _ebss = . ; *(.bss.init) } > RAM __bss_end = .;
/*_end = .;*/ /*end = .;*/ end = .;
/* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } ... ``` 遇到这个问题,是因为end没有被定义,在link.lds文件中,定义的名称为_end,对于end和_end哪个才是正确的命名,可能跟编译器有关 因此需要在link.lds中定义一个end,如果end取缔_end不会报错的话,也可以直接把_end改成end 最后还需要修改board.h中SRAM的开始地址 ```c #if defined(__CC_ARM) || defined(__CLANG_ARM) extern int Image$RW_IRAM1$ZI$Limit; #define HEAP_BEGIN ((void *)&Image$RW_IRAM1$ZI$Limit) #elif __ICCARM__ #pragma section="CSTACK" #define HEAP_BEGIN (__segment_end("CSTACK")) #else extern int __bss_end;
#define HEAP_BEGIN (((void *)&__bss_end)+0x200)
#endif #define HEAP_END STM32_SRAM1_END ``` 给__bss_end地址便宜0x200目的是留一段空间给标准C库调用时使用,否则会篡改内核的内存块内容,造成系统运行崩溃。 修改过程可能有点偏麻烦,有需要的朋友可以捣腾一下,不增加**-u _printf_float**是无法打印%f的数据,但是可以优化代码体积。 有一个参考的代码,只是单纯的打印printf内容,仅供参考。 下载附件: [rt_thread_template.rar](/uploads/202005/22/122629p8infx34f3fbvtzp.rar)
查看更多
2
个回答
默认排序
按发布时间排序
wlof
2020-05-24
这个家伙不懒,什么也没写
厉害了,之前我是分成两个整数打印的;P
sethnie
2022-06-06
这家伙很懒,什么也没写!
非常感谢
撰写答案
登录
注册新账号
关注者
0
被浏览
3.7k
关于作者
Mestic英
这家伙很懒,什么也没写!
提问
8
回答
4
被采纳
1
关注TA
发私信
相关问题
1
rt_thread studio 啥时候能用呢
2
RT_Thread使用反馈帖子
3
RTT studio 下的 AT指令问题。
4
什么时候RTT Sdudio支持Ubuntu,Deepin和UOS操作系统
5
rt thread Studio 关于J-LINK下载问题
6
RT-Thread studio 调试设置问题
7
RTT-Studio 如何设置调试配置参数?
8
rt_thread studio 软件包配置
9
RT-Studio目前只能开发STM32的项目吗?
10
rtt studio 生成hex名字修改
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
2
RT-Thread EtherKit开源以太网硬件正式发布
3
如何在master上的BSP中添加配置yml文件
4
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
5
RT-Thread 发布 EtherKit开源以太网硬件!
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
MicroPython
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
16
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部