当前位置: 首页 > news >正文

STM32标准库学习笔记-6.定时器-输入捕获

参考教程:【STM32入门教程-2023版 细致讲解 中文字幕】

定时器输入捕获

  • IC(Input Capture)输入捕获
  • 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数
  • 每个高级定时器和通用定时器都拥有4个输入捕获通道
  • 可配置为PWMI模式,同时测量频率和占空比
  • 可配合主从触发模式,实现硬件全自动测量
频率测量
  •         测频法:在闸门时间T内,对上升沿计次,得到N,则频率f_x=N / T
  •         测周法:两个上升沿内,以标准频率fc计次,得到N ,则频率f_x=f_c / N
  •         中界频率:测频法与测周法误差相等的频率点f_m=√f_c / T
输入捕获通道

主模式和从模式触发

输入捕获基本结构

PWMI基本结构

        由于只有TI1FP1TI2FP2连到了从模式控制器,所以PWM输入模式只能使用TIMx_CH1

/TIMx_CH2信号。

代码实例
#include "stm32f10x.h"                  // Device headervoid IC_Init(void)
{//使能TIM3系统时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//TIM3时基单元初始化,用于捕获TIM2产生的PWM波TIM_TimeBaseInitTypeDef TIM3_TimeBaseInitStruct;TIM3_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;TIM3_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;TIM3_TimeBaseInitStruct.TIM_Period = 65536 - 1; TIM3_TimeBaseInitStruct.TIM_Prescaler = 36 - 1;TIM3_TimeBaseInitStruct.TIM_RepetitionCounter = 0x00;TIM_TimeBaseInit(TIM3,&TIM3_TimeBaseInitStruct);TIM_InternalClockConfig(TIM3);//输入捕获初始化TIM_ICInitTypeDef TIM3_ICInitStructure;TIM3_ICInitStructure.TIM_Channel = TIM_Channel_1;TIM3_ICInitStructure.TIM_ICFilter = 0xF;TIM3_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;TIM3_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;TIM3_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;    //直连输入TIM_ICInit(TIM3,&TIM3_ICInitStructure);//根据TIM3_ICInitStructure配置为PWMI模式(也就是增加选择器的另一路,设置极性和非直连输入)TIM_PWMIConfig(TIM3,&TIM3_ICInitStructure);//设置输入触发源TIM_SelectInputTrigger(TIM3,TIM_TS_TI1FP1);//设置从模式TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset);TIM_Cmd(TIM3,ENABLE);
}//@param Freqc:fc频率表示TIM3计数器频率
uint32_t IC_GetFreq(uint32_t Freqc)
{return (uint32_t)(Freqc/TIM_GetCapture1(TIM3));
}//获取占空比,为百分比
uint8_t IC_GetDuty(void)
{return (uint8_t)(100*TIM_GetCapture2(TIM3)/TIM_GetCapture1(TIM3));
}

http://www.lryc.cn/news/426818.html

相关文章:

  • vue前端可以完整的显示编辑子级部门,用户管理可以为用户分配角色和部门?
  • 量化交易的基石:ExchangeSdk
  • 【区块链+金融服务】基于区块链的一站式绿色金融开放平台 | FISCO BCOS应用案例
  • 使用Python实现深度学习模型:智能娱乐与虚拟现实技术
  • 亚马逊云科技产 Amazon Neptune 图数据库服务体验
  • 【网络安全】重置密码token泄露,实现账户接管
  • 计算机基础知识复习8.13
  • Unity URP无光照下Shadow 制作 <二> 合批处理
  • 微乐校园pf
  • 文件其他相关函数
  • SQLALchemy ORM 的关联关系之 ORM 中的多对多
  • sdkman install慢,采用squid代理
  • 实时监控Windows服务器:使用Prometheus和Grafana的终极方案
  • 【文科生能看懂的】牛顿二项式定理
  • Fly Catcher:通过监测恶意信号来检测飞机欺骗
  • 计算机网络——HTTP协议详解(上)
  • 十九、中介者模式
  • 编程参考 - 头文件中使用static inline
  • Uniapp使用antd组件库
  • 计算机毕业设计选题推荐-高校实验室管理系统-Java/Python项目实战
  • nest定义响应码message文本
  • Java | Leetcode Java题解之第342题4的幂
  • 【日常开发】java中一个list对象集合 将字段a为 大豆 小麦 玉米等元素放在最前面 并组成新集合
  • C++ 设计模式——原型模式
  • 【Harmony OS 4.0】待办列表案例
  • 快速把文件名统计到excel表的方法
  • 开源通用验证码识别OCR —— DdddOcr 源码赏析(一)
  • 上升ECMAScript性能优化技巧与陷阱(下)
  • 用7EPhone云手机进行TikTok的矩阵运营
  • 谷歌浏览器下载文件被阻止怎么解除