新手入门 
 
	- 积分
 - 6
 
        - 金钱
 - 6 
 
       - 注册时间
 - 2017-8-14
 
      - 在线时间
 - 0 小时
 
 
 
 | 
 
1金钱 
目前是实现了所需功能但是有点小问题,一直想不明白(下面的红字部分) 
 
void timer1_init(void) 
{ 
        TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure; 
        TIM_OCInitTypeDef         TIM_OCInitStructure; 
 
  TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);  
  TIM_TimeBaseStructure.TIM_Period = 800-1;   // 这个地方设置成小于100之后  dma中断就进不去 不知道为什么       
  TIM_TimeBaseStructure.TIM_Prescaler = 9-1;   //     
  TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;     
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;   
  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); 
  /* TIM1 channel1 configuration in PWM mode */ 
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;  
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;                 
  TIM_OCInitStructure.TIM_Pulse = 0x10;  
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;          
  TIM_OC1Init(TIM1, &TIM_OCInitStructure); 
         
} 
 
顺带问一下如何检查触发时间,感觉设置的定时器值和实际的值不太一样 
 
附上所有的初始化 
void  Adc_Init(void) 
{          
        ADC_InitTypeDef ADC_InitStructure;  
  GPIO_InitTypeDef GPIO_InitStructure; 
 
         
         
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1        , ENABLE ); //ê1Äüadc1ê±Öó 
         
        RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //éèÖÃADC·ÖÆμòò×ó6 72M/6=12,ADC×î′óê±¼ä2»Äü3¬1y14M 
 
 
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; 
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;                 
        GPIO_Init(GPIOA, &GPIO_InitStructure);         
         
        ADC_DeInit(ADC1);  //¸′λADC1,½«íaéè ADC1 μÄè«2¿¼Ä′æÆ÷ÖØéèÎaè±ê¡Öμ 
 
        ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; 
  ADC_InitStructure.ADC_ScanConvMode = DISABLE; 
  ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; 
  ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; 
  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; 
  ADC_InitStructure.ADC_NbrOfChannel = 1; 
  ADC_Init(ADC1, &ADC_InitStructure); 
 
  /* ADC1 regular channel14 configuration */  
  ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_1Cycles5); 
  /* Set injected sequencer length */ 
  ADC_InjectedSequencerLengthConfig(ADC1, 1); 
         
  /* Enable automatic injected conversion start after regular one */ 
  ADC_AutoInjectedConvCmd(ADC1, ENABLE); 
 
  /* Enable ADC1 DMA */ 
  ADC_DMACmd(ADC1, ENABLE); 
 
  /* Enable ADC1 external trigger */  
  ADC_ExternalTrigConvCmd(ADC1, ENABLE); 
 
////  /* Enable JEOC interrupt */ 
////  ADC_ITConfig(ADC1, ADC_IT_JEOC, ENABLE); 
 
  /* Enable ADC1 */ 
  ADC_Cmd(ADC1, ENABLE); 
 
  /* Enable ADC1 reset calibration register */    
  ADC_ResetCalibration(ADC1); 
  /* Check the end of ADC1 reset calibration register */ 
  while(ADC_GetResetCalibrationStatus(ADC1)); 
 
  /* Start ADC1 calibration */ 
  ADC_StartCalibration(ADC1); 
  /* Check the end of ADC1 calibration */ 
  while(ADC_GetCalibrationStatus(ADC1)); 
 
}                                 
 
//ADC_DMA初始化 
void ADC_DMA_Config(void) 
{ 
  DMA_InitTypeDef DMA_InitStructure;  
  NVIC_InitTypeDef NVIC_InitStructure; 
 
  DMA_DeInit(DMA1_Channel1); 
  DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address; 
  DMA_InitStructure.DMA_MemoryBaseAddr =  (uint32_t)&ADC_RegularConvertedValueTab; 
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; 
  DMA_InitStructure.DMA_BufferSize = 16; 
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; 
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; 
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; 
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; 
  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; 
  DMA_InitStructure.DMA_Priority = DMA_Priority_High; 
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; 
  DMA_Init(DMA1_Channel1, &DMA_InitStructure); 
 
  /* Enable DMA1 channel1 */ 
  DMA_Cmd(DMA1_Channel1, ENABLE); 
 
  DMA_ITConfig(DMA1_Channel1,DMA_IT_TC, ENABLE);         
 
//  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); 
//  NVIC_InitStructure.NVIC_IRQChannel =DMA1_Channel1_IRQn;   
//  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; 
//  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  
//  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
//  NVIC_Init(&NVIC_InitStructure);  
 
} 
 
void Adc_gpio_init(void) 
{ 
         
        GPIO_InitTypeDef GPIO_InitStructure; 
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1        , ENABLE );          
 
         
                            
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; 
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;                 
        GPIO_Init(GPIOA, &GPIO_InitStructure);         
 
} 
 
void  DMA1_Channel1_IRQHandler(void) 
{ 
   if(DMA_GetITStatus(DMA1_IT_TC1)!=RESET) 
   { 
                            
                 DMA_ClearITPendingBit(DMA1_IT_TC1); 
         } 
} 
 
 |   
 
 
 
 
 
 |