OpenEdv-开源电子网

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

定时器如何清零从头计数?

[复制链接]

13

主题

185

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2014-4-9
在线时间
9 小时
发表于 2014-8-20 21:21:21 | 显示全部楼层 |阅读模式
5金钱
我移植论坛的例程成功开启TIM3并且用示波器测量IO确认周期设定是正确的,现在想在USART中断里面重置计数器,实现有USART接收中断时不产生定时中断,但不知道怎么实现计数器清零。好像设定后指示把周期重置了,但还是不断地进入定时器中断。(SELE0-SET RSR对应一个IO的反转用来测定时器周期)如果我用串口软件一直定时1ms发送数据过来应该sele0是个固定的电平不会反转。

void TIM3_IRQHandler(void)   //TIM3中断处理
{
     if (TIM_GetITStatus(TIM3, TIM_IT_Update) == SET) //是溢出中断?
    {
    TIM_ARRPreloadConfig(TIM3, DISABLE); //??
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update );  //清溢出标志位
         if(usart1cmdflag==0)
        {
            usart1cmdflag=1;
            SELE0_SET;
        }
        else
        {
            usart1cmdflag=0;
            SELE0_RST;
        }
     }
}

void USART1_IRQHandler(void)
{
    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//??????????????
    {
         TIM_Cmd(TIM3, DISABLE);  //先停计数器?
        //禁止ARR预装载缓冲器  
   
TIM_ARRPreloadConfig(TIM3, DISABLE); 
        USART_ClearITPendingBit(USART1, USART_IT_RXNE);//????????±ê??
        TIM3_SetPeriod(20);//设置周期20ms
        TIM_Cmd(TIM3, ENABLE);  //开启定时器
    }
}

我要在USART中断里面怎么设置TIM3 才能使有USART中断的时候TIM3不断清零重新计数?


最佳答案

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

定时器计数器清零? 直接一个    TIM_SetCounter(TIM3, 0);不就得了?
大海啊,全是水; 骏马啊,四条腿。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

342

帖子

0

精华

高级会员

Rank: 4

积分
544
金钱
544
注册时间
2014-4-24
在线时间
20 小时
发表于 2014-8-20 21:21:22 | 显示全部楼层
定时器计数器清零?
直接一个    TIM_SetCounter(TIM3, 0);不就得了?
回复

使用道具 举报

13

主题

185

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2014-4-9
在线时间
9 小时
 楼主| 发表于 2014-8-20 21:21:22 | 显示全部楼层
问题解决,用2楼兄弟指点的清零,取消USART中断里更改TIM周期就可以实现功能。
大海啊,全是水; 骏马啊,四条腿。
回复

使用道具 举报

13

主题

185

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2014-4-9
在线时间
9 小时
 楼主| 发表于 2014-8-20 21:22:22 | 显示全部楼层
确认usart中断周期比设置的定时器周期短。
大海啊,全是水; 骏马啊,四条腿。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-8-20 21:53:53 | 显示全部楼层
设置CNT的值为0就是了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

185

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2014-4-9
在线时间
9 小时
 楼主| 发表于 2014-8-20 21:53:57 | 显示全部楼层
回复【3楼】STM32VBT6:
---------------------------------
谢谢大侠,我也刚搜到这个,
在USART里面使能TIM3 ,再设TIM_SetCounter(TIM3,0);但还是实现不了我要的功能。不知道什么原因?
大海啊,全是水; 骏马啊,四条腿。
回复

使用道具 举报

13

主题

185

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2014-4-9
在线时间
9 小时
 楼主| 发表于 2014-8-20 21:55:43 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
理论上我不断进入usart中断把tim3的cnt清了应该就不会产生溢出中断了吧?但现在实现不了这个功能。
大海啊,全是水; 骏马啊,四条腿。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-8-20 21:59:18 | 显示全部楼层
回复【6楼】ArchiChain:
---------------------------------
理论上,只要你开启了定时器,CNT就会自动不停的增加....
直到溢出.
然后重新从0开始,继续增加.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

185

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2014-4-9
在线时间
9 小时
 楼主| 发表于 2014-8-20 22:07:53 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
如果我中途不断地清CNT应该不会产生溢出中断啊?
大海啊,全是水; 骏马啊,四条腿。
回复

使用道具 举报

13

主题

185

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2014-4-9
在线时间
9 小时
 楼主| 发表于 2014-8-20 22:43:36 | 显示全部楼层
再次谢谢 2楼STM32VBT6 兄弟和原子版。
大海啊,全是水; 骏马啊,四条腿。
回复

使用道具 举报

jjfunny 该用户已被删除
发表于 2017-1-8 22:05:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

jjfunny 该用户已被删除
发表于 2017-1-8 22:12:55 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-29 05:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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