[求助]怎么调用dsPIC30F的DSP来做乘/除运算(函数库找到了,但是运算结果不正确)!

2020-02-09 11:33发布

初学dsPIC,用的DSPIC30F2002的芯片。但是看函数库,DSP内核的函数都是写FFT什么的复杂运算用的。简单的乘除法运算反倒还没有。第一次接触DSP芯片,不知道要怎么调用DSP内核来解乘除法。官网上找到个例子,照着写下来,但是用MPLAB SIM仿真发现C的值不会改变,不知道为什么,希望有经验的朋友帮忙解答一下DSP内核要怎么使用,感谢。
a=2.0;
b=2.0;
asm("MOV _a, W4");
asm("MOV _b, W5");
asm("MOV #_c,W0");
asm("MPY W4*W5,A");
asm("SAC A,[W0]");
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
tiancaigao7
1楼-- · 2020-02-09 15:16
C语言里面可以使用内建函数__builtin_XXX()这类的函数可以直接调用DSP内核来进行定点计算。
headwolf_83
2楼-- · 2020-02-09 16:06
查MCC30的用户手册的附录,有内建函数,按LS的方法做。
liansh
3楼-- · 2020-02-09 20:43
感谢楼上二位,不过我试了一下乘法指令,但是却得不到正确的结果!
register int result asm("A");
int xVal=5, yVal=5,data;
       
result = __builtin_mpy(xVal, yVal,NULL, NULL, 0,NULL, NULL, 0);
data = __builtin_sac(result,0);
用软件仿真看到result中的值是0x32,但是data中的值却是0x0000.不知道为什么!
忘了指定DSP为整数运行了,结果是对了,但是却依然读取不出来,data还是等于0!
jige
4楼-- · 2020-02-09 21:34
回复【3楼】liansh
-----------------------------------------------------------------------

你好,我现在也遇到调用函数库的问题,我现在函数库都没找到,能指点下吗?
感谢万分
wanwanmcu
5楼-- · 2020-02-10 02:07
 精彩回答 2  元偷偷看……

一周热门 更多>