[MM32硬件]

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

[复制链接]
429|6
手机看帖
扫描二维码
随时随地手机跟帖
ksjdisa|  楼主 | 2022-7-25 15:40 | 显示全部楼层 |阅读模式
想请教一个有关于AD问题
目前我使用MM32F031V8T这个MCU
我目前我会用到两组AD通道
AD0以及AD1动作
我发现在切换过程中疑似有问题
于是我就分开独立进行
发现设定AD0通道动作读出来的数值不变维持在某值
可是设定AD1却是可以行得通
是我设定上哪里有问题吗?
以下附程式码(初始化及读值)
不好意思 要请教大家多多帮忙了><



void ADC_Init(void){
RCC->AHBENR  |= 1<<17;      //使能GPIOA[url=]时钟[/url]
    RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;   //使能ADC1时钟
    GPIOA->CRL  &= 0XFFFFFF00;     //PA0 anolog输入
    RCC->APB2RSTR |= RCC_APB2RSTR_ADC1RST;    //ADC inte[url=]RF[/url]ace 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_CON[url=]ti[/url]NUE|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;
}

使用特权

评论回复
tpgf| | 2022-8-2 15:10 | 显示全部楼层
给定的是什么数据啊

使用特权

评论回复
qcliu| | 2022-8-2 15:18 | 显示全部楼层
使用的是什么模式啊

使用特权

评论回复
drer| | 2022-8-2 15:25 | 显示全部楼层
结果寄存器读错了吧

使用特权

评论回复
coshi| | 2022-8-2 15:32 | 显示全部楼层
采用的是什么模式呢

使用特权

评论回复
kxsi| | 2022-8-2 15:44 | 显示全部楼层
读取的数据是多少啊

使用特权

评论回复
wiba| | 2022-8-2 15:51 | 显示全部楼层
转换速度是多少

使用特权

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

本版积分规则