初级会员 
  
	- 积分
 - 108
 
        - 金钱
 - 108 
 
       - 注册时间
 - 2016-8-12
 
      - 在线时间
 - 40 小时
 
 
 
 | 
 
1金钱 
 参照着TIM3改的程序(且TIM3是正常工作的),但是改出的TIM5不正常,以下是修改的程序,麻烦大家帮我看看哪里不对了。 
 
int main(void) 
{  
        u32 oldcnt5; 
        uart_init(115200); 
        delay_init(84); 
        Encoder_Init(); 
        while(1) 
        { 
                delay_ms(10000); 
                if(oldcnt5!=TIM5->CNT)  
                 {  
                         oldcnt5=TIM5->CNT; 
                         printf("encoder5:%d\r\n",oldcnt5);  
                        TIM5->CNT=0;                          
                         printf("\r\n"); 
              } 
      } 
} 
 
void Encoder_Init(void) 
{ 
        GPIO_InitTypeDef         GPIO_InitStructure;  
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure; 
        TIM_ICInitTypeDef        TIM_ICInitStructure; 
         
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE); 
         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);  
         
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM5); 
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource1,GPIO_AF_TIM5); 
         
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; 
        GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF; 
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; 
        GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; 
        GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP ; 
        GPIO_Init(GPIOA,&GPIO_InitStructure);  
 
         
        TIM_TimeBaseStructure.TIM_Period = 60000;  
        TIM_TimeBaseStructure.TIM_Prescaler = 0;  
        TIM_TimeBaseStructure.TIM_ClockDivision = 0;  
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
        TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);  
         
 
        TIM_EncoderInterfaceConfig(TIM5, TIM_EncoderMode_TI12,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising); 
        TIM_ICStructInit(&TIM_ICInitStructure); 
        TIM_ICInitStructure.TIM_ICFilter = 6; 
        TIM_ICInit(TIM5, &TIM_ICInitStructure); 
        TIM_ClearFlag(TIM5, TIM_FLAG_Update);   
        TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE);  
        TIM5->CNT = 0; 
        TIM_Cmd(TIM5, ENABLE);  
} 
 
 |   
 
 
最佳答案
查看完整内容[请看2#楼] 
正确程序应该是这样的:
	GPIO_InitTypeDef GPIO_InitStructure;
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	TIM_OCInitTypeDef  TIM_OCInitStructure;	
	TIM_ICInitTypeDef        TIM_ICInitStructure;
// ENC2 init
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
	//GPIO_StructInit(&GPIO_InitStructure);
	/* Configure PA.06,07 as e ... 
 
 
 
 
 
 
 |