【STM8】PWM 捕获实战:占空比和频率(TIM2)

本文介绍如何使用STM8的TIM2定时器通过库函数和中断方式捕获PWM信号的频率与占空比。文章提供了详细的代码示例,包括初始化配置、启动停止捕获过程及中断处理程序。

1. 前言

基于《【众拳STM8 40 讲】PWM 输入捕获原理与实验(频率)》我们已经了解了利用 STM8 库函数 如何捕获和计算 PWM 的频率,但是确没有介绍占空比的捕获方法。

基于《【思修STM8 39 讲】PWM 输入捕获之占空比测量(寄存器版)》我们了解了 PWM 捕获的详细流程步骤,但是其并非利用 STM8库函数 实现,同时也没有利用中断实现采集。

基于《【STM8】PWM 捕获实战:占空比和频率(TIM1)》我们了解了利用PWM输入模式和复位触发模式采集 PWM,但是并非所有定时器都具有复位触发模式

 

下面我们介绍利用 STM8库函数 和 中断 的方式来实现利用 TIM2 捕获 PWM 占空比和频率。

 

2. 实现代码

PWM 采集规定是:CH1 上升捕获,CH2 下降沿捕获

不同于 TIM1 的复位触发模式,TIM2 不具备复位触发模式,所以编码方式上还是有些不同

// tim2.c

u16 GV_Tim2PwmiFreq = 0;       //【系统使用】定时器捕获的 PWM 频率
double GV_Tim2PwmiDuty = 0.0;  //【系统使用】定时器捕获的 PWM 正占空比

/**
 * TIM2 PWM 输入初始化
 */
void TIM2_PWMI_Init()
{
    // 重置初始化
    TIM2_DeInit();

    // 初始化 TIME1 时基单元
    // 16预分频,向上计数,每 1s/1M = 1us 计数器值加 1(累加 1000 次需要 1 毫秒)
    // 参数说明:预分配值,自动重装载值(计数器值到 65536 后重新装载)
    TIM2_TimeBaseInit(TIM2_PRESCALER_16, 65536-1);

    // PWM的通道1配置
    //
    // 参数说明:
    //  1. TIM2 通道1
    //  2. 极性:上升沿捕获
    //  3. 输入
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值