小蚂蚁快溜跑 发表于 2015-7-30 10:23:30

54chenjq 发表于 2015-7-29 21:00
我也在研究,哈哈

多多指教~~

小蚂蚁快溜跑 发表于 2015-7-30 11:04:12

yanhaijian 发表于 2015-7-30 08:34
void TIM3_IRQHandler(void)
{
    /* Clear the interrupt pending flag */   


ENCODER_TIMER是tim3吗?
Encoder是全局变量?
非常的感谢

yanhaijian 发表于 2015-7-30 11:57:53

小蚂蚁快溜跑 发表于 2015-7-30 11:04
ENCODER_TIMER是tim3吗?
Encoder是全局变量?
非常的感谢

你说的是对的。

小蚂蚁快溜跑 发表于 2015-7-30 12:35:21

yanhaijian 发表于 2015-7-30 11:57
你说的是对的。

读出来的数没有任何变化,一直是0{:3_50:}

yanhaijian 发表于 2015-7-30 16:42:01

小蚂蚁快溜跑 发表于 2015-7-30 12:35
读出来的数没有任何变化,一直是0

前面还要初始化相关引脚,使能相关外设时钟。我以为你应该知道的。

小蚂蚁快溜跑 发表于 2015-7-30 16:50:20

yanhaijian 发表于 2015-7-30 16:42
前面还要初始化相关引脚,使能相关外设时钟。我以为你应该知道的。

void Tim3_init(void)
{

       
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
        TIM_ICInitTypeDef TIM_ICInitStructure;
       
      RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
        //TIM3
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_2);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_2);
        //TIM2 CH2,CH3,CH4
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;       
        GPIO_Init(GPIOA,&GPIO_InitStructure);       

        TIM_DeInit(TIM3);
        TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);

        TIM_TimeBaseStructure.TIM_Prescaler = 0x0;
        TIM_TimeBaseStructure.TIM_Period = 65535 - 1;
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

        TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI1,TIM_ICPolarity_Falling, TIM_ICPolarity_Falling);
       
        TIM_ICStructInit(&TIM_ICInitStructure);
        TIM_ICInitStructure.TIM_ICFilter = 15;
        TIM_ICInit(TIM3, &TIM_ICInitStructure);
        TIM_ClearFlag(TIM3, TIM_FLAG_Update);
        TIM_ITConfig(TIM3, TIM_IT_Update, DISABLE);

        TIM3->SR = 0xfffe;
        TIM_Cmd(TIM3, ENABLE);
}
这样吗?没有任何反应

yanhaijian 发表于 2015-7-31 08:18:54

小蚂蚁快溜跑 发表于 2015-7-30 16:50
void Tim3_init(void)
{



你GPIOA外设时钟使能了吗?你TIMER3中断初始化了吗?

JackieLaura 发表于 2015-7-31 10:26:55

之前公司一个项目用过正交编码器来精确控制伺服电机,代码是寄存器写的,可惜代码不知道放哪里去了。
主要还是初始化配置的问题,中断处理比较简单,就是计数了。

小蚂蚁快溜跑 发表于 2015-7-31 17:01:12

yanhaijian 发表于 2015-7-31 08:18
你GPIOA外设时钟使能了吗?你TIMER3中断初始化了吗?

GPIOA的时钟使能了,TIM3的中断初始化是说中断优先级的初始化吗/

你好我好大家好! 发表于 2015-7-31 17:14:42

查看手册就好了
页: 1 [2] 3
查看完整版本: 关于stm32f334的正交编码