单片机学习笔记之2——通过输入捕获实现对pwm波的测量
之前学校比赛的时候要求我们测量pwm波的频率和占空比,于是我就用了输入捕获来实现这一功能。 但是我在使用库函数写程序的时候不知道为什么每次捕获都只能捕获到一次上升沿和下降沿,无法捕获第二个上升沿。也就是只能捕获到一次高电平的时间而无法捕获到整个周期的时间,后来我在尝试使用寄存器编写的时候发现竟然完全没有出现这个问题,原因不明,推测是库函数在编写时加入了过多限制或者部分代码有问题。下面给出我的寄存器版本的初始化,调用结果的函数以及计时器中断服务函数。 //首先就是对于时钟和对应I/O口的初始化 //这部分如果需要换I/O口的话需要自己重新配置时钟和通道以及对应I/O口 //不过对着手册修改起来也不是很麻烦,只是要仔细一点不要漏掉什么就行了。 TIM_ICInitTypeDef TIM5_ICInitStructure; //定时器5通道1输入捕获配置 //arr:自动重装值(TIM2,TIM5是32位的!!) //psc:时钟预分频数 [...]