OpenEdv-开源电子网

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

关于使用外部计数模式进行脉冲计数CNT溢出的问题请教原子哥

[复制链接]

48

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
380
金钱
380
注册时间
2013-6-27
在线时间
17 小时
发表于 2014-8-8 11:37:37 | 显示全部楼层 |阅读模式
5金钱
修改http://www.openedv.com/posts/list/16962.htm中原子哥给的外部计数方式来计数脉冲。可以工作,有个问题想请教。
由于需要计数的脉冲频率是不定的,需要确定一定时间间隔内的频率,就用了TIM3来做5s定时。中断程序
void TIM3_IRQHandler(void)
{

    if(TIM3->SR &= 1<<0)
    {
         F = (TIM4->CNT-TEMP)/5;   //在5s的积分周期内的频率
        TEMP = TIM4->CNT;

        TIM3->SR = 0;
    }
}
由于CNT肯定会溢出,在溢出发生后的上面TIM3中断程序中就会出错一次。这个如何避免呢?
如果使用一个溢出中断,在中断程序中将TEMP清零,这就要知道,溢出的时间点,那样才会F的计算才会准确,这个如何解决呢?


最佳答案

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

你搞个全局变量,溢出了就全局变量加1,计算的时候,全局变量是多少,就乘以65536再加上CNT值,就准确了撒.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-8 11:37:38 | 显示全部楼层
你搞个全局变量,溢出了就全局变量加1,计算的时候,全局变量是多少,就乘以65536再加上CNT值,就准确了撒.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-4 02:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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