STM32F7实现ADC采集(软件触发+轮询)

本文介绍了如何使用STM32F7的HAL库实现ADC的软件触发和轮询方式采集。首先通过CubeMX配置时钟,接着详细讲解ADC的配置步骤,包括修改风格和手写头文件、源文件。在实际操作中,主要关注启动ADC、等待转换完成和读取结果的过程。示例代码展示了主函数如何初始化并读取ADC值,若要对多个通道轮询读取,只需调整选择通道的步骤。
摘要由CSDN通过智能技术生成

基于HAL库,实现最简单ADC采集。
第一步,使用CubeMX配置时钟。
在这里插入图片描述
然后是adc的配置:
在这里插入图片描述
将,稍微修改一下风格,并手写头文件和源文件。

adc.h很简单,就不说了。

#ifndef __ADC_H
#define __ADC_H
#include "sys.h"

void MY_ADC_Init(void); 				//ADC通道初始化
u16  Get_Adc(void); 		        //获得某个通道值 
#endif 

其中,MY_ADC_InitHAL_ADC_MspInit的内容完全是根据CubeMX生成的代码写的,就改了一个变量名字。Get_Adc则简单了,当我们需要获取adc的值的时候,先HAL_ADC_Start启动ADC,然后HAL_ADC_PollForConversion等待转换完成,最后HAL_ADC_GetValue返回结果。

#include "adc.h"
#include "delay.h"


ADC_HandleTypeDef ADC1_Handler;                 //ADC句柄
ADC_ChannelConfTypeDef ADC1_ChanConf;       //ADC通道配置句柄


//初始化ADC
void MY_ADC_Init(void)
{
   
    ADC1_Handler.Instance = ADC1;
    ADC1_Handler.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; //4分频,ADCCLK=PCLK2/4=108/4=27MHZ
    ADC1_Handler.Init.Resolution = ADC_RESOLUTION_12B;           //12位模式
    ADC1_Handler.Init.ScanConvMode = DISABLE;                    
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值