RT-Thread+STM32L475VET6——ADC收罗电压

[复制链接]
发表于 2025-10-28 17:25:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×




媒介

本文采取开辟板为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口
  1. #include <rtthread.h>
  2. #define DBG_TAG "main"
  3. #define DBG_LVL DBG_LOG
  4. #include <rtdbg.h>
  5. /*
  6. * 程序清单: ADC 设备使用例程
  7. * 例程导出了 adc_sample 命令到控制终端
  8. * 命令调用格式:adc_sample
  9. * 程序功能:通过 ADC 设备采样电压值并转换为数值。
  10. *           示例代码参考电压为3.3V,转换位数为12位。
  11. */
  12. #include <rtthread.h>
  13. #include <rtdevice.h>
  14. #define ADC_DEV_NAME        "adc1"      /* ADC 设备名称 */
  15. #define ADC_DEV_CHANNEL     3           /* ADC 通道 */
  16. #define REFER_VOLTAGE       330         /* 参考电压 3.3V,数据精度乘以100保留2位小数*/
  17. #define CONVERT_BITS        (1 << 12)   /* 转换位数为12位 */
  18. static int adc_vol_sample(int argc, char *argv[])
  19. {
  20.     rt_adc_device_t adc_dev;
  21.     rt_uint32_t value, vol;
  22.     rt_err_t ret = RT_EOK;
  23.     /* 查找设备 */
  24.     adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);
  25.     if (adc_dev == RT_NULL)
  26.     {
  27.         rt_kprintf("adc sample run failed! can't find %s device!\n", ADC_DEV_NAME);
  28.         return RT_ERROR;
  29.     }
  30.     /* 使能设备 */
  31.     ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);
  32.     /* 读取采样值 */
  33.     value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
  34.     rt_kprintf("the value is :%d \n", value);
  35.     /* 转换为对应电压值 */
  36.     vol = value * REFER_VOLTAGE / CONVERT_BITS;
  37.     rt_kprintf("the voltage is :%d.%02d \n", vol / 100, vol % 100);
  38.     /* 关闭通道 */
  39.     ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL);
  40.     return ret;
  41. }
  42. /* 导出到 msh 命令列表中 */
  43. MSH_CMD_EXPORT(adc_vol_sample, adc voltage convert sample);
  44. int main(void)
  45. {
  46.     return RT_EOK;
  47. }
复制代码


回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表