打印
[其他]

请问MM32 AD读取问题,设定AD0通道动作读出来的数值不变维...

[复制链接]
2136|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
flycamelaaa|  楼主 | 2021-11-5 15:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想请教一个有关于AD问题
目前我使用MM32F031V8T这个MCU
我目前我会用到两组AD通道
AD0以及AD1动作
我发现在切换过程中疑似有问题
于是我就分开独立进行
发现设定AD0通道动作读出来的数值不变维持在某值
可是设定AD1却是可以行得通
是我设定上哪里有问题吗?
以下附程式码(初始化及读值)
不好意思 要请教大家多多帮忙了><
void ADC_Init(void){
RCC->AHBENR  |= 1<<17;      //使能GPIOA时钟
    RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;   //使能ADC1时钟
    GPIOA->CRL  &= 0XFFFFFF00;     //PA0 anolog输入
    RCC->APB2RSTR |= RCC_APB2RSTR_ADC1RST;    //ADC inteRFace reset
    RCC->APB2RSTR &= ~(RCC_APB2RSTR_ADC1RST); //ADC interface reset close   
    ADC1->ADCFG |= ADCFG_ADCPRE_8|ADCFG_ADCPRE_10;//osc 8M*2/1 = 16M,16MHz/(7+1)/2 = 1Mhz =>period = 2us
    ADC1->ADCR  &= ~(ADCR_ADMD_PERIOD|ADCR_ADMD_CONtiNUE|ADCR_ALIGN_LEFT);//单次非周期模式,数据右对齐
ADC1->ADCR   |= ADCR_ADMD_SINGLE;
    ADC1->ADCFG |= ADCFG_ADEN;     //ADC使能
    ADC1->ADCR |= ADCR_ADST;     //开始转换
}

uint16_t Func_GetADValue(void){
usADSTA = ADC1->ADSTA;
ADC1->ADCFG &= ~ADCFG_ADEN;     //ADC Disable
ADC1->ADSTA = 0x00;
ADC1->ADCHS  = ADCHS_CHEN0;     //CH0=>ADCHS_CHEN0 ;CH0 =>ADCHS_CHEN1 (只改变这通道设定)
ADC1->ADCR |= ADCR_ADST;     //开始转换
ADC1->ADCFG |= ADCFG_ADEN;     //ADC enable
ADC1->ADCR |= ADCR_ADST;
do{
  usADSTA = ADC1->ADCR;
  usADSTA &= ADCR_ADST;
}while(usADSTA != 0);
usCH0Value = ADC1->ADDATA&0xfff;
return usCH0Value;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

610

主题

2250

帖子

0

粉丝