MSP432笔记——单路ADC采样

MSP432——单路ADC采样

配置ADC

  • 引脚配置
  • 使能ADC模块,初始化ADC模块
  • 单路转化配置,转化存储器配置
  • 使能采样时钟,使能转化
  • 中断使能,开启总中断
  • 开始转化
    //enable ADC module
    ADC14_enableModule();
    ADC14_initModule(ADC_CLOCKSOURCE_MCLK,ADC_PREDIVIDER_1,ADC_DIVIDER_1,0);

    //gpio P5.5
    GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5,GPIO_PIN5,GPIO_TERTIARY_MODULE_FUNCTION);
    //ADC Mem
    ADC14_configureSingleSampleMode(ADC_MEM0,true);
    ADC14_configureConversionMemory(ADC_MEM0,ADC_VREFPOS_AVCC_VREFNEG_VSS,ADC_INPUT_A0,false);
    //Sample timer
    ADC14_enableSampleTimer(ADC_MANUAL_ITERATION);  //完成一次采样后需要再用ADC14_toggleConversionTrigger才开始下一次
    ADC14_enableConversion();

    ADC14_toggleConversionTrigger();    //开始转化

    //ADC 中断
    ADC14_enableInterrupt(ADC_INT0);

 	Interrupt_enableInterrupt(INT_ADC14);

    Interrupt_enableSleepOnIsrExit();
    Interrupt_enableMaster();

计算浮点数要开启FPU模块enableFPU

    //FPU enable    计算ADC使用
    FPU_enableModule();
    FPU_enableLazyStacking();

中断服务函数

void ADC14_IRQHandler()
{
    uint32_t status = ADC14_getEnabledInterruptStatus();    //获取中断状态
    ADC14_clearInterruptFlag(status);   //清空标志位

	// 自行指定
    if (status & ADC_INT0)
    {
        uint16_t curADCvalue=0;
        curADCvalue = ADC14_getResult(ADC_MEM0);
        float curVoltage=1.0;
        curVoltage = (curADCvalue * 3.3 ) / 16384 ;
    }
    //下一次连续采样
    ADC14_enableSampleTimer(ADC_MANUAL_ITERATION);  //完成一次采样后需要再用ADC14_toggleConversionTrigger才开始下一次
    ADC14_enableConversion();
    ADC14_toggleConversionTrigger();    //开始转化
}
  • 8
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值