STM32F7xx外设驱动6-adc(寄存器)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//源文件
void ADCPhyConfig()
{
    RCC->APB2ENR |=1 <<8; //使能 ADC1 时钟
    RCC->AHB1ENR |=1 <<0; //使能 PORTA 时钟
     
    //PA5  输入模式、下拉、高速
  GPIOA->MODER |=  (3<<5*2);  //输入模式
    GPIOA->PUPDR |= (3<<5*2);     //下拉
  GPIOA->OSPEEDR |= (1<<6*2);  //高速
     
 
    RCC->APB2RSTR|=1<<8;    //ADCs 复位
    RCC->APB2RSTR&=~(1<<8); //复位结束
     
    ADC->CCR = 1<<16; //ADCCLK=PCLK2/4=90/4=22.5Mhz,不超过 36Mhz
    ADC1->CR1 = 0; //CR1 设置清零
    ADC1->CR2 = 0; //CR2 设置清零
    ADC1->CR1 |= 0<<24; //12 位模式
    ADC1->CR1 |= 0<<8; //非扫描模式
    ADC1->CR2 &= ~(1<<1); //单次转换模式
    ADC1->CR2 &= ~(1<<11); //右对齐
    ADC1->CR2 |= 0<< 28; //软件触发
    ADC1->SQR1 &= ~(0XF<<20);
    ADC1->SQR1 |= 0<<20; //1 个转换在规则序列中 也就是只转换规则序列 1
     
    //设置通道 5 的采样时间
    ADC1->SMPR2 &= ~(7<<(3*5));//通道 5 采样时间清空
    ADC1->SMPR2 |= 7<<(3*5); //通道 5 480 个周期,提高采样时间可以提高精确度
    ADC1->CR2 |= 1<<0; //开启 AD 转换器
}
 
//获得 ADC 值
//ch:通道值 0~16
//返回值:转换结果
uint16_t Get_Adc(uint8_t ch)
{
//设置转换序列
    ADC1->SQR3&=0XFFFFFFE0;//规则序列 1 通道 ch
  ADC1->SQR3|=ch;
  ADC1->CR2|=1<<30; //启动规则转换通道
  while(!(ADC1->SR&1<<1));//等待转换结束
  return ADC1->DR; //返回 adc 值
}
 
//获取通道 ch 的转换值,取 times 次,然后平均
//ch:通道编号
//times:获取次数
//返回值:通道 ch 的 times 次转换结果平均值
uint16_t Get_Adc_Average(uint8_t ch,uint8_t times)
{
    uint32_t temp_val=0;
    uint8_t t;
    for(t=0;t<times;t++)
    {
    temp_val+=Get_Adc(ch);
    DelayPhyMs(5);
}
  return temp_val/times;
}
 
//头文件
/*****************************adc**************************************/
#define   ADC_CH5    5 //通道 5
 
void ADCPhyConfig(void);
uint16_t Get_Adc(uint8_t ch);
uint16_t Get_Adc_Average(uint8_t ch,uint8_t times);
/**********************************************************************/

  

posted @   ai在西元前  阅读(97)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示