Thread 中讨论的其他器件:Midas、 controlSUITE、 C2000WARE、 TIDM-1007
您好!
使用 ccs6.2和 controlSUITE 的 Midas 中的函数_IQ15div。
功能正常工作。
我对 ccs9.2使用了相同的代码、并使用了 c2000ware_V2Xxx、但该函数不再工作。
这是反汇编代码。
104 dffw->invout =(FFWD_Int16_t)_IQ15div (dffw->num、Uout);
C$L3:
083082: C242 MOVL *-SP[2]、XAR6
083083: 06E1 MOVL ACC、*+ XAR1[4]
083084: 7648B000 LCR ..\src_coff \IQNdiv.asm:245:334$
083086: 1EC1 MOVL *+ XAR1[0]、ACC
问题1:该功能是否已停产? 或者链接器文件中是否有新设置?
然后、我使用以下代码替换该函数
#define IQ15DIV (x、y) (x << 15)/y)
这是等效的反汇编代码
104 dffw->invout =(FFWD_Int16_t)Q15_div(dffw->num、Uout);
C$L3:
083080: C242 MOVL *-SP[2]、XAR6
083081: 06E4 MOVL ACC、*+ XAR4[4]
083082: FF3E LSL ACC、15.
083083: 00C83198 FFC XAR7、L$DIV
083085: 1EC4 MOVL *+XAR4[0]、ACC
新函数提供了正确的计算。
问题2:您是否看到此代码有任何问题?
问题3:是否有更好的方法来实现_IQ15div 运算?
此致、
KIEN