STM32F407VET6 ADC采样(HAL库)

配置引脚需要注意:

一定要结合板子的电路图,不要乱配置引脚

1.基础概念

参考:

【STM32F407,12位ADC实现(CubeIDE) -  CSDN App】http://t.csdnimg.cn/4Jqak

【STM32F407VET6 多通道ADC采集+DMA HAL库 -  CSDN App】http://t.csdnimg.cn/ZueIc

①:轮询的方式(单通道)

    uint16_t ADC_Value1;
    HAL_ADC_Start(&hadc1);
    HAL_ADC_PollForConversion(&hadc1,50);
	  if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1),HAL_ADC_STATE_REG_EOC))
	  {
		  ADC_Value1 = HAL_ADC_GetValue(&hadc1);
		  
		  printf("adc1:%d\r\n",ADC_Value1);
		  printf("adc1:%.4f\r\n",ADC_Value1*3.3f/4096);
	  }
     HAL_Delay(1000);

轮询的方式多通道(有问题没调试出来

②:DMA

HAL库配置

//【单通道】
uint16_t ADC_Value[1] = {0};

/* USER CODE BEGIN 4 */
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
	HAL_ADC_Stop_DMA(&hadc1);
	printf("%d ,%d\r\n",ADC_Value[0]);
	printf("%.3f ,%.3f\r\n",ADC_Value[0]*3.3/4096);
	HAL_ADC_Start_DMA(&hadc1,(uint32_t *)ADC_Value,2);
}
/* USER CODE END 4 */

//usart.c文件里面
#include "stdio.h"
/* USER CODE BEGIN 1 */
int fputc(int ch,FILE *f)
{
	HAL_UART_Transmit(&huart2,(uint8_t*)&ch,1,0xffff);
	return ch;
}
int fgetc(FILE *f)
{
	uint8_t ch = 0;
	HAL_UART_Receive(&huart2,&ch,1,0xffff);
	return ch;
}
//main.c里面调用printf函数时也要引入#include "stdio.h"

//【多通道】
uint16_t ADC_Value[1] = {0};//有多少设置多少
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
	HAL_ADC_Stop_DMA(&hadc1);
	printf("%d ,%d\r\n",ADC_Value[0],ADC_Value[1]);
	printf("%.3f ,%.3f\r\n",ADC_Value[0]*3.3/4096,ADC_Value[1]*3.3/4096);
	HAL_ADC_Start_DMA(&hadc1,(uint32_t *)ADC_Value,2);
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,STMF407ZGT6和STM32F407VET6是基于ARM Cortex-M4内核的微控制器。在进行源码移植时,需要注意两者之间的硬件差异。 ADC采样出现问题可能是由于以下几个原因导致的: 1. 外设引脚配置不正确:确认ADC引脚配置正确连接,并且使能对应的GPIO外设。 2. ADC时钟配置不正确:配置ADC时钟时需要考虑不同芯片的时钟树结构和时钟配置寄存器。确保时钟配置正确,并且提供足够的时钟给ADC模块。 3. ADC初始化设置不正确:根据目标芯片的参考手册,确保ADC模块的初始化设置正确。注意参考电压、转换模式、采样时间等参数的配置。 4. ADC触发源设置不正确:确认ADC启动的触发源以及触发模式设置正确,例如定时器触发、软件触发或外部触发。 5. DMA配置不正确:如果使用DMA进行ADC数据转移,需要正确配置DMA通道和DMA传输模式。 如果在确认以上几个方面没有问题的情况下,仍然存在ADC采样问题,可以考虑以下步骤进行调试: 1. 使用调试器:通过串口调试器或仿真器,在代码执行过程中进行断点设置和变量查看,以确定问题出现的具体位置。 2. 输出调试信息:在ADC采样时,可以通过串口输出相关的调试信息,例如采样值、寄存器状态等,以便进一步分析问题。 3. 参考官方例程:查阅STMicroelectronics官方提供的开发板和芯片参考手册,并尝试运行官方的ADC采样示例代码,以验证硬件和软件配置的正确性。 4. 联系技术支持:如果以上步骤仍无法解决问题,可以通过STMicroelectronics的技术支持渠道,向他们报告问题并获取专业指导。 总之,在移植STM32F407ZGT6源码到STM32F407VET6时,需要仔细检查硬件和软件配置的差异,并针对性地进行调试和调整,以解决ADC采样问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值