MSPM0G3507学习——ADC

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

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值