一、CubeMx的配置
(1)基础配置
(2)TIM配置
控制输入捕获的通道是PB4和PA15
用定时器来捕获这两个引脚的方波的周期值,捕获到了周期值就能算出它的频率
此时PB4和PA15是黄色,就说明这两个端口还没有配置好
因为它是32位的,所以重装载值可以写十万
但是TIM3是16位的,所以重装载值不能写十万,已经超出了它的最大量程
(3)LCD的文件植入
因为要用 LCD去显示我捕获到的东西,所以需要去使用LCD来显示。并且要注意包含LCD的头文件,还要写好LCD的初始化函数和清屏函数。
3.1 写#incldue "stdio.h"
3.2 定义一个数组
液晶屏默认显示的字体像素宽度是12,因而一行最多显示26个英文字符,所以数组长度取26个最合适
3.3 显示数据
二、代码
(1)输入捕获的函数
HAL_TIM_IC_Start_IT();相当于开启捕获这个通道
(2)捕获的回调函数
(3)获取捕获到的值
HAL_TIM_ReadCapturedValue();这个函数能读取出来捕获到的值
(4)定义一个变量,实现前后两次做差
上面那个 uint32_t pwm_period 这个变量因为是在后面的while循环里面的打印的程序会用到,所以我们要把它放在外面,不能用局部变量,不然后面识别不到
(5)把计算出来的值转换为频率
5.1 定义一个浮点数
5.2 转换
每计数一个1所用的时间:1/10 000 000
计数一个周期所用的时间:pwm_period / 1/10 000 000
计数一个周期所用的频率:10 000 000/ pwm_period
要记住用浮点数去除: 10 000 000.0/ pwm_period