输入捕获、定时器中断、单脉冲整合过程的问题,求大神给点意见

2019-08-14 02:11发布

本帖最后由 Rainday 于 2017-9-8 18:01 编辑


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
Rainday
1楼-- · 2019-08-14 14:55
a3748622 发表于 2017-9-9 11:38
中断用一个就够了,假设PWM捕获模式下,你TIM1 CCR1捕获上升沿,CCR2捕获下降沿。开启CCR2中断, ...

只知道定时时间到会产生中断,中断也是只有你加上去了才有。不知道定时时间到会切换电平。我先看看资料
a3748622
2楼-- · 2019-08-14 19:48
 精彩回答 2  元偷偷看……
Rainday
3楼-- · 2019-08-14 23:46
本帖最后由 Rainday 于 2017-9-9 19:40 编辑
a3748622 发表于 2017-9-9 15:49
你说的没错。TIM本来就是计数到了可以产生中断。切换电平的意思就是输出PWM,如果你想要输出PWM就要配置 ...

不好意思,想再问你个问题!下图是判断出下降沿然后开启单脉冲,下降沿和单脉冲并不重合,频率加到100Hz延迟更厉害了。问题出在哪呢?用的正点原子的程序,判断下降沿代码为
QQ截图20170909193506.png
if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)
                {        
                        if(TIM5CH1_CAPTURE_STA&0X40)               
                        {
                                TIM4_Open();//单脉冲输出
                                TIM5CH1_CAPTURE_STA|=0X80;               
                                TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5);
                                TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising);
                        }else                                                                  
                        {
                                TIM5CH1_CAPTURE_STA=0;                        
                                TIM5CH1_CAPTURE_VAL=0;
                                 TIM_SetCounter(TIM5,0);
                                TIM5CH1_CAPTURE_STA|=0X40;               
                           TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling);        
                        }                    
                }                                                                                    
         }
是因为这段程序在中断里执行产生的延迟么???
Rainday
4楼-- · 2019-08-15 01:37
我在TIM5检测到下降沿就printf("0X00"),在TIM3中断里printf("0XFF")。串口输出结果为0XFF  0X00  0X00  0X00  0X00  0X00  0X00.....
上电立即进入TIM3中断,然后一直执行捕获中断。正常应该是先捕获中断再TIM3定时中断,请问这是怎么回事呢?
a3748622
5楼-- · 2019-08-15 03:40
Rainday 发表于 2017-9-11 09:20
我在TIM5检测到下降沿就printf("0X00"),在TIM3中断里printf("0XFF")。串口输出结果为0XFF  0X00  0X00  0X ...

TIM3中断的开启与关闭有没处理好?TIM5进入中断判断为下降沿后,开启TIM3并设定ARR CCR的值,然后计数达到ARR产生更新中断后,关闭TIM3。不关闭TIM3就一直输出单脉冲。还有ARR与CCR有没有溢出?
Rainday
6楼-- · 2019-08-15 07:31
a3748622 发表于 2017-9-11 09:50
TIM3中断的开启与关闭有没处理好?TIM5进入中断判断为下降沿后,开启TIM3并设定ARR CCR的值,然后计数达 ...

经过我的测试排查发现,问题出在TIM3。顺序是这样的,TIM5输入捕获时间为t0,把这个t0/2传递给TIM3,TIM3只是定时器中断,另外TIM3初始化是关闭的,我还特意写了个启动的函数。我把我的代码更新了一下

一周热门 更多>