STM32之ADC单通道单次例程
#include "stm32f10x.h"
/* RCC时钟配置 */
void RCC_config(void)
{
ErrorStatus HSEStartUpStatus;
/* RCC寄存器设置为默认配置 */
RCC_DeInit();
/* 打开外部高速时钟 */
RCC_HSEConfig(RCC_HSE_ON);
/* 等待外部高速时钟稳定 */
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS)
{
/* 设置HCLK = SYSCLK */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* 设置PCLK2 = HCLK */
RCC_PCLK2Config(RCC_HCLK_Div1);
/* 设置PCLK1 = HCLK / 2 */
RCC_PCLK1Config(RCC_HCLK_Div2);
// /* 设置FLASH代码延时 */
// FLASH_SetLatency(FLASH_Latency_2);
// /* 使能预取址缓存 */
// FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
/* 设置PLL时钟源为HSE倍频9 72MHz */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
/* 使能PLL */
RCC_PLLCmd(ENABLE);
/* 等待PLL稳定 */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
/* 设置PLL为系统时钟源 */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* 等待系统时钟源切换到PLL */
while(RCC_GetSYSCLKSource() != 0x08);
}
}
/* 毫秒延时函数 */
void delay_ms(uint16_t time)
{
uint16_t i = 0;
while(time--)
{
i = 12000;
while(i--);
}
}
/* GPIO配置 */
void GPIO_config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* 时钟配置 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
/* 模拟输入 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
/* ADC配置 */
void ADC_config(void)
{
ADC_InitTypeDef ADC_InitStructure;
/* 使能时钟 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
/* 配置ADC时钟12MHz */
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; /* 独立模式 */
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_InitStructure.ADC_NbrOfChannel = 1; /* 1个通道 */
ADC_Init(ADC1, &ADC_InitStructure);
/* 模拟通道0、采样序列1、采样周期55.5 */
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5);
/* 使能ADC */
ADC_Cmd(ADC1, ENABLE);
/* 重置校准寄存器 */
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
/* 开始校准 */
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
}
/* 主函数 */
int main(void)
{
uint32_t value;
volatile float V;
/* RCC时钟配置 */
RCC_config();
/* IO配置 */
GPIO_config();
/* ADC配置 */
ADC_config();
while(1)
{
/* 启动转换 */
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
/* 等待转换结束 */
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
/* 获取转换值 */
value = ADC_GetConversionValue(ADC1);
/* 将数字量转换为电压值 */
V = (float)value / 4096 * 3.3;
delay_ms(1000);
}
}
STM32之ADC单通道单次例程相关推荐
- STM32+光敏电阻实现单通道单次采样实验
准备设备: STM32系列单片机,光敏电阻,Keil uVision5,STM32CubeMX,其他外设 需要知识点: 了解ADC模数转换工作原理 简单介绍ADC ADC简介 ADC其实就是模数转换器 ...
- 【资料】低功耗1/单通道/单按键触摸触控芯片VKD223B/EB/NB,适用于TWS/电池供电类触摸屏等
型号:VKD223B/VKD223NB 陈锐鸿:188/2466/2436 品牌:永嘉微电/VINKA 封装:SOT23-6 VKD223B/NB 概述: VKD223B/VKD223NB SOT2 ...
- STM32之ADC模数转换器单通道。
ADC模数转换器 ADC(Analog-Digital Converter)模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁. 12位逐次 ...
- 使用HAL库开发STM32:ADC基础使用
文章目录 目的 基础说明 基础使用 配置选项说明 轮询 单通道 单次 轮询 单通道 连续 轮询 多通道 扫描 中断 单通道 中断 多通道 扫描 DMA 单通道 单轮 DMA 单通道 连续 DMA 多通 ...
- stm32之ADC应用实例(单通道、多通道、基于DMA)
硬件:STM32F103VCT6 开发工具:Keil uVision4 下载调试工具:ARM仿真器 网上资料很多,这里做一个详细的整合.(也不是很详细,但很通俗). 所用的芯片内嵌3个12位的模拟/数 ...
- STM32 ADC单通道与多通道_DMA学习笔记
转自:https://blog.csdn.net/dmfylb/article/details/72802690 第一部分 ADC单路采集 下面我们将 PC0引脚配置成 AD1的通道10为例进行讲解 ...
- 【STM32】STM32CUBEMX + ADC(单通道,双通道DMA)
STM32CUBEMX + ADC(单通道,双通道DMA) 案例应用 :使用ADC采集电压(单通道.单通道+DMA.双通道+DMA),并利用串口打印采集转换后的电压值 1.工具 IAR STM32CU ...
- STM-32:ADC模数转换器—ADC单通道转换/ADC多通道转换
目录 一.ADC 模数转换器 1.1ADC简介 1.2 逐次逼近型ADC工作原理 1.3STM32中的ADC基本结构 1.4STM32中ADC的输入通道 1.5STM32中的ADC的四种转换模式 1. ...
- 【STM32多路温控—第六章】ADC单通道电流检测处理/晶振处理
1. 时钟配置: 1.1 Crystal/Ceramic Resonator(晶体/陶瓷晶振) 1.2 BYPASS Clock Source(旁路时钟) YPASS Clock Source(旁路时 ...
最新文章
- c语言以空格分割字符串_C语言: 利用sscanf() 函数分割字符串
- 爬虫与浏览器的区别,爬虫产生(出自简书)
- C语言使用fopen的两点注意事项
- 1.用代码演示String类中的以下方法的用法 (2018.08.09作业)
- 测试接口python常用命令_用python实现接口测试(四、操作MySQL)-阿里云开发者社区...
- 学习笔记之进程管理的相关重要命令
- sql server 恢复数据库时提示有其他用户连接,怎么办?
- 数字频率系数测试软件,简易数字频率计电路图大全 - 全文
- 中兴服务器默认用户名密码是什么,中兴路由器登录地址默认用户名密码
- 【Java】代码加密
- 获取 Panabit Linux 版 root 密码
- 爬虫面试python
- Color Banding的个人记录
- (CRON) info (No MTA installed, discarding output
- iOS 中使用 Mobile Installation 安装 IPA(使用iTunes/AppStore一样的安装API)
- java断路器触发条件_断路器,AOP实现断路器模式 ------------Hystrix
- spotlight安装使用
- Layui 数据表格toolbar中使用模板引擎templet,当前系统时间比较问题
- 引入隔离率与潜伏人员的SIR模型附matlab代码
- WEB前端 网页设计 简介
热门文章
- Qt工作笔记-Qt文档阅读笔记-setMouseTracking(无需按下移动使得widget获取鼠标位置)
- Qt工作笔记-QHash与QMap查找速度粗略比较实战
- 增量式pid调节方式有何优点_PID控制算法
- wxpython是干嘛的_你都用 Python 来做什么?
- Java游戏触屏处理,非触屏java游戏转换为触屏游戏工具使用方法
- android opengl es 雾化效果实例
- (计算机组成原理)第二章数据的表示和运算-第二节4:定点数的加减运算和溢出判断
- Zookeeper C API 基本常量和结构体介绍
- 栈溢出笔记1.2 覆盖EIP
- LeetCode 77 组合