void init_adc(void)
{
RCC->APB2ENR |= 1 << 2;
GPIOA->CRL &= 0xffffff00;
RCC->APB2ENR |= 1 << 9;
RCC->APB2RSTR |= 1 << 9;
RCC->APB2RSTR &= ~(1 << 9);
RCC->CFGR |= 1 << 15; //72M主频 ADC预分频至12M
ADC1->CR1 = 0;
ADC1->CR2 |= 1 << 20 | 1 << 19 | 1 << 18 | 1 << 17 | 1 << 0 | 1 << 1;
ADC1->SQR1 = 1 << 20;
ADC1->SMPR2 |= 1 << 5 | 1 << 4 | 1 << 3 | 1 << 0 | 1 << 1 | 1 << 2; //通道转换时间设置
ADC1->CR2 |= 1 << 3;
while(ADC1->CR2 & (1 << 3));
ADC1->CR2 |= 1 << 2;
while(ADC1->CR2 & (1 << 2));
}
void get_adc(u16 *num1, u16 *num2)
{
ADC1->SQR3 &= 0xffffc00;
ADC1->SQR3 |= 0 | 1 << 5;
ADC1->CR2 |= 1 << 22;
while(!(ADC1->SR & (1 << 1)));
*num1 = ADC1->DR;
while(!(ADC1->SR & (1 << 1)));
*num2 = ADC1->DR;
}
|