dannyzhu008
发表于 2023-2-26 22:15:30
LAOXU 发表于 2023-2-26 18:26
下面为不外挂 STC32G_MDU32库 编译的(编译后代码长度不同), 另, 例程中, 变量拷贝时未修改, 如下图, 请自 ...
好的,非常感谢楼主
dannyzhu008
发表于 2023-2-27 16:17:27
加了 STC32G_MDU32库还是速度没有变化 看样子没有浮点硬件,运算还是有点慢 但比STC8快 不知道有哪位大师在做FFT的,有什么好的算法,提供参考一下
LAOXU
发表于 2023-2-27 20:10:46
dannyzhu008 发表于 2023-2-27 16:17
加了 STC32G_MDU32库还是速度没有变化 看样子没有浮点硬件,运算还是有点慢 但比STC8快 不知道有哪位大师 ...
c251指令, 对浮点加减乘运算速度还行, 只是对除法运算, 使用了传统的移位加减法操作, 速度慢, 此运算库, 使用 MDU32单元, 利用算法, 改写原 C251的浮点数除法, 使得运算速度大幅度提升, 请看测试结果.
实测 浮点运算速度, 比原标准浮点运算, 速度 快了 3倍.
LAOXU
发表于 2023-2-27 20:12:17
实测 浮点运算速度, 比原标准浮点运算, 速度 快了 3倍.
神农鼎
发表于 2023-2-27 20:58:50
大家感受下,提速3倍,我没装 KEIL
dannyzhu008
发表于 2023-2-28 21:46:29
神农鼎 发表于 2023-2-27 20:58
大家感受下,提速3倍,我没装 KEIL
啥意思没装KEIL怎么觉得怪怪得
神农鼎
发表于 2023-2-28 22:10:06
我在忙生产,不做这些细节的小事N年了,大家自己要用的验证下
zjiafu
发表于 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 LONGLONGL1;
volatile LONGLONGL2;
volatile LONGLONGL6;
volatile LONGLONGL7;
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改变了?
LAOXU
发表于 2023-9-9 17:57:17
zjiafu 发表于 2023-4-18 16:44
64位的里有个测试例子,下载修改测试发现LADD64和LSUB64会死机,什么情况?
你好,我查了一下,内存冲突,keil 将临时变量优化了。
目前只找到两个解决方法:
1、 u8 i=0; 前面加 volatile
即 volatileu8 i=0;
2、 u8 i=0;设置成全局变量。
zxcv1973
发表于 2024-2-29 11:39:41
LAOXU 发表于 2023-2-4 20:20
STC32G_MDU32 标准数学函数库, 含以下库文件.
1. 浮点加减乘除法
浮点除法测试了一下,极端数值下处理结果与KEIL的不一致,比如0.07/9.99999e36,KEIL的结果是为0,而这个库的结果是一个错误的但也很小的数值