精华内容
下载资源
问答
  • STM32(F103)的ADC读取电压程序
  • 0x00前言 小葵花妈妈课堂: 由ST数据手册AN4195可知STM32 F1 F3系列ADC为12bit精度的逐级逼近式ADC,属于中速... 3.DMA方式单通道ADC读取电压 4.轮询方式多通道ADC读取电压 5.中断方式多通道ADC读取电压 ...

    0x00前言

    小葵花妈妈课堂:

       由ST数据手册AN4195可知STM32 F1 F3系列ADC为12bit精度的逐级逼近式ADC,属于中速ADC,F1系列拥有16个外部单端输入,而F3系列有15个外部单端/差分ADC和三个内部通道。

    学习内容:

          1.轮询方式单通道ADC读取电压

          2.中断方式单通道ADC读取电压

          3.DMA方式单通道ADC读取电压

          4.DMA方式多通道ADC读取电压

          5.STM32 ADC工作模式介绍

          6.STN32 HAL库相关ADC函数

    使用硬件:

          1.F103C8T6核心板

          2.光敏电阻模块(可选)

     

    0x01软件配置

    1.配置外部晶振

    配置时钟树(根据自己板子情况而定)

    2.配置SW Debug接口

         注:因为博主ADC选的是IN0通道,占用了PA0,所以 System Wake-UP 就无法选中,如果需要 System Wake-UP  可以使用其他的ADC通道

    3.配置USART串口

    如果对HAL库串口操作不是很了解。可以参考我的上一篇博客:

    【CubeIDE】STM32 HAL库史上最详细教程(一):UART串口收发

    3.配置ADC (单通道)

     

    0x02 模式讲解

    • 间断/连续模式:

           1.如果开启间断模式,每次需要先使用HAL_ADC_Start()或HAL_ADC_Start_IT(),HAL_ADC_Start_DMA()下文不再赘述)启动转换,需要使用HAL_ADC_PollForConversion()等待转换完成,HAL_ADC_GetState()获取ADC转换状态(若返回值为HAL_OK说明转换完成),转换完成后使用HAL_ADC_GetValue()读取ADC原始值,读取完成后,使用HAL_ADC_Stop()停止转换,如需再次获取ADC数据,需重复执行上述步骤。

          2.间断模式的缺点很明显:麻烦~  优点就是节省系统资源,安全性更高,而间断模式会不断抛出DMA,IT中断,导致系统安全性降低~

          3.如果开启连续模式,只需要使用一次HAL_ADC_Start(),开启转换,ADC会马不停蹄的电压转换成数字量,用户只需要调用HAL_ADC_GetValue(),读取ADC原始值

          4.连续模式的优缺点和间断模式真好相反~

    • 扫描模式(开启/关闭)

         1.如果设置了多个ADC转换通道(不是勾选的通道数量,是Number Of Conversion里配置的数量),扫描模式自动开启,且无法关闭,如果只有一个转换通道,则扫描模式默认关闭,且无法开启。

         2.假设开启了扫描模式,且RANK1 RANK2 RANK3分别对应IN3 IN2 IN1 通道,则转换一次通道顺序为IN3 IN2 IN1

     

    0x03 ADC单通道采样

    (模式:间断模式   非扫描模式)

    1.重定向 printf(),不清楚怎么操作见上一篇博客

    【CubeIDE】STM32 HAL库史上最详细教程(一):UART串口收发

    #include "stdio.h"
    
    #ifdef __GNUC__
    #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
    #else
    #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
    #endif
    PUTCHAR_PROTOTYPE
    {
        HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1,100);
        return ch;
    }
    

    2.打开浮点数转义,CubeIDE 默认不支持浮点数类型进行字符转义(这里困扰了我很久~)

    选项目->属性(CubeIDE下拉框没法截图QAQ)

    一定要记得点应用啊喂~

    3.串口打印电压值

        定义两个变量,分别用于储存原始值和转换完的电压值

        这里要插一嘴,stm32f1系列是12bit ADC,所以转换完是12位的无符号整型,C语言中没有能够12bit的数据类型,所以取最节省系统资源又能保持数值不变的uint16_t (就是unsigned short)类型,由于ADC采样电压范围是0-3.3v,采样值呈线性分布,假设ADC转换值为Ax 那么实际电压就等于 Ax * 3.3 / 2 ** 12 即  Ax * 3.3 / 4096

    串口打印电压值

    运行结果

    4.使用连续采样模式打印电压值

    使能连续模式

    别忘了生成代码~

    在原来的基础上修改代码

    运行结果

    5.中断方式读取电压值

    (模式:连续模式  非扫描模式)

    使能ADC全局中断

    在原有的基础上修改代码

    运行结果

    6.DMA方式读取电压值

    (模式:连续模式 非扫描模式)

    配置DMA

    增大转换周期

    CubeIDE默认配置1.5Cycles的转换周期,导致DMA触发的中断干扰CPU导致串口无法正常发送数据。

    解决方法有二,一者取消DMA中断,但CubeIDE 图形化配置中 DMA全局中断无法取消,网上有很多大佬通过修改DMA初始化代码取消DMA中断,这样既麻烦还会影响到其他需要DMA的外设,所以博主采取第二种方法,即增大转换时间

    如果有不信邪的小伙伴可以试试用默认的1.5Cycles~

    在原来的基础上修改代码

    运行结果

     

    0x04 ADC DMA方式多通道采样

        由数据手册可知,F1和F3系列ADC外设用于储存数据的ADC_DR只有16bit,所以一个ADC配置多个通道的时候,下一个通道的转换数据就会覆盖这次的数据,如果DMA方式进行多通道读取数据就可以解决这个问题(具体怎么个原理我也不知道),所以本文只讨论DMA方式ADC多通道读取数据。 

    1.配置 ADC多通道

    2.定义用于储存 电压和的ADC原始值的变量

    Tip: 多通道ADC转换顺序跟RANK有关,详见SCAN模式讲解部分

    3.添加代码

    运行结果

    0xFF 完

    既然都看完了,点个赞吧

    展开全文
  • title: 【STM32Cube-21】使用ADC读取电压值 tags: STM32CubeMX ADC categories: STM32CubeMX abbrlink: 862377868 date: 2019-07-31 11:48:56 本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的ADC外设,读取...

    本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的ADC外设,读取DAC输出引脚的电压值。

    1. 准备工作

    硬件准备

    mark

    软件准备

    • 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码;

    Keil MDK和串口助手的安装包都可以关注“小熊派开源社区”微信公众号,在资料教程一栏中可获取安装包。

    2.生成MDK工程

    选择芯片型号

    打开STM32CubeMX,打开MCU选择器:

    搜索并选中芯片STM32L431RCT6:

    配置时钟源

    • 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC;
    • 如果使用默认内部时钟(HSI),这一步可以略过;

    这里我都使用外部时钟:

    配置串口

    小熊派开发板板载ST-Link并且虚拟了一个串口,原理图如下:

    这里我将开关拨到AT-MCU模式,使PC的串口与USART1之间连接。

    接下来开始配置USART1

    配置DAC

    确定DAC输出通道

    查看小熊派E53接口的原理图:

    配置DAC

    选择DAC1,开启输出通道2,配置保持默认即可:

    配置ADC

    知识小卡片 —— ADC

    ADC全称 Analog-to-Digital Converter,即模拟-数字转换器,可以将连续变化的模拟信号转换为离散的数字信号,进而使用数字电路进行处理,称之为数字信号处理。

    STM32L431xx 系列有 1 个 ADC,ADC 分辨率高达 12 位,每个 ADC 具有多达 20 个的采集
    通道,这些通道的 A/D 转换可以单次、连续、扫描或间断模式执行。 ADC 的结果可以左对齐
    或右对齐方式存储在 16 位数据寄存器中。

    STM32L431 的 ADC 最大的转换速率为 5.33Mhz,也就是转换时间为 0.188us(12 位分辨率
    时),ADC 的转换时间与 AHB 总线时钟频率无关。

    知识小卡片结束啦~对ADC有没有了解呢?

    确定ADC通道

    查看小熊派E53接口的原理图:

    配置ADC(单次转换模式)

    首先选择ADC1,开启通道3:

    接下来是对ADC的设置,这里我们保持默认即可:

    最后设置ADC的转换规则:

    其余的一些设置保持默认即可。

    配置时钟树

    STM32L4的最高主频到80M,所以配置PLL,最后使HCLK = 80Mhz即可:

    生成工程设置

    代码生成设置

    最后设置生成独立的初始化文件:

    生成代码

    点击GENERATE CODE即可生成MDK-V5工程:

    3. 在MDK中编写、编译、下载用户代码

    重定向printf( )函数

    参考:重定向printf函数到串口输出的多种方法

    编写读取数据的测试代码

    修改main函数如下:

    int main(void)
    {
        /* USER CODE BEGIN 1 */
        uint16_t i = 0;
        uint16_t adc_value = 0;
        float vol = 0.0;
        /* USER CODE END 1 */
    
        HAL_Init();
        SystemClock_Config();
    
        MX_GPIO_Init();
        MX_DAC1_Init();
        MX_USART1_UART_Init();
        MX_ADC1_Init();
    
        /* USER CODE BEGIN 2 */
        printf("DAC Test...\r\n");
        HAL_DAC_Start(&hdac1, DAC_CHANNEL_2);
        /* USER CODE END 2 */
    
        /* Infinite loop */
        /* USER CODE BEGIN WHILE */
        while (1)
        {
        /* USER CODE END WHILE */
    
        /* USER CODE BEGIN 3 */
        for(i = 0; i < 4096; i++)
        {
            HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_2, DAC_ALIGN_12B_R, i);
            HAL_Delay(2);
            if(i%1024 == 0)
            {
                /* 使用ADC采样 */
                HAL_ADC_Start(&hadc1);	                //启动ADC单次转换
                HAL_ADC_PollForConversion(&hadc1, 50);	//等待ADC转换完成
                adc_value = HAL_ADC_GetValue(&hadc1); 	//读取ADC转换数据
                vol = ((double)adc_value/4096)*3.3;
                printf("adc_value = %d, vol = %.2fV.\n", adc_value, vol);
            }
        }
    
        printf("DAC test finish, test again!\r\n");
        }
        /* USER CODE END 3 */
        }
    

    至此,我们已经学会如何使用ADC读取DAC输出引脚的电压值

    展开全文
  • tinyos2.x下adc端口读取电压的配置以及读取电压的程序
  • 【STM32Cube_22】使用ADC读取电压

    千次阅读 2019-11-02 14:08:47
    本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的ADC外设,读取DAC输出引脚的电压值。 1. 准备工作 硬件准备 开发板 首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi): 软件准备 ...


    本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的ADC外设,读取DAC输出引脚的电压值。

    1. 准备工作

    硬件准备

    • 开发板
      首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi):

    软件准备

    • 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码;
    • 准备一个串口调试助手,这里我使用的是Serial Port Utility

    Keil MDK和串口助手Serial Port Utility 的安装包都可以在文末关注公众号获取,回复关键字获取相应的安装包:

    2.生成MDK工程

    选择芯片型号

    打开STM32CubeMX,打开MCU选择器:

    搜索并选中芯片STM32L431RCT6:

    配置时钟源

    • 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC;
    • 如果使用默认内部时钟(HSI),这一步可以略过;

    这里我都使用外部时钟:

    配置串口

    小熊派开发板板载ST-Link并且虚拟了一个串口,原理图如下:

    这里我将开关拨到AT-MCU模式,使PC的串口与USART1之间连接。

    接下来开始配置USART1

    配置DAC

    确定DAC输出通道

    查看小熊派E53接口的原理图:

    配置DAC

    选择DAC1,开启输出通道2,配置保持默认即可:

    配置ADC

    知识小卡片 —— ADC

    ADC全称 Analog-to-Digital Converter,即模拟-数字转换器,可以将连续变化的模拟信号转换为离散的数字信号,进而使用数字电路进行处理,称之为数字信号处理。

    STM32L431xx 系列有 1 个 ADC,ADC 分辨率高达 12 位,每个 ADC 具有多达 20 个的采集
    通道,这些通道的 A/D 转换可以单次、连续、扫描或间断模式执行。 ADC 的结果可以左对齐
    或右对齐方式存储在 16 位数据寄存器中。

    STM32L431 的 ADC 最大的转换速率为 5.33Mhz,也就是转换时间为 0.188us(12 位分辨率
    时),ADC 的转换时间与 AHB 总线时钟频率无关。

    知识小卡片结束啦~对ADC有没有了解呢?

    确定ADC通道

    查看小熊派E53接口的原理图:

    配置ADC(单次转换模式)

    首先选择ADC1,开启通道3:

    接下来是对ADC的设置,这里我们保持默认即可:

    最后设置ADC的转换规则:

    其余的一些设置保持默认即可。

    配置时钟树

    STM32L4的最高主频到80M,所以配置PLL,最后使HCLK = 80Mhz即可:

    生成工程设置

    代码生成设置

    最后设置生成独立的初始化文件:

    生成代码

    点击GENERATE CODE即可生成MDK-V5工程:

    3. 在MDK中编写、编译、下载用户代码

    重定向printf( )函数

    参考:【STM32Cube】(八)基于串口发送函数实现printf()

    编写读取数据的测试代码

    修改main函数如下:

    int main(void)
    {
        /* USER CODE BEGIN 1 */
        uint16_t i = 0;
        uint16_t adc_value = 0;
        float vol = 0.0;
        /* USER CODE END 1 */
    
        HAL_Init();
        SystemClock_Config();
    
        MX_GPIO_Init();
        MX_DAC1_Init();
        MX_USART1_UART_Init();
        MX_ADC1_Init();
    
        /* USER CODE BEGIN 2 */
        printf("DAC Test...\r\n");
        HAL_DAC_Start(&hdac1, DAC_CHANNEL_2);
        /* USER CODE END 2 */
    
        /* Infinite loop */
        /* USER CODE BEGIN WHILE */
        while (1)
        {
        /* USER CODE END WHILE */
    
        /* USER CODE BEGIN 3 */
        for(i = 0; i < 4096; i++)
        {
            HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_2, DAC_ALIGN_12B_R, i);
            HAL_Delay(2);
            if(i%1024 == 0)
            {
                /* 使用ADC采样 */
                HAL_ADC_Start(&hadc1);	                //启动ADC单次转换
                HAL_ADC_PollForConversion(&hadc1, 50);	//等待ADC转换完成
                adc_value = HAL_ADC_GetValue(&hadc1); 	//读取ADC转换数据
                vol = ((double)adc_value/4096)*3.3;
                printf("adc_value = %d, vol = %.2fV.\n", adc_value, vol);
            }
        }
    
        printf("DAC test finish, test again!\r\n");
        }
        /* USER CODE END 3 */
        }
    

    至此,我们已经学会如何使用ADC读取DAC输出引脚的电压值

    更多精彩文章及资源,请关注我的微信公众号:『mculover666』。

    展开全文
  • 这一篇教程目标是由DAC输出一个阶梯电压,把它连接到一个ADC,由ADC读取这个电压并输出到串口。 软件: STM32CubeMX V4.25.0  System Workbench V2.4 固件库版本: STM32Cube FW_F1 V1.6.1 硬件...

    完整源码下载:

    https://github.com/simonliu009/STM32CubeMX-DAC-and-ADC

    这一篇教程目标是由DAC输出一个阶梯电压,把它连接到一个ADC,由ADC读取这个电压并输出到串口。

    软件:

    STM32CubeMX V4.25.0  

    System Workbench V2.4

    固件库版本:
    STM32Cube FW_F1 V1.6.1

    硬件:

    OneNet 麒麟座V2.3

    首先用一条杜邦线短接PA4和PA6两个引脚。我们会把PA4配置为DAC,PA6配置为ADC。

    在STM32CubeMX中新建项目,选择正确的MCU型号

     

    首先设置RCC和SYS,如下图

     

     

    配置USART1为Asychronous模式

     

     

    UART1配置用默认的115200,8, None和1就好。

     

    然后设置PA4为DAC_OUT1, PA6引脚为ADC2_IN6, 完整引脚配置如下图:

     

    然后根据板子实际情况设置时钟(麒麟座外部晶振是12M,STM32F103x的最高主频是72M),注意CubeMX可能会自动把ADC预分频系数设为6。

    DAC和ADC设置都使用默认设置

     

    Project - setting ,ToolChain/IDE选择 SW4STM32

    勾选这里

    保存以后,点击任务栏的生成代码图标

    生成完毕以后在弹出的对话框点击"Open Project", System Workbench自动打开Eclipse并导入和打开了项目。

    参考前面文章的printf()重定向到串口的代码,编辑main.c, 添加如下代码

     

    [csharp] view plain copy

    1. /* Private function prototypes -----------------------------------------------*/  
    2. #ifdef __GNUC__  
    3. /* With GCC, small printf (option LD Linker->Libraries->Small printf 
    4.    set to 'Yes') calls __io_putchar() */  
    5. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)  
    6. #else  
    7. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)  
    8. #endif /* __GNUC__ */  
    9.   
    10. /* Private functions -------------------------------------------------  

    [csharp] view plain copy

    1. /* USER CODE BEGIN 0 */  
    2.   
    3. PUTCHAR_PROTOTYPE  
    4. {  
    5.     HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);  
    6.     return ch;  
    7. }  
    8. /* USER CODE END 0 */  

    然后修改main.c,添加两个变量存储DAC和ADC的值

    [csharp] view plain copy

    1. /* USER CODE BEGIN 1 */ 
    2. int16_t DAC_Value; 
    3. int16_t ADC2_Value;  
    4. /* USER CODE END 1 */  

     

    输出内容:

     

    /* USER CODE BEGIN 3 */
    	  if (DAC_Value >= 3967)
    	  {
    		  DAC_Value = 0;
    	  }
    	  DAC_Value += 128;
    	  printf("DAC Value : %d \r\n",DAC_Value);
    	  HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, DAC_Value);
          HAL_Delay(500);
          HAL_ADC_Start(&hadc2);
          HAL_ADC_PollForConversion(&hadc2, 50);
    
          if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc2), HAL_ADC_STATE_REG_EOC))
          {
              ADC2_Value = HAL_ADC_GetValue(&hadc2);
              printf("ADC2 Reading : %d \r\n",ADC2_Value);
              printf("PA6 Voltage : %.4f \r\n",ADC2_Value*3.3f/4096);
              printf("\r\n");
          }
    
          HAL_Delay(2000);
      }
      /* USER CODE END 3 */

     

    注意这里printf()输出浮点数%.4f会提示错误: 

     

    The float formatting support (-u _printf_float) is not enabled from linker flags

    所以需要在这里添加一个-u _printf_float

    project properties > C/C++ Build > Settings > Tool Settings (TAB) > MCU GCC Linker > Miscellaneous > Linker flags

    把-specs=nosys.specs -specs=nano.specs 改为 -specs=nosys.specs -specs=nano.specs -u _printf_float

     

     

    最后,不要忘记把STM32Cube_FW_F1_V1.6.0\Projects\STM3210C_EVAL\Examples\UART\UART_Printf\syscalls.c 文件复制到src目录,很多教程没有提到这点。如果不复制这个文件,那么printf()是不起作用的。

     

     

     

    然后右键点击项目,选择Properties, Run-Debug Settings, 点击右侧的New,在弹出对话框中选择Ac6 STM32 Debugging。

    然后任务栏上点击Run图,当然会报错的,原因请查看另一篇我的博客(https://blog.csdn.net/toopoo/article/details/79680323),所以需要右键点击  项目名Run.cfg ,给它改个名字,

     

    然后右键点击项目树里面的项目名称,选择“Propeties”,然后在Run/Debug Settings-选择项目名-Edit-Main-C/C++Application那里点击“Search Project”,然后选择出现的默认的elf文件:

    然后在Debugger-User Defined-Browse 那里选择你自己改名的配置文件:

    然后右键点击那个新的cfg文件,选择"Open With - Text Editor", 进行如下更改:

    source [find interface/stlink.cfg] 更改为 source [find interface/stlink-v2.cfg]

    reset_config srst_only srst_nogate connect_assert_srst 这一行改为 reset_config none 

    然后再Run一下,就可以了。

     

    然后使用串口程序,波特率设为115200,就可以看到如下这些信息:

     

     

    DAC Value : 128 
    ADC2 Reading : 66 
    PA6 Voltage : 0.0532 
    
    DAC Value : 256 
    ADC2 Reading : 193 
    PA6 Voltage : 0.1555 
    
    DAC Value : 384 
    ADC2 Reading : 321 
    PA6 Voltage : 0.2586 
    
    DAC Value : 512 
    ADC2 Reading : 448 
    PA6 Voltage : 0.3609 
    
    DAC Value : 640 
    ADC2 Reading : 576 
    PA6 Voltage : 0.4641 
    
    DAC Value : 768 
    ADC2 Reading : 704 
    PA6 Voltage : 0.5672 
    
    DAC Value : 896 
    ADC2 Reading : 832 
    PA6 Voltage : 0.6703 
    
    DAC Value : 1024 
    ADC2 Reading : 1140 
    PA6 Voltage : 0.9185 
    
    DAC Value : 1152 
    ADC2 Reading : 1089 
    PA6 Voltage : 0.8774 

    DAC Value为1152时,麒麟座的蜂鸣器开始鸣叫,因为PA4引脚是蜂鸣器的使能引脚,0.8V已经能让蜂鸣器工作了。

    DAC和ADC读数有差距是因为线材的压降和噪声的影响。

    展开全文
  • 使用 ADC1 的通道 1 进行 AD 转换,PAO端口读取0-3.3V的电压值,同时通过串口打印读取到的电压值。
  • STM32CubeMX学习教程之七:ADC读取电压并输出到串口

    万次阅读 多人点赞 2018-04-16 11:57:55
    https://github.com/simonliu009/STM32CubeMX-ADC 软件: STM32CubeMX V4.25.0  System Workbench V2.4 固件库版本: STM32Cube FW_F1 V1.6.1 硬件: OneNet 麒麟座V2.3 在STM32CubeMX中新建项目,选择正确...
  • 因项目需求 所以选择了STM公司这款低功耗STM32L0系列芯片,之前买了一块学习板自己学习了一下,后来用自己项目的板子进行了调试,会持续更新的~...程序介绍:给ADC的第四通道一个电压,通过AD转换,输出到串口打印信...
  • STM32CUEB关于KEIL5、stm32f103c8t6的ADC读取数据,电压测量程序 .
  • Arduino STM32F103C8T6使用STM32的ADC功能读取电压值 利用ADC功能,读取模拟输入引脚的数值转换为电压值输出 STM32F103C8T6的模拟值范围:0 ~ 4095,精度比8位的Arduino UNO开发板的模拟值0 ~ 1023,的精度高很多. ...
  • RT Thread之ADC电压读取

    千次阅读 2021-04-04 00:37:26
    官网连接:https://docs.rt-thread.org/#/rt-thread-version/rt-thread-standard/programming-manual/device/adc/adc 一、配置步骤: 1、用cubemx配置底层; 2、cubemx配置好的文件替换之前的配置文件; 3、修改...
  • 若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 ... 目录 前话 Demo运行效果 Demo:电压模拟量采集 ADS1115 实物 特点 引脚图与访问地址 多个ADS1115连接(单级...
  • 配置ADC 3.配置时钟 生成项目 逻辑代码 轮询方式示例: 变量定义 /* USER CODE BEGIN 1 */ uint16_t AD_Value; /* USER CODE END 1 */ 核心代码: while(1) { HAL_ADC_Start(&hadc1);//...
  • CubeMX配置ADC电压采样DMA读取

    千次阅读 2019-08-29 15:21:39
    前言:接着上面的工程继续配置一个ADC电压采样 软件: STM32CubeMX V5.3.0 固件库版本: STM32Cube FW_F1 V1.8.0 硬件: STM32F103C8T6 正文: 1、配置四通道ADC采样输入 2、设置系统ADC时钟 3、配置...
  • 用STM32F103RC的ADC1读取0-3.3V电压,并通过串口1显示出来

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,719
精华内容 2,687
关键字:

adc读取电压