为了控制采样时间,可以使用一个定时器的TRGO(定时器里每次发生更新事件时会有这个信号产生)作为定时器的外部触发。

从定时器框图可以看出,TRGO为TIMx的一个输出.不过这个输出是内部使用的。

void myADC_Init() 
 { 
                 ADC_InitTypeDef ADC_InitStruct; 
                 GPIO_InitTypeDef GPIO_InitStruct; 
                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 ,ENABLE); 
                 RCC_ADCCLKConfig(RCC_PCLK2_Div6); 
  
                //ADC1_Init 
                 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_0; 
                 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN; 
                 GPIO_Init(GPIOA,&GPIO_InitStruct); 
                  
                ADC_DeInit(ADC1); 
                 ADC_InitStruct.ADC_Mode = ADC_Mode_Independent; 
                 ADC_InitStruct.ADC_NbrOfChannel = 1; 
                 ADC_InitStruct.ADC_ContinuousConvMode = DISABLE; 
                 ADC_InitStruct.ADC_ScanConvMode = DISABLE; 
                 ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T3_TRGO; 
                 ADC_InitStruct.ADC_DataAlign =ADC_DataAlign_Right; 
                 ADC_Init(ADC1,&ADC_InitStruct); 
          
                ADC_ExternalTrigConvCmd(ADC1,ENABLE); 
                 //ENABLE ADC1 
                 ADC_RegularChannelConfig(ADC1,0,1,ADC_SampleTime_1Cycles5); 
          
                ADC_DMACmd(ADC1,ENABLE); 
                 ADC_Cmd(ADC1,ENABLE); 
                  
                ADC_ResetCalibration(ADC1); 
                 while(ADC_GetResetCalibrationStatus(ADC1)); 
                 ADC_StartCalibration(ADC1); 
                 while(ADC_GetCalibrationStatus(ADC1)); 
          

  
void TIM3_Init() 
 { 
                 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; 
                 NVIC_InitTypeDef NVIC_InitStruct; 
          
                RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); 
                  
                TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1; 
                 TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; 
                 TIM_TimeBaseInitStruct.TIM_Period = 72000000/SampleRate; 
                 TIM_TimeBaseInitStruct.TIM_Prescaler = 0; 
                 TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct); 
                  
                TIM_SelectOutputTrigger(TIM3,TIM_TRGOSource_Update); //选择TRGO触发源为计时器更新时间 
          
                TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); 
                 NVIC_InitStruct.NVIC_IRQChannel = TIM3_IRQn; 
                 NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0; 
                 NVIC_InitStruct.NVIC_IRQChannelSubPriority = 3; 
                 NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; 
                 NVIC_Init(&NVIC_InitStruct); 
                 TIM_Cmd(TIM3,ENABLE); 
          
}

ADC采样间隔问题+TRGO作为ADC的触发源头的更多相关文章

  1. 理解逐次逼近寄存器型ADC:与其它类型ADC的架构对比【转】

    转自:http://bbs.dzsc.com/space/viewspacepost.aspx?postid=86760 摘要:逐次逼近寄存器型(SAR)模数转换器(ADC)占据着大部分的中等至高分辨 ...

  2. STM32定时器触发ADC多通道连续采样,DMA缓存结果

    STM32的ADC使用非常灵活,采样触发方面:既支持软件触发,定时器或其他硬件电路自动触发,也支持转换完成后自动触发下一通道/轮转换.转换结果存储方面:既支持软件读取和转存,也支持DMA自动存储转换结 ...

  3. NUC131演示如何通过PWM触发ADC。

    今天我来讲讲PWM触发ADC的例程 /**************************************************************************** * @f ...

  4. 【安富莱二代示波器教程】第6章 示波器设计—双通道ADC驱动

    第6章        示波器设计—双通道ADC驱动 本章节为大家讲解示波器的ADC驱动,采用STM32自带ADC实现.关于STM32F429的ADC,可以说处处有地雷,不小心就踩上了,如果简单的使用, ...

  5. STM32cube库配置双ADC的同步规则采样

    http://www.stmcu.org/module/forum/forum.php?mod=viewthread&tid=605203&extra=page%3D&page ...

  6. STM8S103之ADC

    如何快速了解ADC,查看Reference manual中ADC registers章节,初步了解到ADC ADC buffer register和ADC data register Analog W ...

  7. STM32 ADC多通道规则采样和注入采样

    layout: post tags: [STM32] comments: true 文章目录 layout: post tags: [STM32] comments: true 什么是ADC? STM ...

  8. STM32之ADC+步骤小技巧(英文)

    神通广大的各位互联网的网友们.大家早上中午晚上好好好.今早起来很准时的收到了两条10086的扣月租的信息.心痛不已.怀着这心情.又开始了STM32的研究.早上做了计算机控制的PID实验,又让我想起了飞 ...

  9. [nRF51822] 9、基础实验代码解析大全 · 实验12 - ADC

    一.本实验ADC 配置 分辨率:10 位. 输入通道:5,即使用输入通道AIN5 检测电位器的电压. ADC 基准电压:1.2V. 二.NRF51822 ADC 管脚分布 NRF51822 的ADC ...

随机推荐

  1. 100道Java基础面试题收集整理(附答案)

    不积跬步无以至千里,这里会不断收集和更新Java基础相关的面试题,目前已收集100题. 1.什么是B/S架构?什么是C/S架构 B/S(Browser/Server),浏览器/服务器程序 C/S(Cl ...

  2. 535种使用JavaScript重新加载页面的方法

    除了location = location之外还有534中方法重新加载页面 location = location location = location.href location = window ...

  3. Python全栈之路----函数----参数

    参数可以让你的函数更灵活,不只能做死的动作,还可以根据调用时传参的不同决定函数内部的执行流程. 形参:只有在被调用时才分配内存单元,在调用结束时,即可释放所分配的内存单元.因此形参只在函数内部有效.函 ...

  4. centos安装多个tomcat

    1.参考前文安装jdk.第一个tomcat 2.安装第二个tomcat后,修改/etc/profile vi /etc/profile #tomcat1 export CATALINA_BASE=/o ...

  5. linux子系统搭建python3

    我之前win10系统有py3,所以就没有下载,直接输入python ,就会进入python环境,但是,什么包都没有 安装pip $ wget https://bootstrap.pypa.io/get ...

  6. jsp后台取出request请求头

    请求发到a2这个servlet 在这个servlet中请求转发到index.jsp 在jsp中如下的java代码 Enumeration headernames=request.getHeaderNa ...

  7. 用jquery得到select选中的值

    <select class="pushtype" name="push_type" onchange="pushType(this)" ...

  8. SQL查:询结果区分大小写

    在MS SQL2005中的方法: 1)select * from user where name collate Chinese_PRC_CS_AS like 'A$%B%' escape '$'; ...

  9. 学习笔记之Machine Learning Crash Course | Google Developers

    Machine Learning Crash Course  |  Google Developers https://developers.google.com/machine-learning/c ...

  10. Qt中三种解析xml的方式

    在下面的随笔中,我会根据xml的结构,给出Qt中解析这个xml的三种方式的代码.虽然,这个代码时通过调用Qt的函数实现的,但是,很多开源的C++解析xml的库,甚至很多其他语言解析xml的库,都和下面 ...