请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP432P401R
工具/软件:TI C/C++编译器
我尝试通过 ADC 引脚读取2个信号。 每当我运行代码时、只存储第一个 ADC 引脚值。 在调试期间、我发现寄存器 ADC14MEM0和 ADC14MEM1的值发生了变化、但是变化只反映在存储 ADC14MEM0值的变量中。
此外、我不知道这是否有用、但读取的电压值来自一对模拟接近传感器、这对传感器由微控制器提供3.3V 电压。
以下是我的代码设置;
/* DriverLib 包括*/ #include /*标准包括*/ #include #include 静态 uint16_t resultsBuffer[2]; int main (void) { /*停止 WDT */ MAP_WDT_A_HOLDTimer(); MAP_Interrupt_enableSlepOnIsrExit(); /*零填充缓冲器*/ memset (resultsBuffer、0x00、2); //![简单 REF 示例] /*将基准电压设置为2.5并启用基准*// map_REF_A_setReferenceVoltage (REF_A_VREF2_5V); map_REF_A_enableReferenceVoltage(); //![简单 REF 示例] /*初始化 ADC (MCLK/1/1)*/ MAP_ADC14_enableModule(); MAP_ADC14_initModule (ADC_CLOCKSOURCE_MCLK、ADC_PREDIVIDER_1、ADC_DIVIDER_1、 0); /*在*/中为模拟配置 GPIO MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P5、 GPIO_PIN5 | GPIO_PIN4、GPIO_Terti_MODULE_FUNCTION); /*配置 ADC 存储器(ADC_MEM0 - ADC_MEM7 (A0 - A7)、无需重复) *具有内部2.5V 基准* MAP_ADC14_configureMultiSequenceMode (ADC_MEM0、ADC_MEM1、TRUE); MAP_ADC14_configureConversionMemory (ADC_MEM0、 ADC_VREFPOS_AVCC_VREFNEG_VSS、 ADC_INPUT_A0、false); MAP_ADC14_configureConversionMemory (ADC_MEM1、 ADC_VREFPOS_AVCC_VREFNEG_VSS、 ADC_INPUT_A1、false); /*在通道7 (序列结束)上进行转换时启用中断 *已完成并启用转换*/ MAP_ADC14_enableInterrupt (ADC_INT1); /*启用中断*/ MAP_Interrupt_enableInterrupt (INT_ADC14); MAP_Interrupt_enableMaster(); /*将采样计时器设置为自动单步执行序列 *转换。 * MAP_ADC14_enableSampleTimer (ADC_AUTOMATE_DIOTIVation); //ADC14_setSampleHoldTime (ADC_PULSE_WIDTH_64、ADC_PULSE_WIDTH_64); /*触发样本开始*/ MAP_ADC14_enableConversion(); MAP_ADC14_toggleConversionTrigger (); /*正在休眠*/ while (1) { MAP_PCM_gotoLPM0 (); } } //每当转换完成并放置在 * ADC_MEM7中时,就会触发此中断。 这表示转换结束、结果数组 被*抓取并放置在 resultsBuffer */ void ADC14_IRQHandler (void) {中 uint64_t status; STATUS = MAP_ADC14_getEncableInterruptStatus(); MAP_ADC14_clearInterruptFlag (status); IF (STATUS & ADC_INT1) { MAP_ADC14_getMultiSequenceResult (resultsBuffer); } }