为了控制采样时间,可以使用一个定时器的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. Python多进程并发操作中进程池Pool的应用

    Pool类 在使用Python进行系统管理时,特别是同时操作多个文件目录或者远程控制多台主机,并行操作可以节约大量的时间.如果操作的对象数目不大时,还可以直接使用Process类动态的生成多个进程,十 ...

  2. 【leetcode】453. Minimum Moves to Equal Array Elements

    problem 453. Minimum Moves to Equal Array Elements 相当于把不等于最小值的数字都减到最小值所需要次数的累加和. solution1: class So ...

  3. noip-2006普及组-数列- 【模拟-找规律-快速幂】

    链接:https://ac.nowcoder.com/acm/contest/153/1047 来源:牛客网 题目描述 给定一个正整数k( ≤ k ≤ ),把所有k的方幂及所有有限个互不相等的k的方幂 ...

  4. 软件工程第4次作业------石墨文档Android客户端案例分析

    作业要求的博客链接:https://edu.cnblogs.com/campus/nenu/2016CS/homework/2505 分析产品:石墨文档Android客户端 第一部分 调研和评测 1. ...

  5. Visual Studio AI环境记录(Windows10)

    一.环境 Windows [版本 10.0.15063]64位 Git-2.14.1 64位[官网下载] TortoiseGit-2.5.0.0 64位[官网下载],这是一个Git 客户端,外号&qu ...

  6. @angular/cli 工程 项目 配置

    如果你创建工程项目用angular-cli 你的样式文件想使用scss, 并且让ng serve自动编译它们 你可以在创建项目的时候用 ng new sassy-project --style=sas ...

  7. Nginx调试入门

    1.查看nginx.conf配置文件是否有错误 ./nginx -t -c ./nginx.conf   #可以看到,正常情况下语法没问题,配置文件测试成功了,-t测试-c配置文件 如果我故意加入错误 ...

  8. SpringBoot配置(1) 配置文件application&yml

    SpringBoot配置(1) 配置文件application&yml 一.配置文件 1.1 配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的. application ...

  9. sxstrace启动.bat

    @echo offset dd=%date:~8,2%set mm=%date:~5,2%set yy=%date:~0,4%set Tss=%TIME:~6,2%set Tmm=%TIME:~3,2 ...

  10. LeetCode——727.Minimum Window Subsequence

    一.题目链接:https://leetcode.com/problems/minimum-window-substring/ 二.题目大意: 给定两个字符串S和T,要求从S中找出包含T中所有字母的最短 ...