我正在使用 MPLAB IDE 用 C 语言编写 dspic33 微控制器的代码。
这 2 个代码段为 pwmOut_period 提供了不同的值。使用 const long 时,它可以正常工作,但使用宏时,它会给出错误的值。这是为什么?
const long PWM_FREQ = 25000; //Frequency of output PWM Voltage and Temp
const long PWM_CLOCK_FREQ = 500000000; //500Mhz PWM clock inside uC
pwmOut_period = PWM_CLOCK_FREQ / PWM_FREQ;
#define PWM_FREQ 25000 //Frequency of output PWM Voltage and Temp
#define PWM_CLOCK_FREQ 500000000 //500Mhz PWM clock inside uC
pwmOut_period = PWM_CLOCK_FREQ / PWM_FREQ;
宏在预处理器中扩展为文字。由编译器决定文字的类型。在这种情况下,我强调,使用的是
int
类型。除以两个 int
可能会得到与除以 long
不同的值。