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

2019-08-14 02:11发布

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


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
Rainday
1楼-- · 2019-08-14 05:29
本帖最后由 Rainday 于 2017-9-8 17:56 编辑

捕获.PNG
输入脉冲波宽度是变化的,TIM5是输入捕获(一次捕获一个上升沿或者下降沿)计算时间t0,在下降沿到来时立即开启TIM3计时时间为t0/2,时间到则产生中断并开启TIM4输出单脉冲。程序在上面,测试结果是串口有正确的时间输出,示波器并没有单脉冲输出。请大家帮我看看出问题在哪里???

TIM5 PA0 输入捕获,TIM3定时器中断,TIM4 PB6 配置成单脉冲输出。
a3748622
2楼-- · 2019-08-14 05:37
Rainday 发表于 2017-9-8 19:32
仔细分析了下你说的,就是省略了单脉冲,直接由定时器计时到t/2,产生脉冲。我的程序里面,也是把t/2作为 ...

       中断用一个就够了,假设PWM捕获模式下,你TIM1 CCR1捕获上升沿,CCR2捕获下降沿。开启CCR2中断,那么当你捕获到下降沿后,产生中断。CCR2-CCR1就是t0,把t0/2赋值给TIM2的ccr。此时经过t0/2,TIM2就会切换电平。电平持续时间(单脉冲)就是TIM2的arr-ccr。
       这些都是2个TIM自动完成的,你要做的是配置好TIM1的arr、ccr,然后在TIM1的ccr2中断里给TIM2 ccr与arr赋值。最好两个定时器频率一致,计算起来就比较简单了。
Rainday
3楼-- · 2019-08-14 05:54
 精彩回答 2  元偷偷看……
a3748622
4楼-- · 2019-08-14 07:20
搞这么复杂干嘛。高级定时器有PWM捕获模式的,你去看看资料。比如用TIM1获得一个高电平的时间t0,然后将TIM1计数器值/2赋值给TIM2 ccr寄存器(它们的频率一致),然后TIM2就能在t0/2时间后触发电平转换,输出一个高电平(单脉冲),高电平时间可以通过配置ARR=CCR+X来配置,X就是单脉冲持续时间
Rainday
5楼-- · 2019-08-14 08:32
a3748622 发表于 2017-9-8 18:37
搞这么复杂干嘛。高级定时器有PWM捕获模式的,你去看看资料。比如用TIM1获得一个高电平的时间t0,然后将TIM ...

听起来,很不错。唉 一看到配置寄存器就够了,刚学 不怎么懂!还是谢谢你
Rainday
6楼-- · 2019-08-14 09:16
a3748622 发表于 2017-9-8 18:37
搞这么复杂干嘛。高级定时器有PWM捕获模式的,你去看看资料。比如用TIM1获得一个高电平的时间t0,然后将TIM ...

仔细分析了下你说的,就是省略了单脉冲,直接由定时器计时到t/2,产生脉冲。我的程序里面,也是把t/2作为你说的TIM2的定时时间,只是时间到后我加了个中断。你觉得呢

一周热门 更多>