亚特力单片机AT32F415的ADC单次转换
AT32F415单片机例程
/****************************************************************************************
File name:
Description:将GPIO PC0作为AD输入口,PC0是ADC1的通道10
****************************************************************************************/
//------------------------------------- include files -----------------------------------#include <at32f4xx.h>
//------------------------------------- variable define ---------------------------------
unsigned int adc_val;/*******************************************************************************
Function:
Descripton:ADC input channel set
*******************************************************************************/
void adc_port_init(void)
{GPIO_InitType GPIO_InitStructure;/*Enable the GPIO Clock*/
#if defined (AT32F421xx)RCC_AHBPeriphClockCmd(RCC_APB2PERIPH_GPIOC, ENABLE);
#elseRCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOC, ENABLE);
#endifGPIO_StructInit(&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pins = GPIO_Pins_0;
#if !defined (AT32F421xx)GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_ANALOG;
#elseGPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;GPIO_InitStructure.GPIO_OutType = GPIO_OutType_PP;GPIO_InitStructure.GPIO_Pull = GPIO_Pull_NOPULL;
#endif GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_2MHz; GPIO_Init(GPIOC, &GPIO_InitStructure);
}/*******************************************************************************
Function:
Descripton:enable ADC clock
*******************************************************************************/
void adc_clk_config(void)
{/* ADCCLK = PCLK2/4 */RCC_ADCCLKConfig(RCC_APB2CLK_Div4); // ê±?ó·??μéè??/* Enable ADC1 clocks */RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_ADC1, ENABLE); // ?a??ADCê±?ó
}/*******************************************************************************
Function:
Descripton:
*******************************************************************************/
void adc_config(void)
{ADC_InitType ADC_InitStructure;__IO uint16_t ADCConvertedValue;int calTimeOut = 1000;/* ADC1 configuration ------------------------------------------------------*/ADC_StructInit(&ADC_InitStructure);ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;ADC_InitStructure.ADC_ScanMode = DISABLE;ADC_InitStructure.ADC_ContinuousMode = DISABLE; // μ¥′?×a??ADC_InitStructure.ADC_ExternalTrig = ADC_ExternalTrig_None;ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; // bit0 = ADC D0ADC_InitStructure.ADC_NumOfChannel = 10; // channel 10ADC_Init(ADC1, &ADC_InitStructure);/* ADC1 regular channels configuration */ ADC_RegularChannelConfig(ADC1, 10, 1, ADC_SampleTime_239_5); /* Enable ADC1 */ADC_Ctrl(ADC1, ENABLE);/* Enable ADC1 reset calibration register */ ADC_RstCalibration(ADC1);/* Check the end of ADC1 reset calibration register */calTimeOut = 1000;while(calTimeOut){if(ADC_GetResetCalibrationStatus(ADC1)) calTimeOut--;else break;}/* Start ADC1 calibration */ADC_StartCalibration(ADC1);/* Check the end of ADC1 calibration */calTimeOut = 1000;while(calTimeOut){if(ADC_GetCalibrationStatus(ADC1)) calTimeOut--;else break;}/* Start ADC1 Software Conversion */ //ADC_SoftwareStartConvCtrl(MY_ADC_SET, ENABLE);
}/*************************************************************
Function:
Description:
*************************************************************/
void adc_init(void)
{adc_clk_config();adc_port_init();adc_config();
}/*************************************************************
Function:
Description:
*************************************************************/
void ad_convert(void)
{// 开启ADCADC_ClearFlag(ADC1, ADC_FLAG_AWD | ADC_FLAG_EC | ADC_FLAG_JEC | ADC_FLAG_JSTR | ADC_FLAG_RSTR );ADC_SoftwareStartConvCtrl(ADC1, ENABLE);// 等待转换完成while(RESET==ADC_GetFlagStatus(ADC1, ADC_FLAG_EC));adc_val = ADC_GetConversionValue(ADC1);}
亚特力单片机AT32F415的ADC单次转换相关推荐
- STM-32:ADC模数转换器—ADC单通道转换/ADC多通道转换
目录 一.ADC 模数转换器 1.1ADC简介 1.2 逐次逼近型ADC工作原理 1.3STM32中的ADC基本结构 1.4STM32中ADC的输入通道 1.5STM32中的ADC的四种转换模式 1. ...
- STM32学习笔记(八)丨ADC模数转换器(ADC单、双通道转换)
本篇文章包含的内容 一.ADC 模数转换器 1.1 ADC简介 1.2 逐次逼近型ADC工作原理 1.3 STM32中的ADC基本结构 1.4 STM32中ADC的输入通道 1.5 STM32中的AD ...
- STM8单片机ADC单次采样模式
STM8S003单片机内部ADC为12位,A/D转换的各个通道可以执行单次和连续的转换模式. 单次转换模式的意思就是,ADC每次转换一次数据后,就会停止转换,如果还需要继续转换的话,就需要手动开启 ...
- STM32单片机实现DMA+ADC+UART功能
突然想测试一下STM32单片机ADC采样速率问题,按照常规方法,可以通过ADC采样,然后将采样值打印出来.但是这种方法在处理和打印数据的时候会占用很多时间,导致处理数据的时间超过了ADC的采样时间.于 ...
- AVR单片机模数转换的ADC实验 ATmega16
6.2 模数转换的ADC实验 6.2.1.实例功能 AVR的模数转换器ADC具有下列特点: 10位精度: 0.5LSB积分非线形误差 ±2LSB的绝对精度: 13µs~260µs的转换时间: 在最大精 ...
- 雅特力单片机开发笔记
目录 1.开发资源获取 2.硬件资源 2.1 硬件原理图pcb资源 2.2 数据手册 3.SDK软件资源 3.1 keil开发环境配置 3.2 软件开发包说明 3.3 jlink配置 3.4 jlin ...
- adc采样时间_太秀了!单片机内置 ADC 实现高分辨率采样?
作者 | 逸珺来源 | 嵌入式客栈(ID:embInn)头图 | CSDN 下载自东方IC[导读] 相信ADC的应用或多或少都会用到,在很多场合都有分辨率要求,要实现较高分辨率时,第一时间会想到采用 ...
- STM32 ADC 单次模式、连续模式、扫描模式(转载)
ADC单通道: 要求进行一次ADC转换:配置为单次模式使能,扫描模式失能.这样ADC的这个通道,转换一次后,就停止转换. 要求进行连续ADC转换:配置为连续模式使能,扫描模式失能.这样ADC的这个通道 ...
- 15. GD32F103C8T6入门教程-adc单通道轮训采集
1.adc gpio初始化 /*使能各种时钟和adc时钟分频输入*/ void rcu_config(void) {/*使能GPIO时钟 */rcu_periph_clock_enable(RCU_G ...
最新文章
- 【306】通过ArcPy编写ArcToolbox
- linux运维趋势 37期刊为啥没有,linux运维常见问题
- kubernetes mysql pxc_K8S使用operator部署和管理Percona - PXC集群
- 苹果进入后 iPhone 时代!
- application.properties 中文乱码问题解决
- 干了四五年Android 开发了,如何突破成长中的技术瓶颈期?
- MS08067安全培训讲师(高薪、专兼职)
- python 如何将视频文件的语音转换为文字
- 2012年财富世界500强排行榜
- 盘点 11 月份 火火火 的 GitHub 项目
- 返回到上一个页面并刷新页面
- cad图形不见了怎么办_CAD画图突然消失 怎么找回
- php删除头尾空,分享php中去除头尾空格的2种方法
- 状语和状语从句的使用
- 微信小程序 云开发表数据一键清空
- python QQ邮件发送
- 语音视频社交中回声消除技术是如何实现的
- To My Little Princess
- mysql权限系统的工作原理_Mysql权限系统工作原理_PHP教程
- 误操作,U盘被dispart命令删除分区了怎么恢复?