打印

STM32进入捕获后定时器计数器与捕获值不相同啊?

[复制链接]
7143|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lwj006|  楼主 | 2011-7-19 11:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,今天做STM32的捕获,我是在捕获中断里面关闭计数器,而且清除定时器计数器值,用IAR调试窗口发现每次进入中断后,它的计数器的值总是比捕获值大30(定时器时钟源是PCLK=6MHz),这是为什么呢,我感觉是当捕获中断发生时,计数器把数值赋值给了捕获值,当进入中断时还得需要几个指令周期,此时计数器还在计数,就导致计数器每次都多计算一小段时间,这是我的感觉,但是在手册上没有找到进出中断需要的时钟周期,请大家帮忙,这种问题是是否我所说的那样,还有就是STm32进出中断的指令周期是多少?O(∩_∩)O谢谢
沙发
香水城| | 2011-7-19 11:37 | 只看该作者
从响应中断到开始执行中断的第一条指令,需要12个时钟周期。详细请参考Cortex-M3的手册。

使用特权

评论回复
板凳
香水城| | 2011-7-19 14:25 | 只看该作者
1)没有程序,看不出来。
2)产生中断的时刻,不一定就是中断响应的时刻。

使用特权

评论回复
地板
lwj006|  楼主 | 2011-7-19 14:50 | 只看该作者
4# 香水城
这是我写的程序:
  TIM2_SMCR |= 0<<TIM_SMS_BIT ;      //定时器内部时钟源使能
//捕获部分配置
  halGpioConfig(PORTA_PIN(0),GPIOCFG_IN);//PB6引脚设置为浮空输入,作为捕获输入引脚
  TIM2_CCMR1 |= 1<<TIM_CC1S_BIT;  //通道设为输入,并且映射到TI1上,只有通道关闭时
                                  //才能写TIM_CC1S(TIMx_CCER寄存器中TIM_CC1E=0)时  
  TIM2_CCMR1 |= 15<<TIM_IC1F_BIT; //输入滤波
  TIM2_CCER  &= ~TIM_CC1P;        //上升沿捕获,IC1不取反
// TIM2_CCMR1 |= 1<<TIM_IC1PSC_BIT;//每2个事件捕获一次
  
  TIM2_CR1 |= TIM_CEN;        //开启计数器
  INT_TIM2CFG |= INT_TIMCC1IF;//使能捕获中断
  INT_CFGSET |= INT_TIM2;     //使能定时器中断  
  TIM2_CCER |= TIM_CC1E;      //CC1捕获使能,使能从计数器到捕获寄存器的捕获
  INTERRUPTS_ON();            //开启全局中断
  INT_TIM2FLAG = 0xFFFF;      //清除中断标志位

void halTimer2Isr()//中断服务程序
{
  TIM2_CR1 &= ~TIM_CEN;            //关闭计数器
  INT_TIM2FLAG |= INT_TIMCC1IF;    //清除中断标志位
  INT_TIM2MISS |= INT_TIMMISSCC1IF;//清除中断错失标志位
  halToggleLed(LED_D3);            //LED翻转
  TIM2_CR1 |= TIM_CEN;             //开启计数器
  TIM2_CNT=0;                      //清除计数器  
}
我把断点设置在中断服务程序的第二行,进入中断后,需要一定的时间12个时钟周期,再加上这句TIM2_CR1 &= ~TIM_CEN; 是6个时钟周期,请香版主帮我看看,您说的第二种可能性也存在,但是如果是那样的话,计数器的值应该比捕获值大的数值不应该总是一个固定的数值吧,请香版主再帮我看看,谢谢!

使用特权

评论回复
5
香水城| | 2011-7-19 14:58 | 只看该作者
为什么要搞这么清楚?有什么实际项目吗?

使用特权

评论回复
6
香水城| | 2011-7-19 15:01 | 只看该作者
没有实际环境,我现在回答不了你,如果你的研究有什么线索,可以拿出来讨论。

使用特权

评论回复
7
lwj006|  楼主 | 2011-7-19 15:01 | 只看该作者
6# 香水城
就是学习,没有实际项目,我就是好奇,为什么它们不等,呵呵

使用特权

评论回复
8
sunshitao| | 2011-8-5 09:10 | 只看该作者
香版  我用cortexM0也遇到了同样的上述问题啊  求解

使用特权

评论回复
9
香水城| | 2011-8-5 09:47 | 只看该作者
香版  我用cortexM0也遇到了同样的上述问题啊  求解
sunshitao 发表于 2011-8-5 09:10


ST还没有Cortex-M0的产品。既然这种现象不只出现在ST的单片机种,我怀疑是JTAG调试或调试软件的问题。

使用特权

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

本版积分规则

0

主题

116

帖子

1

粉丝