你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
yiminglei 提问时间:2013-12-26 21:15 /
 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

谢谢!
收藏 评论6 发布时间:2013-12-26 21:15

举报

6个回答
yiminglei 回答时间:2013-12-26 22:29:14

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

终于好了,固件库有问题。
STM8S103F3的spec上描述TIM4的地址为0x005340,其后是两个保留字节。
而固件库上,TIM4的结构体中没有这两个保留字节,因此导致错位!
TIM2的问题也是同样处理。
固件库.jpg
spec.jpg
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的库都没有任何问题。固件库问题可能性太小了。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版