主题中讨论的其他部件:C2000WARE
工具/软件:TI C/C++编译器
不确定这是C预处理程序的错误,还是仅是Driverlib的错误。
我从C2000ware 1.03 中导入了ADC_EX2_SOC_ePWM示例程序,并在试用。 (使用Code Composer 7.3)。
在ADC_EX2_SOC_ePWM.c文件的顶部,我更改了:
// //定义 // #define results_buffer_size 256 //#define EX_ADC_resolution ADC_resolution 12 bit //或ADC_resolution _16BIT //#define EX_ADC_SIGNAL_MODE ADC_MODE_SINGLE_END_END_//或ADC_MODE_DIFFERENTIAL #define EX_ADC_Resolution ADC_Resolution ADC_16BIT #define MODE (EX_ADC_ADC_ADC_ADC_SIGNAL模式)
然后运行示例,乍一看,它似乎起作用了。 我在调试器中看到ADC_setMode()确实将ADC设置为16位差动模式。
然而,我被initADCSOC()抛弃了。 在编辑器中,它似乎仍然像我所期望的那样灰掉ADC_Resolution _16BIT的更改。 为了确认它没有被执行,我将代码调整为:
////
功能,用于配置ADCA的SOC0由ePWM1触发。
//
void initADCSOC(void)
{
//
//将ADCA的SOC0配置为转换引脚A0。 EPWM1SOCA信号为
//触发器。
//
//对于12位分辨率,采样窗口为15 (200MHz时为75 ns
// SYSCLK率)。 对于16位分辨率,的采样窗口
//将使用64 (200MHz SYSCLK速率时为320 ns)。
//
#IF (EX_ADC_Resolution = ADC_Resolution _12位)
ADC_setupSOC (ADCA_BASE,ADC_SOC_NUMBER0,ADC_TRIGG_EPWM1_SOCA,
ADC_CH_ADCIN0,15);
#Elif (EX_ADC_Resolution == ADC_Resolution _16BIT)
错误;
ADC_setupSOC (ADCA_BASE,ADC_SOC_NUMBER0,ADC_TRIGG_EPWM1_SOCA,
ADC_CH_ADCIN0,64);
#endif
//
//设置SOC0以设置中断1标志。 启用中断并生成
//确保其标志已清除。
//
ADC_setInterruptSource (ADCA_BASE,ADC_INT_NUMBER1,ADC_SOC_NUMBER0);
ADC_enableInterrupt (ADCA_BASE,ADC_INT_NUMBER1);
ADC_clearInterruptStatus (ADCA_BASE,ADC_INT_NUMBER1);
}
它仍然很好!!! (错误未导致错误)。 我不确定问题是#if()语句格式错误,还是CPP正因为ADC_Resolution _16BIT是枚举类型而阻塞。