OpenEdv-开源电子网

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

求助原子哥!!!定时器外部计数问题!

[复制链接]

12

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2012-3-28
在线时间
0 小时
发表于 2012-10-9 10:08:47 | 显示全部楼层 |阅读模式

我现在手上有一个1000分辨率编码器,有A、B、Z三路信号,转一圈A出1000脉冲,Z出一个脉冲,我利用定时器3的外部触发输入来计数A的脉冲数,利用Z作为外部中断0的输入,在中断内读取计数器的值,然后清零计数器。主程序主要就是显示这个脉冲数。程序如下:
extern u16 PulseNumber;  //主程序中用来显示脉冲数
//外部中断0服务程序
void EXTI0_IRQHandler(void)
{
      ulseNumber = TIM3->CNT;
      TIM3->CNT = 0;
      delay_ms(1);//????????????????????
      EXTI->R=1<<0;  //清除LINE0上的中断标志位 
}
现在的问题是,中断服务程序里需要加一个延时函数才行,否则那个脉冲数一直为0,到底为什么呢,求助大家给看一下,多谢!!!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2012-3-28
在线时间
0 小时
 楼主| 发表于 2012-10-9 13:38:23 | 显示全部楼层
回复【楼主位】guorenqing:
---------------------------------
问题解决了,进入中断后先关定时器,退出中断前再打开就可以了,不需要延时函数。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-10-9 23:16:47 | 显示全部楼层
谢谢分享经验。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-28 06:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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