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

2019-07-14 18:11发布

rt

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

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

  1. void main(void)
  2. {
  3.         CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);


  4.         /*
  5.         串口初始化代码
  6.         */


  7.         /*TIM1初始化*/
  8.         CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1,ENABLE);
  9.         TIM1_DeInit();
  10.         TIM1_SetCounter(0);
  11.         TIM1_TimeBaseInit(15999,TIM1_COUNTERMODE_UP,100,0);


  12.         /*TIM2初始化*/
  13.         CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER2,ENABLE);
  14.         TIM2_DeInit();
  15.         TIM2_SetCounter(0);
  16.         TIM2_TimeBaseInit(TIM2_PRESCALER_16384, 100);
  17.         TIM2_PrescalerConfig(TIM2_PRESCALER_16384,TIM2_PSCRELOADMODE_UPDATE);


  18.         /*TIM4初始化*/
  19.         CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER4,ENABLE);
  20.         TIM4_DeInit();
  21.         TIM4_SetCounter(0);
  22.         TIM4_TimeBaseInit(TIM4_PRESCALER_128, 100);
  23.         TIM4_PrescalerConfig(TIM4_PRESCALER_128,TIM4_PSCRELOADMODE_UPDATE);


  24.         /*使能定时器*/
  25.         TIM1_Cmd(ENABLE);
  26.         TIM2_Cmd(ENABLE);
  27.         TIM4_Cmd(ENABLE);


  28.         while(1)
  29.         {
  30.                 /*打印当前CNT值*/
  31.                 printf("%x,%x,%x ",TIM1_GetCounter(),TIM2_GetCounter(),TIM4_GetCounter());
  32.         }
  33. }
复制代码
输出结果是把3个TIM的CNT打印出来,但只有TIM1在跑。
谢谢!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
iujwers
1楼-- · 2019-07-14 22:42
 精彩回答 2  元偷偷看……
iujwers
2楼-- · 2019-07-14 23:15
原来是固件库版本太低了,用4.0.0就好了。
Sabrina_cc
3楼-- · 2019-07-15 01:09
呵呵, 有新的固件库就得用更新的试试
东少2016
4楼-- · 2019-07-15 01:51
寄存器使用错误导致。  在使用stm库函数时,还是需要看看寄存器手册,寄存器手册才是最权威的,
045086068
5楼-- · 2019-07-15 06:11
不是吧 库的版本低也会出现这问题
60user115
6楼-- · 2019-07-15 07:59
 精彩回答 2  元偷偷看……

一周热门 更多>