STM32CubeMX+ADC数据采集

佐手、 提交于 2021-01-13 05:39:23

设计对电池电压进行检测的应用程序

STM32理解:https://blog.csdn.net/u010893262/article/details/68942710

一、ADC(Analog-to-Digital Converter)模数转换器

模拟信号----->数字信号

                               

 

二、ADC外设的工作参数配置

 

二、ADC外设的工作参数配置

 

三、配置USART外设的工作参数

 

 

 四、生成代码

在main.c文件中设置所需变量

/* USER CODE BEGIN PV */
// ADC转换值存放
uint16_t adc_value = 0;    
// 电压值
float voltage = 0.0;
// 电压值结果显示
char voltString[50] = {0};
/* USER CODE END PV */

在while循环里

while (1)
  {
        // 启动ADC转换
        HAL_ADC_Start(&hadc1);
        // 等待转换完成,第二个参数表示超时时间,单位ms
        HAL_ADC_PollForConversion(&hadc1, 100);
        // 为换取ADC状态
        adc_value = HAL_ADC_GetValue(&hadc1);
        // 采取的右对齐除以2的12次方,参考电压为3.3V
        voltage = (float)adc_value / 4096 * 3.3;
        sprintf(voltString, "²É¼¯µ½µÄµçѹֵΪ: %.2f V", voltage);
        printf("%s\r\n", voltString);
        HAL_Delay(1000);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

 在USART.c添加

#include "usart.h"

int fputc(int ch, FILE *f)
{
    HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
    return ch;
} 

 在USART.h添加

#include "main.h"
#include <stdio.h>

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!