你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
定时器输出比较问题
[复制链接]
a215343595a-189
提问时间:2010-5-28 15:14 /
我想用TIM4的输出比较模式来控制两路步进电机,将TIM4设置为输出比较模式,在比较中断中修改相应的比较值来输出两路脉冲信号,可是发现输出的脉冲信号会出现丢失的现象,如下图所示,我仔细分析了一下发现,脉冲丢失出现的地方t1=t2,也就是说两路比较中断接近于同时到来时就会出现这种情况,请问同一定时器的输出比较中断同时到来是处理器内部是如何处理?好像并没有这样对应的优先级设置,望高手指导
赞
0
收藏
0
评论
4
分享
发布时间:2010-5-28 15:14
举报
请先
登录
后回复
4个回答
废鱼
回答时间:2010-5-28 16:34:36
a0a.1 0b0c
RE:定时器输出比较问题
你是使用的循环采集吗?可能是没能及时的清楚电压值。
赞
0
评论
回复
支持
反对
a215343595a-189
回答时间:2010-6-1 10:53:20
a0a.1 0b0c
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,同时清掉了两位
请高手帮忙分析,给出解决办法 跪求!!!!!!!!!!!!
赞
0
评论
回复
支持
反对
香水城
回答时间:2010-6-3 10:49:21
a0a.1 0b0c
RE:定时器输出比较问题
TIMx->SR中的每一位,只有写"0"才能清除,写"1"不会被清除,所以不应该出现你说的问题。
请问,你是如何判断执行TIM_ClearITPendingBit之前和之后TIMx->SR的内容?最好能够在调用TIM_ClearITPendingBit之前读出TIMx->SR并保存在一个变量中,调用之后再读出TIMx->SR并保存在另一个变量中,这段过程中不要设置断点也不要单步调试,直接正常运行,然后再查看比较两个变量内容。
赞
0
评论
回复
支持
反对
香水城
回答时间:2010-6-3 10:50:17
a0a.1 0b0c
RE:定时器输出比较问题
其实你的问题最好不要使用中断的方式,用DMA的方式比较好。
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
RE:定时器输出比较问题
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,同时清掉了两位
请高手帮忙分析,给出解决办法 跪求!!!!!!!!!!!!
RE:定时器输出比较问题
请问,你是如何判断执行TIM_ClearITPendingBit之前和之后TIMx->SR的内容?最好能够在调用TIM_ClearITPendingBit之前读出TIMx->SR并保存在一个变量中,调用之后再读出TIMx->SR并保存在另一个变量中,这段过程中不要设置断点也不要单步调试,直接正常运行,然后再查看比较两个变量内容。
RE:定时器输出比较问题