首页 > 其他分享 >【STM32F1例程3】ADC实验

【STM32F1例程3】ADC实验

时间:2024-06-12 10:29:30浏览次数:10  
标签:PA4 例程 void InitStructure ADC ADC1 GPIO STM32F1

1.实验说明

 PA4口作为ADC采集口,PA4口接地或者接3.3V。下载运行程序,PA4口接地,会发现VolDta值为0,然后把 PA4口接3.3V,会发现VolDta值为3300

2.主要程序

直接上main.c

#include "delay.h"
#include "sys.h"

//ADC配置,ADC1通道4
void ADC_Config_Init(void)
{
	ADC_InitTypeDef  ADC_InitStructure;
  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;
  ADC_Init(ADC1, &ADC_InitStructure);

  /* ADC1 regular channel4 configuration */ 
  ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 1, ADC_SampleTime_13Cycles5);

  ADC_Cmd(ADC1, ENABLE);

  /* Enable ADC1 reset calibration register */   
  ADC_ResetCalibration(ADC1);
  /* Check the end of ADC1 reset calibration register */
  while(ADC_GetResetCalibrationStatus(ADC1));

  /* Start ADC1 calibration */
  ADC_StartCalibration(ADC1);
  /* Check the end of ADC1 calibration */
  while(ADC_GetCalibrationStatus(ADC1));

  /* Start ADC1 Software Conversion */ 
  ADC_SoftwareStartConvCmd(ADC1, ENABLE);//启动ADC1,软件方式
	
}
//GPIO初始化,PA4配置成ADC模拟输入
void GPIO_Config_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1|RCC_APB2Periph_AFIO,ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//模拟输入
  GPIO_Init(GPIOA,&GPIO_InitStructure);
}


int ADCData;//ADC寄存器值
uint16_t VolDta;//ADC电压值
//主函数,采用外部8M晶振,72M系统主频,可以在void SetSysClock(void)函数中选择主频率设置
int main(void)
 {	
	
	delay_init();	    //延时函数初始化,通过Systick中断实现1ms延时功能  
	GPIO_Config_Init();//PA4引脚配置成模拟输入
	ADC_Config_Init();//ADC配置,ADC1通道4
	while(1)
	{
		while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC ));//等待转换结束
		ADCData=ADC_GetConversionValue(ADC1);//获取ADC采集值
		VolDta=ADCData*3300/4095;//ADC采集值转换成电压值,单位mV
		delay_ms(200);//等待200ms
		ADC_SoftwareStartConvCmd(ADC1,ENABLE); //启动ADC1 的软件转换功能
		delay_ms(200);
	}
 }

标签:PA4,例程,void,InitStructure,ADC,ADC1,GPIO,STM32F1
From: https://blog.csdn.net/m0_63679833/article/details/139611799

相关文章

  • 《DSP开发》TMS320F28XX-ADC模块
    1.1、特征1.2、功能框图2.1、ADC模块配置1、ADC时钟使能。ADC时钟没有使能的话,后续对ADC相关寄存器的配置值虽然被写入,但实际不会生效。2、校准ADC参考、DAC偏移和内部振荡器。Device_cal();3、配置ADC模块转换误差、参考模式、参考基准、时钟分频、ADC中断触发时刻,最......
  • 《DX12龙书》-第一个例程出现的报错:error: 应用程序请求的操作依赖于已缺失或不匹配的
    《DX12龙书》|《Introductionto3DGameProgrammingwithDirectX12》|《DirectX123D游戏开发实践》个人电脑环境Window11;VisualStudio2022出现问题主要原因:书中代码的环境是:Windows10;VS2015,在不同环境上运行难免会出现一些错误。问题一:C2102&要求左值错......
  • 3.7v可充电锂电池,能否直接给STM32F1芯片用?
    原文链接:https://www.amobbs.com/thread-5678061-1-1.html 问:就是18650锂电池,单节,或者那种聚合物锂电池,都是两三千毫安时的。第一个为题:能否直接给STM32F103供电?第二个问题:板子上自带1117-3.3,我直接锂电池接过去,也能输出3.3V,压差可以这么小么?第三个问题:其他的电压转换芯片......
  • SAR ADC驱动设计注意事项
    1SARADC特点      功耗低、小尺寸、高精度、速度适中以及采样延时短。2精密SARADC所需支持电路        模拟输入信号、ADC接口的前端、基准电压源和数字接口        前端由驱动放大器+RC滤波器组成,其中放大器:调节输入信号,同事充当信号和ADC......
  • stm32系列--ADC使用
      #include"adc.h"#include"delay.h"////////////////////////////////////////////////////////////////////////////////////本程序只供学习使用,未经作者许可,不得用于其它任何用途//ALIENTEK战舰STM32开发板//ADC代码//正点原子@ALIENTEK//技术论......
  • 400、基于51单片机的电压表(1路,ADC0832,LCD1602)(程序+Proteus仿真+原理图+流程图+元器件
    毕设帮助、开题指导、技术解答(有偿)见文未目录方案选择单片机的选择显示器选择方案一、设计功能二、Proteus仿真图单片机模块设计三、原理图四、程序源码资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。方案选择......
  • STM32H743 ADC+DMA
    1.**STM32CubeMX配置如下:**ADC:配置通道配置ADC的工作模式,这里用到了DMA使用ADC中断DMA2的通道4对应ADC2GPIO的配置,没有配置上下拉DMA配置:用STM32H743用DMA传输ADC的数据会有一个需要注意的点,需要将传输数据的buf配置在固定的某一段RAM中。#defineADC_CONVE......
  • 需要帮助对 shadcn/ui 中的选择进行单元测试
    我有一个React组件,我在其中使用了shadcn/ui,具体而言,在本例中使用了Select:<divclassName='flex-1gt<divclassName='flex-1'>;<FormFieldcontrol={form.control}name='clientType......
  • STM32——ADC篇(ADC的使用)
    一、ADC的介绍 1.1什么是ADC        ADC(Analogto-DigitalConverter)模拟数字转换器,是将模拟信号转换成数字信号的一种外设。比如某一个电阻两端的是一个模拟信号,单片机无法直接采集,此时需要ADC先将短租两端的电压这个模拟信号转化成数字信号,单片机才能够进行处理。......
  • STC8H2K系列采用ADC功能实现轻触感应按键(无需电阻电容二极管)
    有感于8H2K系列不自带触摸控制器按键功能(8H4K,8H8K自带),如果要实现这个功能需要使用官方建议的两个IO口(一个PWM另一个ADC)还有一堆外围元器件(电阻电容二极管),这样的设计确实繁琐而且累赘,占用空间也大(如果有这空间我也不会选8H2K)。参考了另一个网友设计,线路减少到一个电容一个电阻,......