OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5857|回复: 15

?求高手指教,STM8S207RBT6 的TIM2

[复制链接]

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2012-7-28
在线时间
24 小时
发表于 2015-5-28 16:00:13 | 显示全部楼层 |阅读模式
5金钱
TIM2定时器,设置时钟分频、计数周期,打开溢出中断,非常简单的程序
在STM8S207C6上完美运行,一直到同一系列的STM8S207RBT6上,却完全没反应了~~~
改用寄存器操作,依然没有反应。
求高手指教。

程序如下:
#pragma vector=0xF
__interrupt void TIM2_UPD_OVF_BRK_IRQHandler(void)
{
  /*------*/
  TIM2_SetCounter(0x0000);
  TIM2_ClearITPendingBit(TIM2_IT_UPDATE);
}

void TIM2_Init()
{

        TIM2_TimeBaseInit(TIM2_PRESCALER_16, 5000);
        TIM2_ITConfig(TIM2_IT_UPDATE , ENABLE);
        TIM2_Cmd(ENABLE);
        __enable_interrupt();
}

使用TIM2_GetCounter()函数读取计数器的值,结果一直是0。
根本没有开始计数啊。
系统时钟设置:
CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);
应该也没有问题啊?~~~?
高手指点!

最佳答案

查看完整内容[请看2#楼]

回复【14楼】烟酒不沾: --------------------------------- 最后我放弃TIM2了,改用TIM3,没有问题了。还是用库函数,只把TIM2改成TIM3就没问题了~~~很奇怪的说。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2012-7-28
在线时间
24 小时
 楼主| 发表于 2015-5-28 16:00:14 | 显示全部楼层
回复【14楼】烟酒不沾:
---------------------------------
最后我放弃TIM2了,改用TIM3,没有问题了。还是用库函数,只把TIM2改成TIM3就没问题了~~~很奇怪的说。
回复

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2012-7-28
在线时间
24 小时
 楼主| 发表于 2015-5-28 17:10:38 | 显示全部楼层
试着用寄存器直接操作。依然是这样的问题。不计数~~~
回复

使用道具 举报

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2014-5-13
在线时间
2 小时
发表于 2015-5-28 17:45:07 | 显示全部楼层
回复【2楼】sxdy99:
---------------------------------
寄存器的发上来我帮你看看
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2015-5-29 08:31:48 | 显示全部楼层
好像你的定时器2的中断向量#pragma vector=0xF有点不对吧?
回复

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2012-7-28
在线时间
24 小时
 楼主| 发表于 2015-5-29 08:48:13 | 显示全部楼层
回复【3楼】xuximeng:
---------------------------------
下面是直接寄存器操作的代码:

#pragma vector=0xF
__interrupt void TIM2_UPD_OVF_BRK_IRQHandler(void)
{
  /*------*/
  TIM2->CNTRH = 0x00;
  TIM2->CNTRL = 0x00;

  TIM2->SR1 &= 0xfe;
}

void TIM2_Init()

  TIM2->SCR = 0x04;//定时器时钟16分频
  TIM2->ARRH = 0x13;
  TIM2->ARRL = 0x88;//5000=0x1388

  TIM2->IER |= 0x01;//开溢出中断

  TIM2->CR1 |= 0x01;//使能定时器

  _rim_();
}
回复

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2012-7-28
在线时间
24 小时
 楼主| 发表于 2015-5-29 09:16:25 | 显示全部楼层
快要崩溃了。同样是STM8S系列的芯片,在其他片子上跑的好好的程序,怎么一到这个64脚的RB/R8片子上就不行了呢~
回复

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2012-7-28
在线时间
24 小时
 楼主| 发表于 2015-5-29 09:18:53 | 显示全部楼层
回复【4楼】烟酒不沾:
---------------------------------
中断向量一直是这么用的啊,其他的stm8s片子上没问题的
回复

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2012-7-28
在线时间
24 小时
 楼主| 发表于 2015-5-29 09:43:27 | 显示全部楼层
还是用库

换成TIM1竟然也没问题。

莫非这个片子里面没有TIM2?

#pragma vector=0xD
__interrupt void TIM1_UPD_OVF_TRG_BRK_IRQHandler(void)
{
  TIM1_SetCounter(0x0000);
  TIM1_ClearITPendingBit(TIM1_IT_UPDATE);
}

  TIM1_DeInit();
  TIM1_TimeBaseInit(16,TIM1_COUNTERMODE_UP,5000,0);
  TIM1_ITConfig(TIM1_IT_UPDATE , ENABLE);
  TIM1_Cmd(ENABLE);
  enableInterrupts();
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2015-5-29 10:41:54 | 显示全部楼层
定时器2溢出中断向量因该是13怎么会是OXF呢?

回复

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2012-7-28
在线时间
24 小时
 楼主| 发表于 2015-5-29 11:02:41 | 显示全部楼层
神奇了。TIM3也没问题~
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2015-5-29 11:18:55 | 显示全部楼层
回复【10楼】sxdy99:
---------------------------------
我用过stm8s207r8的定时器2,RB肯定是有定时器2的,现在看来有可能你程序中那里和这个定时器有关联了,你还是换块片子试试吧,也许是这个片子和你开玩笑,TIM2罢工了!
回复

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2012-7-28
在线时间
24 小时
 楼主| 发表于 2015-5-29 11:23:55 | 显示全部楼层
回复【9楼】烟酒不沾:
---------------------------------
这个中断向量还真是 0xf。没错的
回复

使用道具 举报

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2014-5-13
在线时间
2 小时
发表于 2015-5-30 08:56:06 | 显示全部楼层
回复【9楼】烟酒不沾:
---------------------------------
在IAR环境中,中断向量号是从复位中断计的,所以中断号+2了
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2015-5-30 09:05:19 | 显示全部楼层
回复【13楼】xuximeng:
---------------------------------
这样啊,我以前用IAR环境中断都是直接写在stm8s_it.c文件中封装好的对应中断入口函数中,楼主那问题你能分析出原因吗?是什么原因造成TIM2不工作的?
回复

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2012-7-28
在线时间
24 小时
 楼主| 发表于 2015-6-15 14:24:34 | 显示全部楼层
回复【13楼】xuximeng:
---------------------------------
正解!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 19:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表