PWM输入模式工作原理
输入的PWM信号从TIMx_CH1中进入,经过TIX,其中IC1和IC2都被映射到同一个TIX上,因此我们可以选择TI1FP1为上升沿触发,TI1FP2为下降沿触发。当信号第一次被上升沿触发时,从模式控制器选择复位模式,此时CNT=0,然后接收到下降沿信号时,产生中断,CNT的数被保存到捕获/比较寄存器2中,当再次接收到上升沿时,再次产生中断,将此时CNT的计数保存至捕获/比较寄存器1中。此时CCR1中的计数为整个周期的计数值,CCR2中的计数为PWM高电平计数值,通过计算即可得到时间。
输入模式时序图
本次实验所使用的PWM波为通用定时器所产生的。
一些关键性的HAL库函数
atim.h
句柄以及变量:
tim_pwm_ic_init();
Msp函数:
中断服务函数:
重新捕获函数以及回调函数:
main.c
实验现象通过示波器:
本实验其实还有一些问题以及我自己没考虑明白的事情:
1.为什么串口调试助手显示不了printf所打印的值;
2.为什么当PC6为输入口时,模式设置的是为复用推挽(我认为是input,但是原子哥设置的是复用推挽,我不理解);
3.虽然时序图上显示再次接受到高电平时,只会进行周期测量,为什么不会进行CNT置零呢?
4.在回调函数中,第二个+1具体是因为什么,视频中只是随便带了一嘴说是为了误差补偿。
希望有大神能帮忙解决一下,因为是自学,所以请教他人,所以有任何想法都可以评论或者私信我!谢谢大家!!