工具/软件:Code Composer Studio
您好!
我想读取 ADC 值并生成数字输出(写入数字引脚和从模拟引脚读取分别完成、并且值彼此无关)。 但是、每当我在写入数字引脚后尝试读取 ADC 值时、我都无法从 ADC 读取适当的值。
当我评论数字输出器件时、ADC 读取器件工作正常
这是我写入数字引脚和读取 ADC 引脚的代码片段。
请建议进行任何更改、使其正常工作。
PS:请勿考虑语法错误、因为这只是代码的一部分
//代码片段
空 digitalpinInitialize (int gpionumber)
{
GPIO_SetupPinMux (gpionumber、GPIO_MUX_CPU1、0);
GPIO_SetupPinOptions (gpionumber、GPIO_output、GPIO_PushPull);
}
int adcRead (int 通道)
{
EALLOW;
开关(通道)
{
案例0://AA0
案例1://AA1
案例2://Aa2
案例3://Aa3
案例4://AA4
案例5://AA5
情况0xC://A14
情况0xD://A15
EALLOW;
AdcaRegs.ADCCTL2.bit.prescale = 6;//将 ADCCLK 分频器设置为/4
AdcaRegs.ADCCTL1.bit.INTPULSEPOS=1;
AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;
uint16 acqps;
AdcaRegs.ADCSOC0CTL.bit.CHSEL =通道;//SOC 将在通道上转换
AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps;//采样窗口为 acqps +
//1个 SYSCLK 周期
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 0;//禁用 INT1标志
AdcaRegs.ADCINTSEL1N2.bit.INT1CONT = 0;
AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0;// SOC0结束将设置 INT1标志
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1标志
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//确保 INT1标志被清除
AdcaRegs.ADCINTSOCSEL1.bit.SOC0 = 1;
AdcaRegs.ADCINTFLGCLR.ALL = 0x000F;
AdcaRegs.ADCSOCFRC1.ALL = 0x00FF;
DELAY_US (5);
返回 AdcaResultRegs.ADCRESULT0;
}
}
void main (void)
{
digitalpinInitialize (14);
GPIO_WritePin (14、1);//写入数字引脚14
AdccResults = adcRead (3);//从 ADC 引脚3读取
}