你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 6182|回复: 4

定时器输出比较问题

[复制链接]

1

主题

6

回帖

0

蝴蝶豆

新手上路

最后登录
2018-6-2
发表于 2010-5-28 15:14:34 | 显示全部楼层 |阅读模式
      我想用TIM4的输出比较模式来控制两路步进电机,将TIM4设置为输出比较模式,在比较中断中修改相应的比较值来输出两路脉冲信号,可是发现输出的脉冲信号会出现丢失的现象,如下图所示,我仔细分析了一下发现,脉冲丢失出现的地方t1=t2,也就是说两路比较中断接近于同时到来时就会出现这种情况,请问同一定时器的输出比较中断同时到来是处理器内部是如何处理?好像并没有这样对应的优先级设置,望高手指导
定时器3.JPG
定时器1.JPG
定时器2.JPG
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2010-5-28 16:34:36 | 显示全部楼层

RE:定时器输出比较问题

你是使用的循环采集吗?可能是没能及时的清楚电压值。
回复 支持 反对

使用道具 举报

1

主题

6

回帖

0

蝴蝶豆

新手上路

最后登录
2018-6-2
 楼主| 发表于 2010-6-1 10:53:20 | 显示全部楼层

RE:定时器输出比较问题

经我进一步的分析 发现问题的原因是这样的:
    当我使用库函数TIM_ClearITPendingBit(TIM4, TIM_IT_CC4)清零第4通道中断标志位时,第三通道的比较中断刚好到达,硬件上会置位第3通道的中断标志位,而这两个通道的中断标志位在同一个寄存器TIM4_SR中,这样造成了紊乱,清标志位的时候会把两个通道的中断标志位都清掉。
TIM_ClearITPendingBit(TIM4, TIM_IT_CC4)函数的具体实现如下:
TIMx->SR &= (u16)~TIM_IT;//这是其中的有效执行语句,TIM_SR是状态寄存器,这条语句执行前,TIMx->SR==0x19;TIM_IT ==0x10;
    然而执行完的结果却是 TIMx->SR==0x01,同时清掉了两位
   请高手帮忙分析,给出解决办法 跪求!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

1

主题

39

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2010-6-3 10:49:21 | 显示全部楼层

RE:定时器输出比较问题

TIMx->SR中的每一位,只有写"0"才能清除,写"1"不会被清除,所以不应该出现你说的问题。
请问,你是如何判断执行TIM_ClearITPendingBit之前和之后TIMx->SR的内容?最好能够在调用TIM_ClearITPendingBit之前读出TIMx->SR并保存在一个变量中,调用之后再读出TIMx->SR并保存在另一个变量中,这段过程中不要设置断点也不要单步调试,直接正常运行,然后再查看比较两个变量内容。
回复 支持 反对

使用道具 举报

1

主题

39

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2010-6-3 10:50:17 | 显示全部楼层

RE:定时器输出比较问题

其实你的问题最好不要使用中断的方式,用DMA的方式比较好。
回复 支持 反对

使用道具 举报

关于 意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版