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. 输入

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

被折叠的 条评论
为什么被折叠?



