leefine 发表于 2016-1-15 15:39:05

STM8S103K3的TIM1的1、2通道做正交编码器接口?

试了若干种方案,PC6 PC7接的。
   CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);

    CLK->PCKENR1 = 0xFF;

    //GPIO初始化
    GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_IN_FL_NO_IT);
    GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_IN_FL_NO_IT);

    TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP , 3000, 0);

    TIM1_EncoderInterfaceConfig(TIM1_ENCODERMODE_TI1, TIM1_ICPOLARITY_RISING, TIM1_ICPOLARITY_RISING);

    TIM1_ICInit(TIM1_CHANNEL_1, TIM1_ICPOLARITY_RISING, TIM1_ICSELECTION_DIRECTTI,TIM1_ICPSC_DIV1, 0);
    TIM1_ICInit(TIM1_CHANNEL_2, TIM1_ICPOLARITY_RISING, TIM1_ICSELECTION_DIRECTTI,TIM1_ICPSC_DIV1, 0);
       
    TIM1_ARRPreloadConfig(ENABLE);

    TIM1_Cmd(ENABLE);

TIM1->CNT没有任何反应?

xmshao 发表于 2016-1-16 15:34:03

我看手册上有怎么一句提醒:
Note: CC1S bits are writable only when the channel is off (CC1E = 0 in TIM1_CCER1).

我看TIM1_EncoderInterfaceConfig()函数似乎并没有遵守上面这条。我看他是先使能CCnE,然后
修改CCnS.

你调整下看看,或者直接寄存器来写这几句代码。

zcl201207 发表于 2016-1-16 20:33:31

楼主加油:):):):)

zhangdaijin 发表于 2016-1-17 19:07:29

:):):):):)看官方手册

leefine 发表于 2016-1-25 09:33:03

已经解决,确实读手册不够。

xmshao 发表于 2016-1-29 17:44:39

楼主主要是忽略了GPIO的复用重映射的OPTION项配置。
http://mp.weixin.qq.com/s?__biz=MzA3OTIxMjQyNQ==&mid=402036336&idx=1&sn=1debf96fb2ffc65886f3257c1577d1fa#rd 这里有详细解释。
页: [1]
查看完整版本: STM8S103K3的TIM1的1、2通道做正交编码器接口?