精华内容
参与话题
问答
  • 携手STM32CubeMX玩转STM32

    千人学习 2019-04-19 09:30:00
    本课程教大家如何利用STM32CubeMX玩转STM32STM32CubeMX支持的所有型号MCU都适用于本课程)。课程内容分为基础内容和扩展内容,例如:讲解串口时会扩展开讲Xmodem通信协议,讲解ADC/DAC时会扩展讲傅里叶计算,讲解...
  • stm32笔记7 - ADC

    2019-09-21 10:08:54
    Analog-to-Digital Converter一、stm32f4 ADC基本介绍1. stm32F4 ADC主要特性2. 单个ADC框图3. ADC通道和引脚对应关系4. ADC引脚二、stm32 ADC基本概念1. 通道组 一、stm32f4 ADC基本介绍 1. stm32F4 ADC主要特性 ...

    一、stm32f4 ADC基本介绍

    1. stm32F4 ADC主要特性

    可配置 12 位、10 位、8 位或 6 位分辨率
    ● 在转换结束、注入转换结束以及发生模拟看门狗或溢出事件时产生中断
    ● 单次和连续转换模式
    ● 用于自动将通道 0 转换为通道“n”的扫描模式
    ● 数据对齐以保持内置数据一致性
    ● 可独立设置各通道采样时间
    ● 外部触发器选项,可为规则转换和注入转换配置极性
    ● 不连续采样模式
    ● 双重/三重模式(具有 2 个或更多 ADC 的器件提供)
    ● 双重/三重 ADC 模式下可配置的 DMA 数据存储
    ● 双重/三重交替模式下可配置的转换间延迟
    ● ADC 转换类型(参见数据手册)
    ● ADC 电源要求:全速运行时为 2.4 V 到 3.6 V,慢速运行时为 1.8 V
    ADC 输入范围:VREF- ≤ VIN ≤ VREF+
    ● 规则通道转换期间可产生 DMA 请求
    VREF- 如果可用(取决于封装),则必须将其连接到 VSSA

    2. 单个ADC框图

    在这里插入图片描述

    3. ADC通道和引脚对应关系

    在这里插入图片描述
      从上图可以看出,stm32F4系列有三个ADC控制器(ADC1 / ADC2 / ADC3),每个控制器最多能控制16个通道,三个控制器一共支持24个通道(ADC1和ADC2的16个通道相同,ADC3红色标记的8个通道,16+8=24).
    其中144脚芯片因为带PF脚,所以多8个通道,为24个外部通道。小于144脚芯片只有16个外部通道。

    4. ADC引脚

    在这里插入图片描述
      一般情况下,芯片VDD电压为3.3V,VSS接地,所以相对来说VDDA也为3.3V,VSSA也接地,模拟信号输入(ADCx_IN)不超过VDD3.3V.

    二、stm32 ADC基本概念

    1. 通道组

      16条复用通道将转换分为两组:规则转换和注入转换。每个组包含一个转换序列(RANK),
      该序列可按任意顺序在任意通道上完成。
    规则通道组
      相当正常运行的程序。最多16个通道。
      规则通道和它的转换顺序在 ADC_SQRx 寄存器中选择,规则
    组转换的总数应写入ADC_SQR1寄存器的L[3:0]中
    注入通道组
      相当于中断。最多4个通道。
      注入组和它的转换顺序在 ADC_JSQR 寄存器中选择。注入组
    里转化的总数应写入ADC_JSQR寄存器的L[1:0]中

    在这里插入图片描述

    2. ADC时钟

    在这里插入图片描述
      一般常用第一种时钟方案,但ADC的采样频率不能设置太高,否则会不准,STM32F4 ADC时钟是设为最大32MHz 、STM32F1 最大为 14MHz。
      因此,F1如果按照默认设置PCLK2为72MHz,则ADC时钟应为6分频或者8分频,F4如果按照默认设置PCLK2为84MHz,则ADC时钟应起码为4分频。
      ADC时钟通过 时钟配置寄存器(RCC_CFGR) 配置。

    3. 采样时间

    在这里插入图片描述

    4. 单次/连续转换模式

    在这里插入图片描述

    5. 扫描模式

    在这里插入图片描述

    三、ADC编程相关库函数

    1. 初始化结构体

    ADC中有两个初始化函数需要到初始化结构体,分别为

    • void ADC_CommonInit(ADC_CommonInitTypeDef ADC_CommonInitStruct)*
      这些参数用来配置ADC_CCR寄存器的相关参数
    • void ADC_Init(ADC_TypeDef ADCx, ADC_InitTypeDef ADC_InitStruct)**
     typedef struct 
    {
      uint32_t ADC_Mode;                      /*!< 多重ADC模式选择 ADC_Mode_Independent @ref ADC_Common_mode */                                              
      uint32_t ADC_Prescaler;                 /*!< ADC预分频(分频系数) ADC_Prescaler_Div4 @ref ADC_Prescaler */
      uint32_t ADC_DMAAccessMode;             /*!<  DMA访问模式(是否使用DMA) ADC_DMAAccessMode_Disabled @ref ADC_Direct_memory_access_mode_for_multi_mode */
      uint32_t ADC_TwoSamplingDelay;          /*!< 采样周期 (两个采样阶段之间延时)ADC_TwoSamplingDelay_5Cycles 
                                                   @ref ADC_delay_between_2_sampling_phases */
    }ADC_CommonInitTypeDef;
    
     typedef struct
    {
      uint32_t ADC_Resolution;                /*!< 分辨率 ADC_Resolution_12b @ref ADC_resolution */                                   
      FunctionalState ADC_ScanConvMode;       /*!< 选择单通道还是多通道 set to ENABLE or DISABLE 是否使用扫描模式,对应ADC_CR1位8:SCAN位 */ 
      FunctionalState ADC_ContinuousConvMode; /*!< 选择是否连续转换 set to ENABLE or DISABLE.单次转换OR连续转换,对应ADC_CR2的位1:CONT */
      uint32_t ADC_ExternalTrigConvEdge;      /*!< 选择外部触发方式 ,对应ADC_CR2的位29:28,EXTEN,ADC_ExternalTrigConvEdge_None 
                                                   @ref ADC_external_trigger_edge_for_regular_channels_conversion */
      uint32_t ADC_ExternalTrigConv;          /*!< 选择触发事件 ,对应ADC_CR2的位[19:17] :EXTSEL[2:0],ADC_ExternalTrigConv_T1_CC1 
                                                   @ref ADC_extrenal_trigger_sources_for_regular_channels_conversion */
      uint32_t ADC_DataAlign;                 /*!< 数据对齐方式 (左对齐/右对齐),对应ADC_CR2的位11:ALIGN,ADC_DataAlign_Right @ref ADC_data_align */
      uint8_t  ADC_NbrOfConversion;           /*!< 规则通道序列长度,对应ADC_SQR1的位[23:20]: L[3:0]
                                                   This parameter must range from 1 to 16. */
    }ADC_InitTypeDef;
    

    四、ADC编程流程

    以ADC1的通道5为例(PA5)

    // 1. 开启PA口时钟和ADC1时钟,设置PA1为模拟输入。
    	RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOA, ENABLE);
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);  
    	GPIO_Init(...);      
         
    // 2. 复位ADC1,同时设置ADC1分频因子。
         ADC_DeInit();
         
    // 3. 初始化ADC_CCR寄存器。
         ADC_CommonInit(...);
        
    // 4. 初始化ADC1参数,设置ADC1的工作模式以及规则序列的相关信息。
         ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);
         
    // 5. 使能ADC
         ADC_Cmd(ADC1, ENABLE);
         	
    // 6. 配置规则通道参数,提高采样时间可以提高精确度
         ADC_RegularChannelConfig();
         
    // 7. 使能指定的ADC1的软件转换启动功能
         ADC_SoftwareStartConv(ADC1);
    
    // 8. 等待转换完成,读取ADC值。
         ADC_GetConversionValue(ADC1);
    

    • ADC_DeInit() 等效于RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC, ENABLE) ;
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC, DISABLE);
      可参考固件库函数。
    • 步骤的前5步是ADC初始化(准备阶段),步骤6-8为ADC的实现(工作阶段)
    • 如下为采集一次的例程:
    /* 
    * 获得ADC值
    * ch: @ref ADC_channels 
    * 通道值 0~16取值范围为:ADC_Channel_0~ADC_Channel_16
    * 返回值:转换结果
    */
    u16 Get_ADC_Value(u8 ch)   
    {
    	/* 设置指定ADC的规则组通道,一个序列,采样时间 */
    	ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_480Cycles );	//ADC1,ADC通道,480个周期,提高采样时间可以提高精确度
    	ADC_SoftwareStartConv(ADC1);		            //使能指定的ADC1的软件转换启动功能 
    	while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC )); //等待转换结束
    	return ADC_GetConversionValue(ADC1);	        //返回最近一次ADC1规则组的转换结果
    }
    

    展开全文
  • STM32F103单片机上实现ADC转换功能,用ADC1通道0采集外部波形,采用连续转换模式,中断的方式进行数据采集。
  • 基于STM32F103芯片,采用中断方式读取ADC的单通道例程!
  • STM32F103单片机上实现ADC转换功能,用ADC1通道0采集外部波形,采用单次转换模式,中断的方式进行数据采集。
  • 我的单片机是stm32f373。使用了freeRtos。adc通过timer19 计数,自动进入中断。同事主程序中有freeRtos的task在运行。...我认为是freeRtos和stm32中断优先级的问题。但是具体怎么修改没有什么头绪。
  • 文章目录一、温度传感器的简介内置温度传感器特性温度的计算...■ STM32内部温度传感器与ADC的通道16相连,与ADC配合使用实现温度测量 ■ 温度传感器模拟输入推荐采样时间是17.1μs。 ■ STM32的内部温度传感器测量...

    一、温度传感器的简介

    内置温度传感器特性

    在这里插入图片描述
    ■ STM32有一个内部的温度传感器,可以用来测量CPU测量周围的温度(TA)。
    ■ STM32内部温度传感器与ADC的通道16相连,与ADC配合使用实现温度测量
    ■ 温度传感器模拟输入推荐采样时间是17.1μs。
    ■ STM32的内部温度传感器测量范围–40~125℃,精度 ± 1.5℃。

    温度的计算

    官方数据手册公式如下:
    在这里插入图片描述
    百度给出了V25和Avg_Slope的值:

    最小 经典 最大
    V25 1340mV 1430mV 1520mV
    Avg_Slope(mV/°C) 4.0 4.3 4.3
    • VSENSE 如何得到?
      我们得到的AD结果是ADC_DR这个变量,存在以下关系:
      ADC_DR / VSENSE = 212 / 3300mV
      VSENSE
      = ADC_DR * 3300mV / 212
      = ADC_DR3300/4096
      = ADC_DR
      825/1024
      = (ADC_DR*825)>>10
    • 例:读到VSENSE = 1. 35V,分别取V25的典型值1340mV和Avg_Slope 的经典值4.3,计算当前温度。
        由公式 T = (VSENSE -V25 )/Avg_Slope + 25
          得 T = (1430 - 1350)/4.3 + 25 = 43.60
        所以温度大约为43.6°C

    二、编程

    编程思路:

    ①初始化ADC
    ②设置ADC CR2的TSVREFE位,打开内部温度传感器
     ADC_TempSensorVrefintCmd(ENABLE);
    ③设置采样时间等于17.1us,配置规则通道参数:选择ADC_ IN16输入通道。
     ADC_RegularChannelConfig( );
    ④启动软件转换
     ADC_SoftwareStartConvCmd();
    ⑤等待转换结束并读取ADC_DR结果
     (u32)ADC_GetConversionValue(ADC1);
    ⑥由ADC_DR结果计算出温度值

    代码:

    adc.h

    #ifndef ADC_H
    #define ADC_H
    #include "stm32f10x.h"
    #include "bsp_systick.h"
    
    #define		V25					1370
    #define		Avg_Slope		4.35
    void T_ADC_Configuration(void);
    u32 Get_ADC_Average(u8 channel,u8 times);
    float Get_InternalSensorTemperate(void);
    #endif
    
    

    adc.c

    #include "adc.h"
    
    void T_ADC_Configuration(void)
    {
    	ADC_InitTypeDef ADC_InitStructure; 
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1	, ENABLE );	  //使能GPIOA,ADC1通道时钟
    	RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //分频因子6时钟为72M/6=12MHz
    
      ADC_DeInit(ADC1);  //将外设 ADC1 的全部寄存器重设为缺省值
    	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;	//ADC工作模式:ADC1和ADC2工作在独立模式
    	ADC_InitStructure.ADC_ScanConvMode = ENABLE;	//使能扫描
    	ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;	//设置模数转换工作在连续转换模式
    	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;	//转换由软件启动
    	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;	//ADC数据右对齐
    	ADC_InitStructure.ADC_NbrOfChannel = 1;	//顺序进行规则转换的ADC通道的数目
    	ADC_Init(ADC1, &ADC_InitStructure);	//根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器
    
    	ADC_Cmd(ADC1, ENABLE);	//使能指定的ADC1
    	ADC_ResetCalibration(ADC1);	//重置指定的ADC1的复位寄存器
      while(ADC_GetResetCalibrationStatus(ADC1));	//获取ADC1重置校准寄存器的状态,设置状态则等待
    	ADC_StartCalibration(ADC1);	 
    	while(ADC_GetCalibrationStatus(ADC1));		//获取指定ADC1的校准程序,设置状态则等待
    	
    	ADC_TempSensorVrefintCmd(ENABLE); //开启内部温度传感器
    }
    
    /*******************************************************************
    *函数:u8 Get_ADC_Average(u8 channel,u8 times) 
    *功能:获取adc转换平均值
    *输入:
    	u8 channel, 通道号:ADC_Channel_0 ~ ADC_Channel_17
    	u8 times,	获取次数
    *输出:获取次数的平均值
    *特殊说明:
    *******************************************************************/
    u32 Get_ADC_Average(u8 channel,u8 times)   
    {	
    	u32 convert_Result=0;
    	u8 i;
    	for(i=0;i<times;i++)
    	{
    		ADC_RegularChannelConfig(ADC1, channel, 1, ADC_SampleTime_55Cycles5 );	//ADC1,第一个转换,采样时间为28.5周期?  			    
    		ADC_SoftwareStartConvCmd(ADC1, ENABLE);		//使能指定的ADC1的软件转换启动功能
    		while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
    		convert_Result+=(u32)ADC_GetConversionValue(ADC1);//读取ADC_DR结果数据,此时EOC会自动清除
    		SysTick_Delay_ms(5);
    	}
    	return convert_Result/times;
    }
    
    /*******************************************************************
    *函数:u8 Get_InternalSensorTemperate(u8 channel,u8 times) 
    *功能:获取adc转换平均值
    *输入:
    *输出:获取的温度值
    *特殊说明:
    *******************************************************************/
    float Get_InternalSensorTemperate(void)	//获取内部温度传感器温度值
    {
    	int ADC_ConvertedValue;//用来存储ADC转换出来的值
     	float Current_Temp;
    	
    	ADC_ConvertedValue = (int)Get_ADC_Average(ADC_Channel_16,20);	//20次取平均
    	ADC_ConvertedValue = (ADC_ConvertedValue*825)>>10;//换算成Vsensor
    	Current_Temp = (((V25-ADC_ConvertedValue)/Avg_Slope)+25);	//计算温度值 	 
    	return Current_Temp;
    }
    
    

    main.c

    #include "stm32f10x.h"
    #include "bsp_systick.h"
    #include "usart.h"
    #include "adc.h"
    
    int main(void)
    {
    	usart1_Init(9600);
    	printf("start!\n");
    	
    	T_ADC_Configuration();
    	u32 adc_DRValue = 0 ;
    	float temperature;
    	
    	while(1)
    	{
    		adc_DRValue = Get_ADC_Average(ADC_Channel_16,20);//指定ADC_Channel_1,获取ADC的值
    		printf("adc_DRValue:%d\n",adc_DRValue);//通过串口打印获取ADC的值
    		temperature=Get_InternalSensorTemperate();//转换ADC的值,得到具体的温度
    		printf("temperature:%f\n",temperature);//通过串口打印获取电压的值
    		SysTick_Delay_ms(1500);
    	}
    }
    
    

    遇到的问题-数据类型问题

    在这里插入图片描述
    代码如下

    float Get_Temperate(void)	//获取内部温度传感器温度值
    {
    	u32 ADC_ConvertedValue;//用来存储ADC转换出来的值,单位是mV
     	float Current_Temp;
    	ADC_ConvertedValue = T_Get_ADC_Average(10);	//20次取平均
    	ADC_ConvertedValue = (ADC_ConvertedValue*825)>>10;//(ADC_ConvertedValue*825)>>10 表示 ADC_ConvertedValue*3300/4096
    	Current_Temp=(float)(((1370-ADC_ConvertedValue)/4.35)+25);	//转换为温度值 	 
    	return Current_Temp;
    }
    

    思来想去,最后发现是数据类型的问题,因为ADC_ConvertedValue会得到负数。
    ADC_ConvertedValue由u32改为int类型就得到正确结果。

    float Get_Temperate(void)	//获取内部温度传感器温度值
    {
    	int ADC_ConvertedValue;//用来存储ADC转换出来的值,单位是mV
     	float Current_Temp;
    	ADC_ConvertedValue = (int)T_Get_ADC_Average(20);	//20次取平均
    	ADC_ConvertedValue = (ADC_ConvertedValue*825)>>10;//(ADC_ConvertedValue*825)>>10 表示 ADC_ConvertedValue*3300/4096
    	Current_Temp = (((1370-ADC_ConvertedValue)/4.35)+25);	//转换为温度值 	 
    	return Current_Temp;
    }
    

    在这里插入图片描述

    展开全文
  • 电子-12通道ADCDMA中断方式STM32F1标准库.rar,单片机/嵌入式STM32-F0/F1/F2
  • ADC_STM32F103_HAL_TEST.zip

    2020-04-01 09:39:31
    最近在学习STM32hal库,通过HAL库的配置,在main函数中轮循获取ADC采样并通过DAM读取,适合新手,不喜勿喷!
  • 今天在调试STM32G0 ADC+DMA中断时发现一个问题: ADC配置为连续采样模式,调试时发现程序一直在中断中运行。导致主循环不运行,猜测是因为中断触发频率过高导致。 ADC改为单次触发模式,果然问题解决。 为什么连续...

    今天在调试STM32G0 ADC+DMA中断时发现一个问题:
    ADC配置为连续采样模式,调试时发现程序一直在中断中运行。导致主循环不运行,猜测是因为中断触发频率过高导致。
    ADC改为单次触发模式,果然问题解决。

    为什么连续采样模式会这样呢?目前没空查找。 将采样速度调低,不知道能不能解决。

    展开全文
  • #include "stm32_lib/inc/stm32f0xx_rcc...#include "stm32_lib/inc/stm32f0xx_adc.h" #include "stm32_lib/inc/stm32f0xx_gpio.h" int main(void) { //时钟配置 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE
    #include "stm32_lib/inc/stm32f0xx_rcc.h"
    #include "stm32_lib/inc/stm32f0xx_adc.h"
    #include "stm32_lib/inc/stm32f0xx_gpio.h"
    
    int main(void)
    {
    	//时钟配置
    	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
    
    	//ADC IO配置,此处定义PA0口为ADC端口
    	GPIO_InitTypeDef PORT_ADC;
    	PORT_ADC.GPIO_Pin=GPIO_Pin_0;
    	PORT_ADC.GPIO_Mode=GPIO_Mode_AN;
    	PORT_ADC.GPIO_PuPd=GPIO_PuPd_NOPULL;
    	GPIO_Init(GPIOA,&PORT_ADC);
    
    	//ADC 参数配置
    	ADC_InitTypeDef ADC_InitStuctrue;
    	ADC_InitStuctrue.ADC_Resolution=ADC_Resolution_12b;//12位精度
    	ADC_InitStuctrue.ADC_ContinuousConvMode=DISABLE;//单次ADC
    	ADC_InitStuctrue.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_None;
    	ADC_InitStuctrue.ADC_DataAlign=ADC_DataAlign_Right;//数据右对齐
    	ADC_InitStuctrue.ADC_ScanDirection=ADC_ScanDirection_Backward;//数据覆盖
    	ADC_Init(ADC1,&ADC_InitStuctrue);
    
    	//配置ADC采样的通道和采样周期
    	//PA0对应ADC通道0
    	//注意,采集的数据是否准确与采样时间有关系
    	ADC_ChannelConfig(ADC1,ADC_Channel_0,ADC_SampleTime_239_5Cycles);
    	//如果采集系统内部温度,则通道为16,同时要使能温度传感器
    	//ADC_ChannelConfig(ADC1,ADC_Channel_16,ADC_SampleTime_239_5Cycles);
    	//ADC_TempSensorCmd(ENABLE);
    
    	//校准
    	ADC_GetCalibrationFactor(ADC1);
    	//使能
    	ADC_Cmd(ADC1,ENABLE);
    	//等待ADC准备
    	while(ADC_GetFlagStatus(ADC1,ADC_FLAG_ADEN)==RESET);
    	//软件启动ADC转换
    	ADC_StartOfConversion(ADC1);
    	//等待ADC完成
    	while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)==RESET);
    	//所得数据即为ADC数据
    	unsigned short adc_data=ADC_GetConversionValue(ADC1);
    
    	/*
    	//如果采集的是16通道,即芯片温度,则温度的值如下
    	//下面这段代价,参考STM32F030数据手册(寄存器版)A.7.16
    	//出厂校准数据所存储的地址,30°C和110°C的ADC值
    	#define TEMP110_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FFFF7C2))
    	#define TEMP30_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FFFF7B8))
    	#define VDD_CALIB ((uint16_t) (330))
    	#define VDD_APPLI ((uint16_t) (300))
    	int32_t temperature;
    	temperature = (((int32_t) ADC1->DR * VDD_APPLI / VDD_CALIB)- (int32_t) *TEMP30_CAL_ADDR );
    	temperature = temperature * (int32_t)(110 - 30);
    	temperature = temperature / (int32_t)(*TEMP110_CAL_ADDR- *TEMP30_CAL_ADDR);
    	temperature = temperature + 30;
    	*/
    	while(1)
    	{
    	}
    }
    

    展开全文
  • ADC基于stm32的电压电流采集.用4位8段数码管显示 通过stm32的双adc采集两路电压值,对太阳能电池板的输出电压,电流进行采集。
  • STM32 基础系列教程 12 – ADC 中断

    千次阅读 2019-04-07 12:19:24
    学习stm32 adc模数转换接口使用,学会用STM32对模拟信号时行采样,通过中断模式得到ADC结果。 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是STM32F103c8t6, 使用stm32cubemx 工具自动产生的...
  • STM32 ADC中断后,AD继续在采集

    千次阅读 2014-12-08 15:42:46
    AD模拟看门狗中断处理程序如下 void ADC1_IRQHandler(void) { g_u32IRQ_Cout = DMA_GetCurrDataCounter(DMA1_Channel1);  if(ADC_GetITStatus(ADC1, ADC_IT_OVR) != RESET)  {  //while(1); ADC_...
  • ADC模拟看门狗中断,请问有人用过stm32f303的看门狗吗? 如果只有在while循环体中不断调用ADC_GetConversionValue(ADC1)才能进入ADC 模拟中断的话,那这个中断失去意义了,那程序每次读取后也可判断范围。我想应该...
  • 原子ADC基础上,STM32ADC采集反馈电压,实现通过双缓冲DMA搬运数据。
  • *ADC ·ADC通道 规则通道、注入通道 ·ADC执行模式 单次、连续、扫描、间断 ·单次转换 一个通道转换完成后标志位置位可以产生中断 ·连续转换 设置的连续数目转换完成后标志位置位产生中断 ·扫描模式 一...
  • STM32 中断ADC 定时器 实 PWM i/o例教程 基于ARM® Cortex® M 处理器内核的 32位闪存微控制器STM32产品家族,为MCU用户开辟了一个全新的自由开发空间,并提供了各种易于上手的软硬件辅助工具。 STM32 MCU融高性能...
  • STM32ADC详解

    万次阅读 多人点赞 2019-08-26 20:23:20
    STM32f103系列有3个ADC,精度为12位,每个ADC最多有16个外部通道。其中ADC1和ADC2都有16个外部通道,ADC3一般有8个外部通道,各通道的A/D转换可以单次、连续、扫描或间断执行,ADC转换的结果可以左对齐或右对齐储存...
  • stm32 ADC模拟看门狗例程 ,IAR开发环境,用于stm32f103c8-PTK 三合一开发套件,亲测可用。
  • STM32F103 使用定时器触发ADC,并使用DMA中断+双缓冲实现数据采集。 博客地址 http://blog.csdn.net/u014124220/article/details/50785775
  • F042网络资源很少,这个是我产品开发的文档,花费了不少时间。 能兼容定时器中断,can通信及ADC,已调试OK。
  • 说明,当使用DMA时EOC中断会不正常,因为DMA后,也就是DR被读取...u32 ADC12_RESULT[8] ; void ADC1_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; DMA_InitType...
  • stm32f407 adc的dma中断方式

    千次阅读 2018-11-16 15:20:12
    adc.h" /* 数据定义 */ u8 UpdataTIM = 0; //更新TIM2定时器标志 u16 CurrentFreq = 500;//默认市电频率,单位为0.1hz ADBASE_TYPE uAD_Buff_A[ADC_CHANNEL]; //ADC采集缓存A ADBASE_TYPE uAD_Buff_B[ADC_...
  • STMF103单片机上,用PA0实现ADC采样模拟看门狗事件,当输入电压值值在看门狗设置的上下限值之间时,采样值不输出,只有输入电压值高于看门狗上限值或者输入电压低于看门狗下限值时,ADC才会输出采样值。此功能可以...
  • STM32CUBE生成代码,STM32F103c8t6 OLED控制程序,PWM输出函数控制电机正反转,LED灯闪烁,读取编码器,计时控制,OLED控制程序 。
  • 电子-基于战舰V3STM32F103多通道ADCDMA中断方式HAL库.rar,单片机/嵌入式STM32-F0/F1/F2
  • STM32】HAL库 STM32CubeMX教程九---ADC

    万次阅读 多人点赞 2019-08-16 17:05:31
    前言: ...1、芯片: STM32F407ZET6/ STM32F103ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 知识概括: 通过本篇博客您将学到: ACD工作原理 STM32CubeMX创建...
  • 电子-基于阿波罗STM32F767多通道ADCDMA中断方式HAL库.rar,单片机/嵌入式STM32-F0/F1/F2

空空如也

1 2 3 4 5 ... 20
收藏数 4,808
精华内容 1,923
关键字:

adc中断