yiminglei 发表于 2013-12-26 21:15:13

STM8S103F3 无法运行 TIM2、TIM4,时钟已开但CNT不跑,求帮助

 rt

现象:用相同的方法配置TIM1、TIM2、TIM4,但TIM1正常,TIM2、TIM4完全不跑,找了很久资料毫无进展,求帮助,看有啥缺漏,谢谢!!!

固件库2.1.0
IAR stm8 1.41.1
使用st-link v2

void main(void)
{
        CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);

        /*
        串口初始化代码
        */

        /*TIM1初始化*/
        CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1,ENABLE);
        TIM1_DeInit();
        TIM1_SetCounter(0);
        TIM1_TimeBaseInit(15999,TIM1_COUNTERMODE_UP,100,0);

        /*TIM2初始化*/
        CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER2,ENABLE);
        TIM2_DeInit();
        TIM2_SetCounter(0);
        TIM2_TimeBaseInit(TIM2_PRESCALER_16384, 100);
        TIM2_PrescalerConfig(TIM2_PRESCALER_16384,TIM2_PSCRELOADMODE_UPDATE);

        /*TIM4初始化*/
        CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER4,ENABLE);
        TIM4_DeInit();
        TIM4_SetCounter(0);
        TIM4_TimeBaseInit(TIM4_PRESCALER_128, 100);
        TIM4_PrescalerConfig(TIM4_PRESCALER_128,TIM4_PSCRELOADMODE_UPDATE);

        /*使能定时器*/
        TIM1_Cmd(ENABLE);
        TIM2_Cmd(ENABLE);
        TIM4_Cmd(ENABLE);

        while(1)
        {
                /*打印当前CNT值*/
                printf("%x,%x,%x\r\n",TIM1_GetCounter(),TIM2_GetCounter(),TIM4_GetCounter());
        }
}

输出结果是把3个TIM的CNT打印出来,但只有TIM1在跑。
打印结果如下:
1,0,1
2,0,1
4,0,1
5,0,1
6,0,1
7,0,1
9,0,1
a,0,1
b,0,1
d,0,1
e,0,1
f,0,1

谢谢!

yiminglei 发表于 2013-12-26 22:29:14

回复:STM8S103F3 无法运行 TIM2、TIM4,时钟已开但CNT不跑,求帮助

终于好了,固件库有问题。
STM8S103F3的spec上描述TIM4的地址为0x005340,其后是两个保留字节。
而固件库上,TIM4的结构体中没有这两个保留字节,因此导致错位!
TIM2的问题也是同样处理。

yiminglei 发表于 2013-12-26 22:55:52

RE:STM8S103F3 无法运行 TIM2、TIM4,时钟已开但CNT不跑,求帮助

原来是固件库版本太低了,用4.0.0就好了。

有缘于你 发表于 2013-12-27 12:02:59

RE:STM8S103F3 无法运行 TIM2、TIM4,时钟已开但CNT不跑,求帮助

呵呵, 有新的固件库就得用更新的试试

wkuang 发表于 2013-12-27 23:02:29

RE:STM8S103F3 无法运行 TIM2、TIM4,时钟已开但CNT不跑,求帮助

寄存器使用错误导致。在使用stm库函数时,还是需要看看寄存器手册,寄存器手册才是最权威的,

勒布朗 发表于 2013-12-28 19:32:25

RE:STM8S103F3 无法运行 TIM2、TIM4,时钟已开但CNT不跑,求帮助

不是吧 库的版本低也会出现这问题

Hiker 发表于 2013-12-29 17:32:24

RE:STM8S103F3 无法运行 TIM2、TIM4,时钟已开但CNT不跑,求帮助

建议楼主还是查一下原因。 我用2.0的库都没有任何问题。固件库问题可能性太小了。
页: [1]
查看完整版本: STM8S103F3 无法运行 TIM2、TIM4,时钟已开但CNT不跑,求帮助