STM32 PWM输入模式采用DMA方式测量频率和占空比

本文介绍了如何使用STM32F030C8T6和STM32F0xx_HAL_Driver固件库,通过PWM输入模式配合DMA来稳定测量频率和占空比。传统中断方法由于中断频率过高导致数据不稳定,改用DMA能降低系统开销并提高数据准确性。详细步骤包括配置TIM、设置输入捕获通道、从模式配置、启动输入捕获DMA以及计算测量结果。
摘要由CSDN通过智能技术生成

测试平台: STM32F030C8T6

固件库: STM32F0xx_HAL_Driver

固件库中提供了一个通过PWM输入模式测量频率和占空比的Demo,采用定时器中断实现,测量频率时中断过于频繁,虽然可以通过设置多个待测信号周期产生一次定时器中断,来降低中断频率,但是这种方式测量出来的频率和占空比会出现跳动,数据不是很稳定。

改进方案:用PWM输入模式,将IC1和IC2的获取,由定时器中断方式,改为DMA方式。可以降低频繁中断引起的系统开销,同时测量的数据更稳定。

代码中使用的宏定义如下

#define TIMx                           TIM1
#define TIMx_CLK_ENABLE()              __HAL_RCC_TIM1_CLK_ENABLE()
#define DMAx_CLK_ENABLE                __HAL_RCC_DMA1_CLK_ENABLE

#define TIMx_CHANNEL_GPIO_PORT()       __HAL_RCC_GPIOA_CLK_ENABLE()
#define GPIO_PORT                      GPIOA
#define GPIO_PIN_CHANNEL2              GPIO_PIN_9
#define GPIO_AF_TIMx                   GPIO_AF2_TIM1

#define GPIO_PIN_CHANNEL1              GPIO_PIN_8

1. 配置并初始化TIM

TimHa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值