硬汉嵌入式论坛

 找回密码
 立即注册
查看: 446|回复: 4
收起左侧

求助!关于8位8051内核单片机sprintf函数的问题

[复制链接]

2

主题

7

回帖

13

积分

新手上路

积分
13
发表于 2025-4-15 09:51:21 | 显示全部楼层 |阅读模式
本帖最后由 extero 于 2025-4-15 09:52 编辑

最近在使用CH549的过程中发现一个问题,使用sprintf函数格式化数据至数组时,发现当sprintf中的数据过多时会出现异常,表现为写数据错误或整个数据丢失(代码及输出如下图)




695FE232@ED4C6B3B.B3D9FC67.png





微信图片_20250415094743.png
但是将代码修改为



但再添加内容后







0A002196@6EC71003.B3D9FC67.png
2E3B31FC@B20CEE46.B3D9FC67.png
FD623FD4@C8F64744.B3D9FC67.png
8505383B@B38F8918.B3D9FC67.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2025-4-15 12:04:01 | 显示全部楼层
你的IIC BUF开的多少,这个一定要够大,使用这个函数,主要就是buf缓冲大小问题。
回复

使用道具 举报

2

主题

7

回帖

13

积分

新手上路

积分
13
 楼主| 发表于 2025-4-15 13:59:54 | 显示全部楼层
eric2013 发表于 2025-4-15 12:04
你的IIC BUF开的多少,这个一定要够大,使用这个函数,主要就是buf缓冲大小问题。

定义的是 char xdata IICBUF[200] = {0X00};
我感觉够大了
回复

使用道具 举报

2

主题

7

回帖

13

积分

新手上路

积分
13
 楼主| 发表于 2025-4-15 14:00:47 | 显示全部楼层
eric2013 发表于 2025-4-15 12:04
你的IIC BUF开的多少,这个一定要够大,使用这个函数,主要就是buf缓冲大小问题。

而且就算是buf大小的问题,为什么分段就可以存进buf,一次性写入不行
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2025-4-15 15:30:04 | 显示全部楼层
C51中的sprintf的变量数量和大小是受限制的,参数个数不能过多 还有就是变量的总量不能超过8byte
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-10 01:58 , Processed in 0.245552 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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