六、6 TIM输入捕获测频率代码和PWMI(测周法)

目录

接线图

1、控制PWM频率

2、步骤

3、函数介绍

4、输入捕获测频率代码

5、PWMI模式测频率和占空比

6、注意


接线图

1、控制PWM频率

PWM.c文件中,由于PWM的频率是在初始里写好的,运行的时候调节不方便,可在最后加一个函数,用来便捷地调节PWM频率

若调节ARR,会影响占空比,因此可调节PSC来控制PWM频率

2、步骤

(1)RCC开启时钟,把GPIO和TIM的时钟打开

(2)GPIO初始化,把GPIO配置成输入模式(一般选择上拉输入或浮空输入模式)

(3)配置时基单元,让CNT计数器在内部时钟的驱动下自增运行(与之前代码一样)

(4)配置输入捕获单元(包括滤波器、极性、直连通道还是交叉通道、分频器),用一个结构体就可以统一进行配置

(5)选择从模式的触发源(触发源选择TI1FP1,调一个库函数,给一个参数就行)

(6)选择触发之后执行的操作(执行Reset操作,需调用一个库函数)

(7)调用TIM_Cmd,开启时钟

需要读取最新一个周期的频率时,直接读取CCR寄存器,然后按照 fc/N 计算一下就行

3、函数介绍

4、输入捕获测频率代码

(1)RCC开启时钟,把GPIO和TIM的时钟打开

(2)GPIO初始化,把GPIO配置成输入模式(一般选择上拉输入或浮空输入模式)

(3)配置时基单元,让CNT计数器在内部时钟的驱动下自增运行(与之前代码一样)

(4)初始化输入捕获单元

(5)配置TRGI的触发源为TI1FP1

(6)配置从模式为Reset

(7)写读取CCR并计算频率的函数

fc = 72M / (PSC+1)= 72M / 72 = 1M

N为读取的CCR的值

5、PWMI模式测频率和占空比

(1)基于上面的代码所做更改

方法一,复制一份,进行修改参数

方法二,调用下列参数,与上一方法等效(只支持通道1和通道2的配置)

(2)增加获取占空比的参数

CCR2 / CCR1 所得范围为0~1,乘个100,范围为0~100,可更直观反应占空比

6、注意

所测频率下限:

若给的标准频率【72M / (PSC+1)】为1MHz,计数器最大只能计到65535(ARR=65536-1),则所测量最低频率为1MHz / 65535,约为15Hz,若信号频率再低,计数器就将溢出(ARR不能再增加)(认为PSC不变时)。

若要降低最低频率的限制,可将预分频(PSC)加大

所测频率上限为标准频率,这里为1MHz,再大的话误差就会很大。若要提高上限,可将PSC降低来提高标准频率的值,若频率再高,可考虑测频法。

由图可知,ARR、CNT、CCR最大值相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值