打印
[STM8]

为什么我的定时器2不能工作?求解

[复制链接]
1764|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xxiao6130|  楼主 | 2013-8-28 20:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面是我配置的定时器2,大家看一下有没有错,定时为20us,使用的是查询法,谢谢帮忙啊!void Init_TIM2(void)
{
        CLK_CKDIVR= 0x00;
        TIM2_IER=0X00;
        TIM2_EGR=0X01;
        TIM2_PSCR=0X01;
        TIM2_ARRH=0x00;
        TIM2_ARRL=0xa0;
        TIM2_CNTRH=0x00;
        TIM2_CNTRL=0xa0;
        TIM2_CR1=0X01;
}

查询的函数为:void time(void)
{
        if(TIM2_SR1==1)
        {
                TIM2_SR1=0;
                tim2++;
        }
}
沙发
thebearontree| | 2013-8-28 21:55 | 只看该作者
用查询法可能用不到这句 TIM2_EGR=0X01;
新手勿喷

使用特权

评论回复
板凳
yuanquanquan| | 2013-8-28 22:30 | 只看该作者
没试过  不过感觉2楼是对的   我明天要去试一下   楼主调试好了 别忘了分享

使用特权

评论回复
地板
thebearontree| | 2013-8-28 23:16 | 只看该作者
不要用if判断定时标志,应该用while不停判断直到置1,用if判断一次就跳过了

使用特权

评论回复
5
乌月明星稀| | 2013-8-28 23:51 | 只看该作者
你查看一下,你那个TIM2_ARR是否真的送进去了。你应该先配置ARR,CNTR,PSCR后再配置TIM2_EGR!!!配置顺序有误。

使用特权

评论回复
6
乌月明星稀| | 2013-8-28 23:53 | 只看该作者
thebearontree 发表于 2013-8-28 23:16
不要用if判断定时标志,应该用while不停判断直到置1,用if判断一次就跳过了

他的这个问题跟这个没关系。只是会有时间误差。

使用特权

评论回复
7
乌月明星稀| | 2013-8-28 23:56 | 只看该作者
thebearontree 发表于 2013-8-28 21:55
用查询法可能用不到这句 TIM2_EGR=0X01;
新手勿喷

不管你是不是用查询法,配置TIM2_EGR是跟你TIM1_CR1的BIT7位有关。如果你ARR是带缓存的,那你必须在配置完ARR、PSCRS时用TIM1_EGR|=1;

使用特权

评论回复
8
1849097455| | 2013-8-29 09:10 | 只看该作者
昨天我试了,还真的是定时器没起作用!求解?

使用特权

评论回复
9
yuanquanquan| | 2013-8-29 10:11 | 只看该作者
楼主 今天一试 我找到原因了 其实很简单  只要把TIM2_SR1==1  改成 TIM2_SR1&&0x01==1 亲测 成功!

使用特权

评论回复
10
1849097455| | 2013-8-29 11:11 | 只看该作者
yuanquanquan 发表于 2013-8-29 10:11
楼主 今天一试 我找到原因了 其实很简单  只要把TIM2_SR1==1  改成 TIM2_SR1&&0x01==1 亲测 成功! ...

你是不是写错了TIM2_SR1&&0x01==1
应该是TIM2_SR1&0x01==1吧!

使用特权

评论回复
评论
xxiao6130 2013-8-30 14:44 回复TA
确实是这样的 
评分
参与人数 1威望 +3 收起 理由
xxiao6130 + 3 很给力!
11
yuanquanquan| | 2013-8-29 15:04 | 只看该作者
1849097455 发表于 2013-8-29 11:11
你是不是写错了TIM2_SR1&&0x01==1
应该是TIM2_SR1&0x01==1吧!

&和&&都可以  

使用特权

评论回复
12
xxiao6130|  楼主 | 2013-8-30 11:35 | 只看该作者
yuanquanquan 发表于 2013-8-29 15:04
&和&&都可以

&和&&是有区别的,而在这里可以是情况特殊。

使用特权

评论回复
13
xxiao6130|  楼主 | 2013-8-30 13:36 | 只看该作者
thebearontree 发表于 2013-8-28 21:55
用查询法可能用不到这句 TIM2_EGR=0X01;
新手勿喷

呵呵,这句是必要的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

676

帖子

2

粉丝