• RTT外设驱动使用2--ADC串口添加


    配置步骤

    1. 配置KConfig文件
    2. 打开menuconfig选中ADC外设
    3. 保存配置生成mdk工程
    4. 修改CubuMX

    这里最不可思议的是不要管理规则通道和注入通道问题

    1. 配置KConfig文件

    在这里插入图片描述## 2. 打开menuconfig选中ADC外设在这里插入图片描述

    在这里插入图片描述

    3. 保存配置生成mdk工程

    在这里插入图片描述

    4. 修改CubuMX

    在这里插入图片描述

    5. 测试文件

    在这里插入图片描述```c
    /*

    • 程序清单: ADC 设备使用例程
    • 例程导出了 adc_sample 命令到控制终端
    • 命令调用格式:adc_sample
    • 程序功能:通过 ADC 设备采样电压值并转换为数值。
    •       示例代码参考电压为3.3V,转换位数为12位。
      
      • 1

    */

    #include
    #include

    #define ADC_DEV_NAME “adc1” /* ADC 设备名称 /
    #define ADC_DEV_CHANNEL0 0 /
    ADC 通道 /
    #define ADC_DEV_CHANNEL1 1 /
    ADC 通道 /
    #define ADC_DEV_CHANNEL5 5 /
    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, vol0,vol1,vol5;
    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_CHANNEL0);
    	ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL1);
    	ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL5);
    	while(1)
    	{
    /* 读取采样值 */
    		value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL0);
    	
    
    		/* 转换为对应电压值 */
    		vol0 = value * REFER_VOLTAGE / CONVERT_BITS;
    		//rt_kprintf("the voltage is :%d.%02d \n", vol0 / 100, vol0 % 100);
    		
    		/* 读取采样值 */
    		value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL1);
    	
    
    		/* 转换为对应电压值 */
    		vol1 = value * REFER_VOLTAGE / CONVERT_BITS;
    		//rt_kprintf("the voltage is :%d.%02d \n", vol1 / 100, vol1 % 100);
    		rt_thread_delay(500);
    		
    		/* 读取采样值 */
    		value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL5);
    	
    
    		/* 转换为对应电压值 */
    		vol5 = value * REFER_VOLTAGE / CONVERT_BITS;
    		rt_kprintf("the voltage is :%d.%02d  %d.%02d %d.%02d \n", vol0 / 100, vol0 % 100,vol1 / 100, vol1 % 100,vol5 / 100, vol5 % 100);
    		rt_thread_delay(500);
    	}
    /* 关闭通道 */
    ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL0);
    	ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL1);
    return ret;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    }
    /* 导出到 msh 命令列表中 */
    MSH_CMD_EXPORT(adc_vol_sample, adc voltage convert sample);

    
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/fd9ffc911678424e8b3ed7a9d2ea4c13.png)
    
    
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    JavaSE题
    三门问题-Swift测试
    如何在JAVA中构建区块链?
    数据库:什么是数据库,有哪些数据库,数据库用来干什么,图导,拓展
    Java框架-MyBatis 详细介绍(crud+缓存+联表+缓存+日志...)
    ZGC关键技术分析
    本地配置启动两个tomcat,并实现简单的nginx负载平衡
    ic2常用命令
    Java 中使用 Elasticsearch 进行 Boot 操作和 DSL 查询文档详解
    大厂面试题-MySQL为什么使用B+Tree作为索引结构
  • 原文地址:https://blog.csdn.net/u010261063/article/details/126312192