IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 基于stm32单片机简单4步学会adc模块 -> 正文阅读

[嵌入式]基于stm32单片机简单4步学会adc模块

第一模块 ADC

ADC的知识点很多,我这里主要讲一下如何在stm32中傻瓜式的使用ADC函数,一般情况下只需要学会这3个结构体的调用即可第一个 adc_init();对函数adc初始化 ,第二个Get_Adc(u8 ch)获取adc的值,第三个取平均值Get_Adc_Average(u8 ch,u8 times),ps:能在主函数对这3个函数会调用,会改(学会这些ad模块就基本上ok了)。

下面给大家源代码分析

1.adc的初始化

void adc_init(); 

void	Adc_Init(void)

{	
    ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |

 u16 get_adc(u8 ch); 

 u16get_adc_average(u8 ch,u8 times)

RCC_APB2Periph_ADC1	, ENABLE );	//使能 ADC1 通道时钟

RCC_ADCCLKConfig(RCC_PCLK2_Div6);	//设置 ADC 分频因子 6

//72M/6=12,ADC 最大时间不能超过 14M

//PA1 作为模拟通道输入引脚

GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    //模拟输入
GPIO_Init(GPIOA, &GPIO_InitStructure);	//初始化 GPIOA.1

 

ADC_DeInit(ADC1);	//复位 ADC1,将外设 ADC1 的全部寄存器重设为缺省值
    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
    //ADC 独立模式
    ADC_InitStructure.ADC_ScanConvMode = DISABLE;	   
    //单通道模式
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //单次转换模式
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
    //转换由软件而不是外部触发启动
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC 数据右对齐
    ADC_InitStructure.ADC_NbrOfChannel = 1;	
    //顺序进行规则转换的ADC 通道的数目
    ADC_Init(ADC1, &ADC_InitStructure);	//根据指定的参数初始化外设
    ADCx ADC_Cmd(ADC1, ENABLE);	//使能指定的 ADC1

ADC_ResetCalibration(ADC1);	//开启复位校准
    while(ADC_GetResetCalibrationStatus(ADC1)); //等待复位校准结束
    ADC_StartCalibration(ADC1);	//开启 AD 校准
    while(ADC_GetCalibrationStatus(ADC1));	//等待校准结束

}

第2个获得 ADC 值

第2个获得 ADC 值//ch: 通 道 值 0~3


```c
u16 Get_Adc(u8 ch)
//ch: 通 道 值 0~3
{

//设置指定 ADC 的规则组通道,设置它们的转化顺序和采样时间

ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );

//通道 1,规则采样顺序值为 1,采样时间为 239.5 周期
    ADC_SoftwareStartConvCmd(ADC1, ENABLE);	//使能软件转换功能
    while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束

return ADC_GetConversionValue(ADC1); //返回最近一次 ADC1 规则组的转换结果

}

``

3获得adc的平均值

u16 Get_Adc_Average(u8 ch,u8 times)

{

u32 temp_val=0; u8 t;

for(t=0;t<times;t++)

{	temp_val+=Get_Adc(ch); delay_ms(5);

}

return temp_val/times;

}

第四个 具体表现在主函数的使用(调用) ,会用会改即可

//===========================主函数==================
int main(void)`

`{`
`u16 adcx; float temp;  // 定义2个参数。下面adc的值在lcd屏显示的来源`

 `delay_init();`

`NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	//设置 NVIC 中断分组 2`

`uart_init(115200);	//串口初始化波特率为 115200`

`LED_Init();	//LED 端口初始化`

`LCD_Init();	//LCD 初始化`

`Adc_Init();		//ADC 初始化POINT_COLOR=RED;	//设置字体为红色
  LCD_ShowString(60,50,200,16,16,"ELITE STM32"); 
  LCD_ShowString(60,70,200,16,16,"ADC TEST"); 
  LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
  LCD_ShowString(30,110,200,16,16,"2015/1/14");`

`//显示提示信息`

`POINT_COLOR=BLUE;	//设置字体为蓝色
LCD_ShowString(60,130,200,16,16,"ADC_CH0_VAL:"); LCD_ShowString(60,150,200,16,16,"ADC_CH0_VOL:0.000V");`

`while(1)`

`{`

`adcx=Get_Adc_Average(ADC_Channel_1,10); LCD_ShowxNum(156,130,adcx,4,16,0);//显示 ADC 的值
  temp=(float)adcx*(3.3/4096);`

`` 

`LCD_ShowxNum(156,150,adcx,1,16,0);//显示电压值
  temp-=adcx;`
      
`temp*=1000; LCD_ShowxNum(172,150,temp,3,16,0X80); LED0=!LED0;`

`delay_ms(250);`

`}

有写得不好的请欢迎各位指正,一起交流讨论,互相学习

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-25 11:50:39  更:2021-07-25 11:50:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:50:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码