找回密码
 立即注册
楼主: LA***

世上(也是史上)功能最全的STC32 MDU32应用 LIB

[复制链接]

该用户从未签到

0

主题

26

回帖

100

积分

注册会员

积分
100
发表于 2023-2-26 22:15:30 | 显示全部楼层
LAOXU 发表于 2023-2-26 18:26
下面为不外挂 STC32G_MDU32库 编译的(编译后代码长度不同), 另, 例程中, 变量拷贝时未修改, 如下图, 请自 ...

好的,非常感谢楼主

该用户从未签到

0

主题

26

回帖

100

积分

注册会员

积分
100
发表于 2023-2-27 16:17:27 | 显示全部楼层
加了 STC32G_MDU32库  还是速度没有变化 看样子没有浮点硬件,运算还是有点慢 但比STC8快 不知道有哪位大师在做FFT的,有什么好的算法,提供参考一下
  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 129 天

    [LV.7]常住居民III

    37

    主题

    851

    回帖

    3894

    积分

    荣誉版主

    积分
    3894
     楼主| 发表于 2023-2-27 20:10:46 | 显示全部楼层
    dannyzhu008 发表于 2023-2-27 16:17
    加了 STC32G_MDU32库  还是速度没有变化 看样子没有浮点硬件,运算还是有点慢 但比STC8快 不知道有哪位大师 ...

    c251指令, 对浮点加减乘运算速度还行, 只是对除法运算, 使用了传统的移位加减法操作, 速度慢, 此运算库, 使用 MDU32单元, 利用算法, 改写原 C251的浮点数除法, 使得运算速度大幅度提升, 请看测试结果.
    实测 浮点运算速度, 比原标准浮点运算, 速度 快了 3倍.
    111.jpg

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 129 天

    [LV.7]常住居民III

    37

    主题

    851

    回帖

    3894

    积分

    荣誉版主

    积分
    3894
     楼主| 发表于 2023-2-27 20:12:17 | 显示全部楼层
    实测 浮点运算速度, 比原标准浮点运算, 速度 快了 3倍.

    该用户从未签到

    550

    主题

    9208

    回帖

    1万

    积分

    管理员

    积分
    13924
    发表于 2023-2-27 20:58:50 | 显示全部楼层
    大家感受下,提速3倍,我没装 KEIL

    该用户从未签到

    0

    主题

    26

    回帖

    100

    积分

    注册会员

    积分
    100
    发表于 2023-2-28 21:46:29 | 显示全部楼层
    神农鼎 发表于 2023-2-27 20:58
    大家感受下,提速3倍,我没装 KEIL

    啥意思  没装KEIL  怎么觉得怪怪得

    该用户从未签到

    550

    主题

    9208

    回帖

    1万

    积分

    管理员

    积分
    13924
    发表于 2023-2-28 22:10:06 | 显示全部楼层
    我在忙生产,不做这些细节的小事N年了,大家自己要用的验证下

    该用户从未签到

    1

    主题

    3

    回帖

    35

    积分

    新手上路

    积分
    35
    发表于 2023-4-18 16:44:45 | 显示全部楼层
    本帖最后由 zjiafu 于 2023-4-18 19:07 编辑

    64位的里有个测试例子,下载修改测试发现LADD64和LSUB64会死机,什么情况?


    #include <STC32G.H>
    #include <long64.h>
    #include <INTRINS.h>   

    volatile   LONGLONG  L1;
    volatile   LONGLONG  L2;
    volatile   LONGLONG  L6;
    volatile   LONGLONG  L7;

    void main(void)
    {         
            u8 i=0;
              WORD64(L1, 0x000000000, 0x00000000);         
            WORD64(L2, 0x000000000, 0x00001234);   
            
              do{
              LADD64(L1, L2, L6);                    
              LSUB64(L1, L2, L7);                     
              i++;
            }while(i>0)   //循环256次

    while(1);
    }            


    我把子LADD64和LSUB64放在while()循环里,结果跳不出循环
    后来调试发现  i 的值一直是0XBB,所以跳不出循环,是不是"i"值被LADD64和LSUB64改变了?


    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 129 天

    [LV.7]常住居民III

    37

    主题

    851

    回帖

    3894

    积分

    荣誉版主

    积分
    3894
     楼主| 发表于 2023-9-9 17:57:17 | 显示全部楼层
    zjiafu 发表于 2023-4-18 16:44
    64位的里有个测试例子,下载修改测试发现LADD64和LSUB64会死机,什么情况?

    你好,我查了一下,内存冲突,keil 将临时变量优化了。

    目前只找到两个解决方法:

    1、 u8 i=0; 前面加 volatile
         即 volatile  u8 i=0;

    2、 u8 i=0;  设置成全局变量。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    107

    回帖

    607

    积分

    高级会员

    积分
    607
    发表于 2024-2-29 11:39:41 | 显示全部楼层
    LAOXU 发表于 2023-2-4 20:20
    STC32G_MDU32 标准数学函数库, 含以下库文件.

    1. 浮点加减乘除法

    浮点除法测试了一下,极端数值下处理结果与KEIL的不一致,比如0.07/9.99999e36,KEIL的结果是为0,而这个库的结果是一个错误的但也很小的数值

    点评

    测试了, 标准值是 7.0e-39, MDU32浮点除法, 值是 2.2e-39, c251库 浮点除法, 值是 0, 相比之下, 还是 MDU32浮点除法精度高点(实际上这么小的值 e-39已无意义) [attachimg]36660[/attachimg]  详情 回复 发表于 2024-3-1 17:53
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-4-25 21:48 , Processed in 0.077556 second(s), 66 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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