简述:对DSPIC33FJ128JC804的两个PWM模块进行初始化(调用PIC自带的库),编译时报错,错误信息如下:D:/workstation/test_space/R2/XY/mio.c:36:21: error: 'PWM2_INT_DIS' undeclared (first use in this function)
D:/workstation/test_space/R2/XY/mio.c:36:21: note: each undeclared identifier is reported only once for each function it appears in
D:/workstation/test_space/R2/XY/mio.c:36:34: error: 'PWM2_FLTA_DIS_INT' undeclared (first use in this function)
D:/workstation/test_space/R2/XY/mio.c:37:13: error: 'PWM2_EN' undeclared (first use in this function)
D:/workstation/test_space/R2/XY/mio.c:37:21: error: 'PWM2_IDLE_CON' undeclared (first use in this function)
D:/workstation/test_space/R2/XY/mio.c:37:35: error: 'PWM2_OP_SCALE1' undeclared (first use in this function)
D:/workstation/test_space/R2/XY/mio.c:37:50: error: 'PWM2_IPCLK_SCALE4' undeclared (first use in this function)
D:/workstation/test_space/R2/XY/mio.c:37:68: error: 'PWM2_MOD_FREE' undeclared (first use in this function)
D:/workstation/test_space/R2/XY/mio.c:44:16: error: 'PWM2_MOD1_IND' undeclared (first use in this function)
D:/workstation/test_space/R2/XY/mio.c:44:30: error: 'PWM2_PEN1L' undeclared (first use in this function)
D:/workstation/test_space/R2/XY/mio.c:44:41: error: 'PWM2_PDIS1H' undeclared (first use in this function)
D:/workstation/test_space/R2/XY/mio.c:45:16: error: 'PWM2_SEVOPS1' undeclared (first use in this function)
D:/workstation/test_space/R2/XY/mio.c:45:29: error: 'PWM2_OSYNC_PWM' undeclared (first use in this function)
D:/workstation/test_space/R2/XY/mio.c:45:44: error: 'PWM2_UEN' undeclared (first use in this function)
源码如下:
void init_pwm1()
{
UINT16 period;
UINT16 config1;
CloseMCPWM1();
ConfigIntMCPWM1(PWM1_INT_DIS&PWM1_FLTA_DIS_INT);
config1=PWM1_EN&PWM1_IDLE_CON&PWM1_OP_SCALE1&PWM1_IPCLK_SCALE4&PWM1_MOD_FREE;
period=FCY/(FPWM1*4)-1;
MAX_DUTY_PWM1=period<<1;
OpenMCPWM1(period ,
0,
config1,
PWM1_MOD1_IND&PWM1_MOD2_IND&PWM1_MOD2_IND&
PWM1_PEN1L&PWM1_PDIS1H&PWM1_PDIS2H&PWM1_PDIS2L&PWM1_PDIS3H&PWM1_PDIS3L,
PWM1_SEVOPS1&PWM1_OSYNC_PWM&PWM1_UEN);
P1DC1= MAX_DUTY_PWM1;
}
//*/
void init_pwm2(void)
{
//*
UINT16 period;
UINT16 config1;
CloseMCPWM2();
ConfigIntMCPWM2(PWM2_INT_DIS&PWM2_FLTA_DIS_INT);
config1=PWM2_EN&PWM2_IDLE_CON&PWM2_OP_SCALE1&PWM2_IPCLK_SCALE4&PWM2_MOD_FREE;
period=FCY/(FPWM2*4)-1;
OpenMCPWM2(period ,
0,
config1,
// PWM2_MOD1_IND&PWM2_MOD2_IND&PWM2_MOD2_IND&PWM2_PEN1H&PWM2_PDIS1L&PWM2_PDIS2H&PWM2_PDIS2L&PWM2_PDIS3H&PWM2_PDIS3L,
// PWM2_SEVOPS1&PWM2_OSYNC_PWM&PWM2_UEN);
PWM2_MOD1_IND&PWM2_PEN1L&PWM2_PDIS1H,
PWM2_SEVOPS1&PWM2_OSYNC_PWM&PWM2_UEN);
MAX_DUTY_PWM2=period<<1;
P2DC1= MAX_DUTY_PWM2;
//*/
}
我尝试将void init_pwm2(void)中的代码注销,编译就能通过。问题是PWM1和PWM2都是在PWM12.H中定义的,为什么void init_pwm1(void)就编译无误,PWM2就会出问题。 |