找回密码
 立即注册
楼主: LAOXU

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

[复制链接]

0

主题

26

回帖

100

积分

注册会员

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

好的,非常感谢楼主

0

主题

26

回帖

100

积分

注册会员

积分
100
发表于 2023-2-27 16:17:27 | 显示全部楼层
加了 STC32G_MDU32库  还是速度没有变化 看样子没有浮点硬件,运算还是有点慢 但比STC8快 不知道有哪位大师在做FFT的,有什么好的算法,提供参考一下
  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

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

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

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2023-2-27 20:12:17 | 显示全部楼层
实测 浮点运算速度, 比原标准浮点运算, 速度 快了 3倍.
  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15611
发表于 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  怎么觉得怪怪得
  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15611
发表于 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改变了?


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

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

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

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

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

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

使用道具 举报 送花

2

主题

185

回帖

1048

积分

金牌会员

积分
1048
发表于 2024-2-29 11:39:41 | 显示全部楼层
LAO*** 发表于 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, 2025-5-2 00:02 , Processed in 0.136054 second(s), 112 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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