你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
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:定时器输出比较问题