为了控制采样时间,可以使用一个定时器的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); 
          
}

转载于:https://www.cnblogs.com/dadidelearning/p/10059822.html

ADC采样间隔问题+TRGO作为ADC的触发源头相关推荐

  1. 19. GD32F103C8T6入门教程-adc使用教程6-外部中断线11触发adc0

    adc 使用教程6-外部中断线11触发adc0 使用外部中断线11 触发ADC开始采集数据,PA11 gpio 1.初始化时钟和定义全局变量 /*保存ADC值*/ uint32_t adc_value ...

  2. 20. GD32F103C8T6入门教程-adc使用外部中断IT11触发启动adc规则通道,使用外中断IT15触发注入组

    adc 使用教程6-使用外部中断IT11触发启动adc规则通道,使用外中断IT15触发注入组 ADC支持18个多路通道,可以把转换组织成两组:一个规则组通道和一个注入组通道 规则组,可以按照特定的序列 ...

  3. 基于STM32F407 ADC双通道 PS2游戏机摇杆ADC采集

    基于STM32F407 ADC双通道 PS2游戏机摇杆ADC采集 一.PS2游戏机摇杆概述 1.1PS2游戏机摇杆概述 1.2PS2游戏机摇杆图解 二.硬件连接分析 三.代码实现 3.1 ADC代码 ...

  4. ADC电压采集(多重ADC交替模式)

    实验说明 1:采用三个ADC采集同一个IO口(通道12 PC2),采用一个ADC去采集最快速率2.4M,三个同时交替采集最高可达7.2M 2:三重是以ADC1占主导的,我们只要开启ADC1的DMA就可 ...

  5. 【STM32F042】ADC卡死,ADC一直为0,ADC配置的坑

    1.问题描述 最近在调试电机驱动,刚好写到电压采集这一部分,板子的主控是STM32F040K6T6.用到了ADC,使用非DMA方式.刚开始读取到的值全部是0,然后程序卡死,我在使用万用表测IO口电压后 ...

  6. matlab求adc信号的信噪比,关于ADC的信噪比 - pengyouxiaohui的日志 - EETOP 创芯网论坛 (原名:电子顶级开发网) -...

    昨天电话面试,问我选择ADC都考虑什么,以前搞设计感觉自己是一个不求甚解的人,我说会考虑采样率和位数,问我如何计算精度,我说了计算公式,他又问信噪比,话说我真的没考虑过这方面,只有实话实说,我没考虑过 ...

  7. c语言adc采集取平均值,读取ADC值的浮动平均值

    我想做移动平均值或类似的东西,因为我从ADC获得噪音值,这是我的第一次尝试,只是为了计算移动平均值,但是每次值都变为0,你可以帮我吗?读取ADC值的浮动平均值 这是代码的一部分,这使得该魔术: uns ...

  8. stm32 adc过采样_产生ADC误差的外部原因有哪些?

    01 前言 上篇文章中介绍了ADC自身转换产生的误差,本篇文章来介绍下外部原因导致的ADC误差. 02 ADC环境导致的误差 参考电压噪声 由于ADC输出为模拟信号电压与参考电压之比,因此模拟参考上的 ...

  9. adc量化单位_高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENO...

    (一)一个基本概念 分贝(dB):按照对数定义的一个幅度单位.对于电压值,dB以20log(VA/VB)给出:对于功率值,以10log(PA/PB)给出.dBc是相对于一个载波信号的dB值:dBm是相 ...

最新文章

  1. Oracle EXP-00091解决方法
  2. java wed登录面 代码_java web 登录界面
  3. 营销型网站吸引用户说难也难,说简单也简单
  4. @resource和@Autowired区别
  5. 阵列卡正确安装调试方法
  6. Backbone学习日记第二集——Model
  7. centos php solr 安装,centos下安装配置solr全纪录
  8. 利用IP纯真数据库查询地址
  9. 解决Tortoise git没有红色、绿色勾勾的问题
  10. 腾讯互娱PHP怎么样,还原最真实的NBA:专访腾讯互娱《最强NBA》
  11. mysql 主从1146_mysql 主从复制1146错误处理办法
  12. Android 虚拟按键上报
  13. 消防工程师 第二篇 建筑防火 5.1 防火分区
  14. 大数据学习路线(完整详细版)
  15. 大物笔记(顺便记记)
  16. django种表单post出现CSRF verification failed( CSRF验证失败 ) 的两种解决方案
  17. 华师大 OJ 2897
  18. csgo搭建显示段位的服务器,csgo官匹隐藏分怎么看 官匹段位升级机制
  19. java实现北京地铁换乘
  20. fiddler工具使用大全(全网最详细)

热门文章

  1. memcached的安装(server、client)、magent整合
  2. Encoding非常用编码转换
  3. 【安装配置】克隆方式安装Oracle数据库软件
  4. Linux 系统如何更改主机名
  5. MFC中Socket网络通讯
  6. 大数据工程师职场面试攻略技巧有哪些?
  7. 【window】Windows10下为PHP安装redis扩展
  8. C#版 - Leetcode 201. 数字范围按位与(bitwise AND) - 题解
  9. Kubernetes 1.5安装
  10. 中国红色菜刀去后门(过狗)