STM32F103学习日志 第四天:电压检测

ADC 简介

STM32f103 系列有 3 个 ADC,精度为 12 位。

每个 ADC 最多有 16 个外部通道。其中 ADC1 和 ADC2 都有 16 个外部通道,ADC3 根据 CPU 引脚的不同通道数也不同,一般都有 8 个外部通道。

ADC 的模式非常多,功能非常强大,具体的我们在功能框图中分析每个部 分的功能。

配置ADC:

一共需要经过八个配置过程,分别是:配置电压输入范围,输入通道转换顺序,触发源,ADC时钟,数据储存器,中断,转换电压

ADC_InitTypeDef 结构体

1 typedef struct
2 {
3 uint32_t ADC_Mode;                     // ADC 工作模式选择
4 FunctionalState ADC_ScanConvMode;      //ADC 扫描(多通道)或者单次(单通道)模式选择 
5 FunctionalState ADC_ContinuousConvMode;// ADC 单次转换或者连续转换选择
6 uint32_t ADC_ExternalTrigConv;         // ADC 转换触发信号选择
7 uint32_t ADC_DataAlign;                // ADC 数据寄存器对齐格式
8 uint8_t ADC_NbrOfChannel;              // ADC 采集通道数
9 } ADC_InitTypeDef;

第一步 配置CubeMX

配置ADC

 配置UART

 生成KEIL5文件

 第二步 编写代码

写在头文件下面
#include "stdio.h"		//sprintf的库函数的头文件
#include "string.h"		//strlen的库函数的头文件


以下添加在主函数的while循环中
//存放HAL_ADC_GetValue读回来的值
uint32_t ret;
//用字符数组保存结果
char str[64];
//ADC启动函数(adc句柄)
HAL_ADC_Start(&hadc1);
//轮询函数(adc句柄,等待时间)
HAL_ADC_PollForConversion(&hadc1,HAL_MAX_DELAY);
//ADC返回值函数(adc句柄)
ret = HAL_ADC_GetValue(&hadc1);
//把结果打印成字符串
sprintf(str,"%d",ret*3.3/4095);//ret*参考电压/选择精度的最大值
//串口输出函数(urat句柄,发送字符串,标准库函数用于判断字符串的长度)
HAL_UART_Transmit(&huart1,(uint8_t *)str,strlen(str),HAL_MAX_DELAY);
//延时函数
HAL_Delay(1000);

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值