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

本文介绍如何使用STM8库函数及中断通过TIM1捕获PWM的频率与占空比,包括初始化配置、启动与停止PWM捕获的具体代码,并提供了一个实际的中断处理程序示例。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

1. 前言

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

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

 

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

 

2. 实现代码

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

以下代码利用了 TIM1 的 PWM输入模式+复位触发模式 进行 PWM 采集

// tim1.c

/**
 * TIM1 PWM 输入初始化
 */
void TIM1_PWMI_Init()
{
    // 重置初始化
    TIM1_DeInit();

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

    // PWM的通道1配置
    // PWM的通道2无需配置,因为 TIM1_PWMIConfig(...) 内部已经进行了配置
    //
    // 参数说明:
    //  1. TIM1 通道1
    //  2. 极性:上升沿捕获
    //  3. 输入脚:TIM1_ICSELECTION_DIRECTTI 表示直接将 T1 信号经过 TI1FP1 发送给 IC1 模块进行处理
    //  4. 预分频:意思是控制在多少个输入周期做一次

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值