查看: 2438|回复: 7

求助 stc32 变量问题

[复制链接]

0

主题

3

帖子

144

积分

注册会员

Rank: 2

积分
144
发表于 2025-7-23 16:30:06 | 显示全部楼层 |阅读模式
本帖最后由 rad9700 于 2025-7-23 16:37 编辑

芯片型号是 stc32g12k128,数据类型 32位整数,只要数值超过33000显示就不对 是什么原因呢?
在串口和 液晶屏看到的内容如图
1.png
2.png
3.jpg


1.png
回复

使用道具 举报

0

主题

3

帖子

144

积分

注册会员

Rank: 2

积分
144
 楼主| 发表于 2025-8-1 13:03:04 | 显示全部楼层
路过的大神谁给解答一下,谢谢了
回复

使用道具 举报

5

主题

24

帖子

141

积分

注册会员

Rank: 2

积分
141
发表于 2025-8-3 21:03:21 | 显示全部楼层
直接让OLED显示33000看下,要不就出分别除10,除100,除1000,除10000...取10的余数显示在不同的地方
回复

使用道具 举报

0

主题

3

帖子

144

积分

注册会员

Rank: 2

积分
144
 楼主| 发表于 2025-8-4 10:25:27 | 显示全部楼层
一千个爱你的理由 发表于 2025-8-3 21:03
直接让OLED显示33000看下,要不就出分别除10,除100,除1000,除10000...取10的余数显示在不同的地方 ...

图片就是让 串口 和oled 分别显示 1,1000,3200,33000,100000,测试过了值超过32767 就是负数了,只是显示不出来,测试代码 变量类型都是 32整数 让a=100000, b=100000,  c=(a+b)/10000  可以看到c=20,说明变量是里面数字是正常的,大数取余也能用,只是奇怪,用过arduino 8位的  变量超过这个范围也不会这样
回复

使用道具 举报

8

主题

40

帖子

869

积分

高级会员

Rank: 4

积分
869
发表于 2025-8-4 14:18:55 | 显示全部楼层
rad9700 发表于 2025-8-4 10:25
图片就是让 串口 和oled 分别显示 1,1000,3200,33000,100000,测试过了值超过32767 就是负数了,只是显示不 ...

去看底层数字转换成字符串的函数,这个一般都是哪里问题,变量不会有问题的,都是串口打印和屏显示的问题
回复

使用道具 举报

3

主题

7

帖子

81

积分

注册会员

Rank: 2

积分
81
发表于 2025-8-5 15:06:41 | 显示全部楼层
在里面做一个串口数据的转发,看用上位机看下收到的数据是否存在丢帧情况,或者直接示波器看串口数据。我测115200波特率下与MCU的通信存在不稳定丢字节的情况。
回复

使用道具 举报

0

主题

3

帖子

144

积分

注册会员

Rank: 2

积分
144
 楼主| 发表于 2025-8-6 11:30:31 | 显示全部楼层
业余玩家 没示波器,

液晶显示函数原型


ssd1306_show_num(20,0,a,(1),12);


F:\天问Block\stc32g\keillib\myLib\SSD1306.h

文件内:

void ssd1306_show_num(int8 x,int8 y,int32 num, uint8 pixel, uint8 size);        //在指定位置显示数字



void ssd1306_show_num(int8 x,int8 y,int16 num, uint8 pixel, uint8 size)
{
        char men[15];
#if defined (_STC16) || defined (_STC32G)
        sprintf(men,"%d",num);
#else
    _itoa(num,men,10);
#endif
        ssd1306_show_string(x,y,men,pixel,size);
}

num 类型 是 int16

改成   int32   oled也不能显示超过3万多的数值

测试代码为

int32 a = 0;
int32 bb = 1000;
int32 c = 0;

  a = a + 5000;
  c = (a + bb) / 10000;
  delay(200);
a48fd48ebcbc52e38a0d7c13635b131.jpg









回复

使用道具 举报

8

主题

40

帖子

869

积分

高级会员

Rank: 4

积分
869
发表于 2025-8-9 12:29:40 | 显示全部楼层
rad9700 发表于 2025-8-6 11:30
业余玩家 没示波器,

液晶显示函数原型

用数码管的方法一位一位的取
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号 )

GMT+8, 2026-7-18 13:11 , Processed in 0.109716 second(s), 26 queries .

Powered by Discuz!

© 2001-2026 Comsenz Inc.

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