初级会员

- 积分
- 147
- 金钱
- 147
- 注册时间
- 2012-8-24
- 在线时间
- 3 小时
|
5金钱
请问我用PA0 1 2 口分别显示同一路电压, 但为什么只有PA1是正确的(经过万用表测量)。其他两路都相差很大。 板子我看PA0 1 2 口都没接外设。
void Adc_Init(void)
{
RCC->APB2ENR|=1<<2;
GPIOA->CRL&=0XFFFFF000
RCC->APB2ENR|=1<<9; //ADC1?±??????
RCC->APB2RSTR|=1<<9; //ADC1????
RCC->APB2RSTR&=~(1<<9);//?????á??
RCC->CFGR&=~(3<<14); //·????ò×?????
RCC->CFGR|=2<<14;
ADC1->CR1&=0XF0FFFF; //?¤×÷????????
ADC1->CR1|=0<<16; //?????¤×÷???? 0== 0000
ADC1->CR1&=~(1<<8); //·??¨?è????
ADC1->CR2&=~(1<<1); //????×???????
ADC1->CR2&=~(7<<17);
ADC1->CR2|=7<<17; //?í??????×???
ADC1->CR2|=1<<20; //????????????·?(SWSTART)!!! ±???????????????????·?
ADC1->CR2&=~(1<<11); //??????
ADC1->SQR1&=~(0XF<<20);
ADC1->SQR1&=0<<20; //1??×????????ò?ò???? ????????×??????ò?ò??1
ADC1->SMPR2&=0XFFFFF000;//?¨??0,1,2,3???ù?±??????
ADC1->SMPR2|=7<<9; //?¨??3 239.5????,?á?????ù?±???????á?????·??
ADC1->SMPR2|=7<<6; //?¨??2 239.5????,?á?????ù?±???????á?????·??
ADC1->SMPR2|=7<<3; //?¨??1 239.5????,?á?????ù?±???????á?????·??
ADC1->SMPR2|=7<<0; //?¨??0 239.5????,?á?????ù?±???????á?????·??
ADC1->CR2|=1<<0; //????AD×????÷
ADC1->CR2|=1<<3; //??????????×?
while(ADC1->CR2&1<<3); //??????×??á??
ADC1->CR2|=1<<2; //????AD??×?
while(ADC1->CR2&1<<2); //??????×??á??
//???????í???è??????????×?????????×??á???±??????????
}
//获取电压值
u16 Get_Adc(u8 ch) // ch 为 0 1 2
{
//?è??×????ò??
ADC1->SQR3&=0XFFFFFFE0;//???ò?ò??1 ?¨??ch
ADC1->SQR3|=ch;
ADC1->CR2|=1<<22; //???????ò×????¨??
while(!(ADC1->SR&1<<1));//????×????á??
return ADC1->DR; //·???adc??
} |
|