2024.07.17
单通道采值
配置时需要改的地方
#include "ti/driverlib/dl_adc12.h"
#include "ti_msp_dl_config.h"
volatile bool ADC_Flag;
volatile uint16_t ADC_val;
int main(void)
{
SYSCFG_DL_init();
NVIC_EnableIRQ(ADC12_0_INST_INT_IRQN);
while (1)
{
ADC_Flag = false;
DL_ADC12_startConversion(ADC12_0_INST);
while(ADC_Flag == false);
ADC_val = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);
DL_ADC12_enableConversions(ADC12_0_INST);
}
}
void ADC12_0_INST_IRQHandler(void)
{
switch (DL_ADC12_getPendingInterrupt(ADC12_0_INST))
{
case DL_ADC12_IIDX_MEM0_RESULT_LOADED:
ADC_Flag = true;
break;
default:
break;
}
}
多路同时读取
有2路读取,则只用使能中断MEM1。(n-1)
#include "ti_msp_dl_config.h"
volatile bool ADC_Flag;
volatile uint16_t ADC_val0, ADC_val1;
int main(void)
{
SYSCFG_DL_init();
NVIC_EnableIRQ(ADC12_0_INST_INT_IRQN);
while (1)
{
ADC_Flag=false;
DL_ADC12_startConversion(ADC12_0_INST); //启动转换(对模块)
while(ADC_Flag==false);
ADC_val0 = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);
ADC_val1 = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_1);
DL_ADC12_enableConversions(ADC12_0_INST);
}
}
观测数值,接3.3V电压则接近满量程4096,接地则0,悬浮态则数值不定。
这次记的有点草率 T_T