野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 839|回复: 4

STM32 输入捕获PWM模式时序图有问题

[复制链接]
发表于 2024-5-31 08:39:15 | 显示全部楼层 |阅读模式
第一个上升沿会触发复位,导致CRR1和CRR2变成0。但是第二个上升沿也应该触发复位的呀,CRR1和CRR2的值不也应该是0么。   中断函数里也没有特殊处理,为什么第二个上升沿不触发呢
1717115643237.png
1717115776971.png
回复

使用道具 举报

 楼主| 发表于 2024-6-4 22:32:57 | 显示全部楼层
求大佬指点一下
回复 支持 反对

使用道具 举报

发表于 2024-6-5 09:14:29 | 显示全部楼层
1.第一个上升沿中断触发类似于初始化,硬件这个时候寄存器清零,并开始计时.第二个上升沿到来这个时候才是一个周期的PWM波形,所以寄存器会放入定时器的计数值.后续的上升沿都不会触发CCR1 CCR2寄存器清空.
实际上根据时序图你也可以看到,上升沿到来的时候CCR1 CCR2并不会清空,因为软件需要读取这两个寄存器的值来计算PWM的周期及占空比.
2.每次上升沿来的时候都会清空CNT寄存器,并将数据放入CCR1 每次下降沿会将CNT寄存器数据放入CCR2
回复 支持 反对

使用道具 举报

发表于 2024-6-5 09:15:45 | 显示全部楼层
Nalimca 发表于 2024-6-5 09:14
1.第一个上升沿中断触发类似于初始化,硬件这个时候寄存器清零,并开始计时.第二个上升沿到来这个时候才是一 ...

这些都是硬件实现的,也就是芯片本身就是如此设计,所以软件中断里不会有对应的操作
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-6-5 21:28:30 | 显示全部楼层
本帖最后由 都还只是孩子 于 2024-6-5 21:33 编辑
Nalimca 发表于 2024-6-5 09:14
1.第一个上升沿中断触发类似于初始化,硬件这个时候寄存器清零,并开始计时.第二个上升沿到来这个时候才是一 ...

谢谢大佬帮助我。那意思就是:后面的上升沿都是先进行捕获,把CNT的值放入CRR。然后再触发复位,CNT清零
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-22 13:43 , Processed in 0.113362 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表