大明狐 发表于 2025-12-12 13:38:36

[已解决]请教关于STC32G144K246和MDU32库的u32除法问题

问题已经解决~~~~~
之前数学库用的是32G12K的MUD32库
换成32G144K专用的DSP32库就可以了
{:hecai:}{:hecai:}{:hecai:}{:hecai:}{:hecai:}{:hecai:}




、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

移植 STC32G144K246 的OLED驱动的时候,发现一个问题,显示数字的函数,不论输入的数值是多少,显示的结果都是0。

然后写了个测试程序,查看输入的数值和位数

void ShowNum( u32 num )
{
      u32 numtemp = num;
      u8 HLimit = 0;
      
      numtemp = num;
      
      printf_usb("num = %lu ,", num);
      printf_usb("numtemp = %lu ,\r\n\r\n", numtemp);
      
      while( numtemp )
      {
                HLimit ++;
                numtemp = numtemp/10;
                printf_usb("HLimit = %d , ", HLimit);
                printf_usb("numtemp = %lu \r\n", numtemp);
      }

}

调用 ShowNum函数,填入数值 1234567,

ShowNum( 1234567 );

串口助手显示的结果是




numtemp 的值经过一次 /10 计算之后,直接变成0了。


而这个函数在 STC32G12K128 上运行,则可以正常显示结果



========================================================

几番尝试之后发现

1、
如果在 while 循环里进行除法计算的地方,把变量 numtemp 的数据类型强制转换成float类型,
      numtemp = (float) numtemp/10;
就可以显示正确的计算结果。

2、
在创建 STC32G144K246 和 STC32G12K128 的工程的时候,都添加了 MDU32硬件数学库

在 STC32G12K128 的工程中,有没有这个库,计算结果都正确;
而在 STC32G144K246 的工程里,
加载了库文件stc32_mdu32_large.lib 之后,计算结果就不正常;
不加载这个库文件的话,计算结果就变正常了

3、
还是在计算除法的那一行
在加载了MDU32库的情况下,如果除数是2的倍数,计算结果也正常

如果除数是其它数值(比如3、5、10等等),就会出现直接变成0的情况

===================================================



第一次遇到这个问题,之前在 8H、32G12K 、AI8051U 上都能正常计算,AI8051U也是加载了MDU32+TFPU库的。
u8、u16之类其它的数据类型也都计算正常。

请问除了不加载MDU32库,怎么才能在 STC32G144K246 上正常计算u32类型的除法呢?









神农鼎 发表于 2025-12-12 14:33:52

https://www.stcai.com/khs

STC32G144K246 的 MDU32库包含在DSP库中,
不是传统的 MDU32库

大明狐 发表于 2025-12-12 14:13:07


STC32G144K246 上用OLED显示数字

1、没有加载MDU32库,显示正常



2、加载MDU32库之后,显示结果都变成0




ercircle 发表于 2025-12-12 14:17:46

"加载了库文件 stc_usb_cdc_32g.lib 之后,计算结果就不正常;"

这里写错了吧,是加载stc32_mdu32_large.lib

可以复现

ercircle 发表于 2025-12-12 14:25:03

改用DSP库测试正常
深圳国芯人工智能有限公司-库函数




大明狐 发表于 2025-12-12 14:29:57

ercircle 发表于 2025-12-12 14:25
改用DSP库测试正常
深圳国芯人工智能有限公司-库函数

果然!换上专门的库就正常了{:hecai:}

神农鼎 发表于 2025-12-12 14:35:40

帮{:baoquan:}用上下面的万能板,发视频/图片

页: [1]
查看完整版本: [已解决]请教关于STC32G144K246和MDU32库的u32除法问题