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

定时器输出比较问题

[复制链接]
a215343595a-189 提问时间:2010-5-28 15:14 /
      我想用TIM4的输出比较模式来控制两路步进电机,将TIM4设置为输出比较模式,在比较中断中修改相应的比较值来输出两路脉冲信号,可是发现输出的脉冲信号会出现丢失的现象,如下图所示,我仔细分析了一下发现,脉冲丢失出现的地方t1=t2,也就是说两路比较中断接近于同时到来时就会出现这种情况,请问同一定时器的输出比较中断同时到来是处理器内部是如何处理?好像并没有这样对应的优先级设置,望高手指导
定时器3.JPG
定时器1.JPG
定时器2.JPG
收藏 评论4 发布时间:2010-5-28 15:14

举报

4个回答
废鱼 回答时间:2010-5-28 16:34:36

RE:定时器输出比较问题

你是使用的循环采集吗?可能是没能及时的清楚电压值。
a215343595a-189 回答时间: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,同时清掉了两位
   请高手帮忙分析,给出解决办法 跪求!!!!!!!!!!!!
香水城 回答时间:2010-6-3 10:49:21

RE:定时器输出比较问题

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

RE:定时器输出比较问题

其实你的问题最好不要使用中断的方式,用DMA的方式比较好。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版