蓝桥杯嵌入式省赛模板构建——定时器测量一路频率

编程思路:每次上升沿产生中断,获取CNT值,并清零CNT值,重新计时,CNT值就是一个PWM波的周期,通过周期可以获得其频率

例:第一次上升沿产生时计数值为50,清零并重新计数,经过下降沿后,第二个上升沿产生了,此时计数值为50,则周期为50us,频率 = 1/T,因为T的单位为s,所以f = (1/50)*1000000 = 200000hz

最好设置为1us走时一次

测量一路PWM频率

打开STM32CubeMX

将PA15设置为TIM2_CH1(定时器2通道1)

将定时器2的通道1设置为直接捕获模式

打开定时器2的NVIV中断

将分频系数配置成79,相当于频率 = 80Mhz / (79+1) = 1Mhz,周期 = 1/频率 = 1us相当于1us走时一次

1hz频率对应周期为1s

生成代码

将Cube生成的tim.c和.h文件拷贝到目标工程的bsp_tim.c和.h里并在main里声明.h文件与

TIM_Init()

使能TIM模块

在stm32g4xx_it.h中移植Cube里的TIM2的中断服务函数

开启TIM2_CH1的输入捕获中断

编写中断回调函数(需要背下来)


测量两路PWM频率

在CubeMX里打开PB4引脚的TIM3_CH1

设置通道1为直接捕获模式,预分频系数 = 79,ARR = 最大值(65535),并打开NVIC中断

将Cube生成的tim.c和.h文件拷贝到目标工程的bsp_tim.c和.h里并在main里声明.h文件与

TIM_Init()

按照TIM2_CH1的配置方法配置TIM3_CH1的各种初始化

打开定时器3中断输入捕获

编写定时器中断回调函数用于测量两路PWM波

将测得的两路PWM波打印在LCD屏幕上即完成

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值