北京中国建设部网站wordpress开头
文章目录
- 前言
 - 一、板载资源
 - 二、具体步骤
 - 1.打开CubeMX进行配置
 - 1.1 使用外部高速时钟,并修改时钟树
 - 1.2 打开ADC1的通道3,并配置为连续采集模式(ADC根据自己需求调整)
 - 1.3 打开串口
 - 1.4 生成工程
 
- 2. 配置ADC
 - 2.1 打开ADC驱动
 - 2.2 声明ADC
 - 2.3 剪切stm32l4xx_hal_msp.c中的HAL_ADC_MspInit函数至board.c
 - 2.4 使能ADC(一般默认打开)
 
- 3. 打开libc
 - 4.编译,烧录
 
前言
本文采用开发板为STM32L475VET6(潘多拉开发板),使用RT_Thread Studio基于芯片开发模式,完成ADC实验,实现对板载3.3v和GND电压采集
一、板载资源
使用引出I/O口PC2,对应ADC1的通道一

二、具体步骤
1.打开CubeMX进行配置
1.1 使用外部高速时钟,并修改时钟树


1.2 打开ADC1的通道3,并配置为连续采集模式(ADC根据自己需求调整)

1.3 打开串口

1.4 生成工程

2. 配置ADC
官方配置步骤
 
2.1 打开ADC驱动
在RT-Thread Setting的组件栏中
 
2.2 声明ADC

2.3 剪切stm32l4xx_hal_msp.c中的HAL_ADC_MspInit函数至board.c

2.4 使能ADC(一般默认打开)

3. 打开libc

4.编译,烧录
将PC2连接至开发板3.3V的I/O口
#include <rtthread.h>#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>/** 程序清单: ADC 设备使用例程* 例程导出了 adc_sample 命令到控制终端* 命令调用格式:adc_sample* 程序功能:通过 ADC 设备采样电压值并转换为数值。*           示例代码参考电压为3.3V,转换位数为12位。
*/#include <rtthread.h>
#include <rtdevice.h>#define ADC_DEV_NAME        "adc1"      /* ADC 设备名称 */
#define ADC_DEV_CHANNEL     3           /* ADC 通道 */
#define REFER_VOLTAGE       330         /* 参考电压 3.3V,数据精度乘以100保留2位小数*/
#define CONVERT_BITS        (1 << 12)   /* 转换位数为12位 */static int adc_vol_sample(int argc, char *argv[])
{rt_adc_device_t adc_dev;rt_uint32_t value, vol;rt_err_t ret = RT_EOK;/* 查找设备 */adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);if (adc_dev == RT_NULL){rt_kprintf("adc sample run failed! can't find %s device!\n", ADC_DEV_NAME);return RT_ERROR;}/* 使能设备 */ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);/* 读取采样值 */value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);rt_kprintf("the value is :%d \n", value);/* 转换为对应电压值 */vol = value * REFER_VOLTAGE / CONVERT_BITS;rt_kprintf("the voltage is :%d.%02d \n", vol / 100, vol % 100);/* 关闭通道 */ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL);return ret;
}
/* 导出到 msh 命令列表中 */
MSH_CMD_EXPORT(adc_vol_sample, adc voltage convert sample);int main(void)
{return RT_EOK;
} 

