This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
在我的项目中、我在各种文件中使用 IQmathlib 定点算术库。
在每个文件中、我使用以下序列:
#define GLOBAL_IQ 6 //例如 #include
在构建和闪存之后、我注意到在打开的声明时
_iq (211.98232);
它将跳转到 iqmatlib.h 并转到以下部分、就像 GLOBAL_IQ = 4一样
打开以下声明时也会发生同样的情况:
iqtemp =_IQmpy (ucnt、_IQ (-636.8443398));
它将跳至:
我甚至尝试了:
#undef global_IQ #defineglobal_IQ6 #include "IQmathLib.h"
相同的结果:(
这种情况发生在任何文件上的任何#define 值、始终处理 global_iq==4
我在项目属性>编译器>预定义中双击 global_IQ、没有这样的定义
我已经清理并重建了项目。 相同的结果。
有什么想法吗?
您好、Eyalasko、
我将尝试引入 MSP430 MSP-IQMathlib 作者征求他的意见。 我认为#define 宏不是全局宏、因此尝试在 IQmathLib.h 之外更改值不会产生任何影响。 您是否曾尝试更改 IQmathLib.h 内的 global_IQ 定义?
此致、
Ryan
CCS 7.0.0.00042
编译器16.9.1LTS
iqmathlib .A 取自 TI_products_DIR\MSP430Ware_3_50_00_04\iqmathlib\libraries\ccs\MPY32\5xx_6xx\IQmathLib.A (我认为它的01.10.00.05)
iqmathlib.h 包含在"${TI_products_DIR}\MSP430Ware_3_50_00_04\iqmathlib\include"中 (我认为它的01.10.00.05)
您好、Ryan、
是否有此更新?
Yealasko、
我可以重新创建此问题、我看到使用了不正确的 global_Q 定义、但是当我编译和运行时、我会得到正确的结果。 我使用以下两个文件创建了一个测试项目。
main.c:
#include "msp430.h" //将全局 Q 设置为12,这在标头 #define global_Q 中正确显示 12 #include "QmathLib.h" volatile _q result; extern _q testQ4 (void); int main (void) { /*禁用 WDT。 * WDTCTL = WDTPW + WDTHOLD; //结果正确设置为_Q12 (1.0)= 4096 结果=_Q (1.0); //调用测试函数、结果正确设置为_Q4 (1.0)= 16 结果= testQ4(); 返回0; }
test.c:
//将全局 Q 设置为4,标头仍然显示 main.c #define global_Q 中的12 4 #include "QmathLib.h" _q testQ4 (void) { _q 结果; 结果=_Q (1.0); 返回结果 ;}
从 main.c 中打开 QmathLib 头会显示_Q (a)被定义为_Q12 (a)、正如您所期望的那样。 然而、从 test.c 中打开标头时、错误地显示_Q (a)被定义为_Q12 (a)、此时它应该是_Q4 (a)。 当我运行项目时、两种情况下的结果都已正确设置、因此宏工作正常。但是我认为这是 CCS 处理处理器和语法突出显示的问题、一个.c 文件的头文件会被处理、但从其他源代码打开时不会重新处理。
此致、
Brent