[应用相关] tim trgo 的使用方法

[复制链接]
1024|1
 楼主| zhuotuzi 发表于 2016-12-14 17:24 | 显示全部楼层 |阅读模式
查手册知,TRGO:意为触发输出.
从定时器框图可以看出,TRGO为TIMx的一个输出.不过这个输出是内部使用的.
使用TRGO触发ADC是可以的.具体你可以参考一下<<STM32参考手册>>V10第278页,使用一个定时器作为另一个定时器的预分频器的方法.


 楼主| zhuotuzi 发表于 2016-12-14 17:25 | 显示全部楼层
  1. void myADC_Init()
  2. {
  3.                  ADC_InitTypeDef ADC_InitStruct;
  4.                  GPIO_InitTypeDef GPIO_InitStruct;
  5.                  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 ,ENABLE);
  6.                  RCC_ADCCLKConfig(RCC_PCLK2_Div6);
  7.   
  8.                 //ADC1_Init
  9.                  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_0;
  10.                  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;
  11.                  GPIO_Init(GPIOA,&GPIO_InitStruct);
  12.                   
  13.                 ADC_DeInit(ADC1);
  14.                  ADC_InitStruct.ADC_Mode = ADC_Mode_Independent;
  15.                  ADC_InitStruct.ADC_NbrOfChannel = 1;
  16.                  ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;
  17.                  ADC_InitStruct.ADC_ScanConvMode = DISABLE;
  18.                  ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T3_TRGO;
  19.                  ADC_InitStruct.ADC_DataAlign =ADC_DataAlign_Right;
  20.                  ADC_Init(ADC1,&ADC_InitStruct);
  21.          
  22.                 ADC_ExternalTrigConvCmd(ADC1,ENABLE);
  23.                  //ENABLE ADC1
  24.                  ADC_RegularChannelConfig(ADC1,0,1,ADC_SampleTime_1Cycles5);
  25.          
  26.                 ADC_DMACmd(ADC1,ENABLE);
  27.                  ADC_Cmd(ADC1,ENABLE);
  28.                   
  29.                 ADC_ResetCalibration(ADC1);
  30.                  while(ADC_GetResetCalibrationStatus(ADC1));
  31.                  ADC_StartCalibration(ADC1);
  32.                  while(ADC_GetCalibrationStatus(ADC1));
  33.          
  34. }
  35.   
  36. void TIM3_Init()
  37. {
  38.                  TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
  39.                  NVIC_InitTypeDef NVIC_InitStruct;
  40.          
  41.                 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
  42.                   
  43.                 TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
  44.                  TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
  45.                  TIM_TimeBaseInitStruct.TIM_Period = 72000000/SampleRate;
  46.                  TIM_TimeBaseInitStruct.TIM_Prescaler = 0;
  47.                  TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct);
  48.                   
  49.                 TIM_SelectOutputTrigger(TIM3,TIM_TRGOSource_Update); //选择TRGO触发源为计时器更新时间
  50.          
  51.                 TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
  52.                  NVIC_InitStruct.NVIC_IRQChannel = TIM3_IRQn;
  53.                  NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
  54.                  NVIC_InitStruct.NVIC_IRQChannelSubPriority = 3;
  55.                  NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
  56.                  NVIC_Init(&NVIC_InitStruct);
  57.                  TIM_Cmd(TIM3,ENABLE);
  58.          
  59. }


您需要登录后才可以回帖 登录 | 注册

本版积分规则

214

主题

3375

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部