STM32 TIM输入捕获测频率占空比库函数

news2025/1/17 3:56:48

目录

一、输入捕获初始化函数

TIM_ICInit

TIM_PWMIConfig

TIM_ICStructInit

二、主从触发模式对应函数

TIM_SelectInputTrigger

TIM_SelectOutputTrigger

TIM_SelectSlaveMode

三、配置分频器函数

TIM_SetIC1Prescaler

TIM_SetIC2Prescaler

TIM_SetIC3Prescaler

TIM_SetIC4Prescaler

四、读取CCR函数

TIM_GetCapture1

TIM_GetCapture2

TIM_GetCapture3

TIM_GetCapture4


一、输入捕获初始化函数

TIM_ICInit

结构体配置输入捕获单元函数

  • 第一个参数,选择定时器
  • 第二个参数,包含各个配置的结构体

        输入捕获和输出比较都有4个通道,函数TIM_OC1Init、TIM_OC2Init、TIM_OC3Init、TIM_OC4Init,4个通道每个通道单独占一个函数。而TIM_ICInit函数,4个通道共用一个函数。在结构体里会额外有一个参数,可以用来选择具体是配置哪个通道。因为可能有交叉通道的配置,所以函数合在一起比较方便。

代码示例:

	TIM_ICInitTypeDef TIM_ICInitStructure;
	TIM_ICInitStructure.TIM_Channel=TIM_Channel_2;//TIM_Channel选择通道
	TIM_ICInitStructure.TIM_ICFilter=0xF;//TIM_ICFilter用来配置输入捕获的滤波器
	TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Falling;//TIM_ICPolarity极性,
	TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICSelection_DirectTI;//TIM_ICPrescaler分频器
	TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_IndirectTI;//TIM_ICSelection配置数据选择器
	TIM_ICInit(TIM3,&TIM_ICInitStructure);

TIM_PWMIConfig

函数用于初始化输入捕获单元。

  • TIM_ICInit函数只能单一地配置一个通道。
  • TIM_PWM函数可以快速配置两个通道,把外设电路结构配置成PWMI基本结构图所展示的模式。

代码注释:

/**
  * @brief  Configures the TIM peripheral according to the specified
  *         parameters in the TIM_ICInitStruct to measure an external PWM signal.
  * @param  TIMx: where x can be  1, 2, 3, 4, 5, 8, 9, 12 or 15 to select the TIM peripheral.
  * @param  TIM_ICInitStruct: pointer to a TIM_ICInitTypeDef structure
  *         that contains the configuration information for the specified TIM peripheral.
  * @retval None
  */

代码示例:

TIM_ICInitTypeDef TIM_ICInitStructure;
TIM_ICInitStructure.TIM_Channel=TIM_Channel_1;//TIM_Channel选择通道
TIM_ICInitStructure.TIM_ICFilter=0xF;//TIM_ICFilter用来配置输入捕获的滤波器
TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;//TIM_ICPolarity极性
TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICSelection_DirectTI;//TIM_ICPrescaler分频器
TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;//TIM_ICSelection配置数据选择器
TIM_PWMIConfig(TIM3,&TIM_ICInitStructure);

TIM_ICStructInit

函数可以给输入捕获结构体赋一个初始值。

代码注释:

/**
  * @brief  Fills each TIM_ICInitStruct member with its default value.
  * @param  TIM_ICInitStruct: pointer to a TIM_ICInitTypeDef structure which will
  *         be initialized.
  * @retval None
  */
void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct)
{
  /* Set the default configuration */
  TIM_ICInitStruct->TIM_Channel = TIM_Channel_1;
  TIM_ICInitStruct->TIM_ICPolarity = TIM_ICPolarity_Rising;
  TIM_ICInitStruct->TIM_ICSelection = TIM_ICSelection_DirectTI;
  TIM_ICInitStruct->TIM_ICPrescaler = TIM_ICPSC_DIV1;
  TIM_ICInitStruct->TIM_ICFilter = 0x00;
}

二、主从触发模式对应函数

三个函数对应主从触发模式图中的三个部分。

TIM_SelectInputTrigger

        选择输入触发源TRGI,对应主从触发模式图中的从模式触发源选择,调用这个函数就能选择从模式的触发源了,如TI1FP1等。

代码示例:

	TIM_SelectInputTrigger(TIM3,TIM_TS_TI1FP1);

TIM_SelectOutputTrigger

选择输出触发源TRGO,对应主从触发模式图中的选择主模式输出的触发源。

 代码示例:

	TIM_SelectOutputTrigger(TIM3, TIM_TRGOSource_Update);

TIM_SelectSlaveMode

选择从模式,对应主从触发模式图中的从模式选择的部分。

 代码示例:

	TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset);

三、配置分频器函数

        以下四个函数分别单独配置通道1、2、3、4的分配器,其参数结构体里也可以配置,是一样的效果。

TIM_SetIC1Prescaler

TIM_SetIC2Prescaler

TIM_SetIC3Prescaler

TIM_SetIC4Prescaler

四、读取CCR函数

        TIM_GetCapture1、TIM_GetCapture2、TIM_GetCapture3、TIM_GetCapture4函数读取4个通道的CCR,这四个函数和TIM_SetIC1Prescaler、TIM_SetIC2Prescaler、TIM_SetIC3Prescaler、TIM_SetIC4Prescaler四个函数是对应的,读写的都是CCR寄存器。

  • 输出比较模式下,CCR是只写的,选择用TIM_SetCompare1、TIM_SetCompare2、TIM_SetCompare3、TIM_SetCompare4函数写入。

  • 输入捕获模式下,CCR是只读的,要选择用TIM_GetCapture1、TIM_GetCapture2、TIM_GetCapture3、TIM_GetCapture4函数读出。

TIM_GetCapture1

TIM_GetCapture2

TIM_GetCapture3

TIM_GetCapture4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1455818.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenAI视频生成模型Sora背后的技术及其深远的影响

前言 Sora的视频生成技术在保真度、长度、稳定性、一致性、分辨率和文字理解等方面都达到了当前最优水平。其核心技术包括使用视觉块编码将不同格式的视频统一编码成Transformer可训练的嵌入向量,以及类似于扩散过程的UNet方法进行降维和升维的加噪与去噪操作。通过…

IO 流分类

一、File File 类(磁盘操作)可以用于表示文件和目录的信息,但是它不表示文件的内容。递归地列出一个目录下所有文件: public static void listAllFiles(File dir) {if (dir null || !dir.exists()) {return;}if (dir.isFile())…

Java集合篇之深入解析LinkedList

写在开头 作为ArrayList的同门师兄弟,LinkedList的师门地位逊色不少,除了在做算法题的时候我们会用到它之外,在实际的开发工作中我们极少使用它,就连它的创造者都说:“I wrote it,and I never use it”&am…

MySQL之json数据操作

1 MySQL之JSON数据 总所周知,mysql5.7以上提供了一种新的字段格式json,大概是mysql想把非关系型和关系型数据库一口通吃,所以推出了这种非常好用的格式,这样,我们的很多基于mongoDB的业务都可以用mysql去实现了。当然…

Java 基于微信小程序的汽车4S店客户管理系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

C++类和对象-多态->案例1计算器类、案例2制作饮品、案例3电脑组装需求分析和电脑组装具体实现

#include<iostream> using namespace std; #include<string> //分别利用普通写法和多态技术实现计算器 //普通写法 class Calculator { public: int getResult(string oper) { if (oper "") { return m_Num1 m_Num2; …

引入成熟的Pytest自动化测试框架

虽然我们能使用脚本编写自动化测试框架&#xff0c;但没有必要重复找车轮子&#xff0c;引入成熟的自动化测试框架即可&#xff0c; Pytest是目前最成熟、功能最全面的Python测试框架之一&#xff0c;简单灵活、易于上手&#xff0c;可完全兼容其他测试框架如unitest&#xff…

普中51单片机学习(十)

动态数码管 数码管显示原理 动态显示的特点是将所有数码管的段选线并联在一起&#xff0c;由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选&#xff0c;利用发光管的余辉和人眼视觉暂留作用&#xf…

SSTI模板注入漏洞(vulhub 复现)

首先了解模板引擎&#xff1a; 模板引擎&#xff08;这里特指用于Web开发的模板引擎&#xff09;是为了使用户界面与业务数据&#xff08;内容&#xff09;分离而产生的&#xff0c;它可以生成特定格式的文档&#xff0c;利用模板引擎来生成前端的html代码&#xff0c;模板引擎…

OpenAI:Sora视频生成模型技术报告(中文)

概述 视频生成模型作为世界模拟器 我们探索视频数据生成模型的大规模训练。具体来说&#xff0c;我们在可变持续时间、分辨率和宽高比的视频和图像上联合训练文本条件扩散模型。我们利用transformer架构&#xff0c;在视频和图像潜在代码的时空补丁上运行。我们最大的模型Sor…

HCIA-HarmonyOS设备开发认证V2.0-IOT硬件子系统-UART

目录 一、UART 概述二、UART 模块相关API三、UART 接口调用实例四、UART HDF驱动开发4.1、开发步骤(待续...) 坚持就有收获 一、UART 概述 UART 是通用异步收发传输器&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;的缩写&#xff0c;是通用串行数据总…

Chrome浏览器安装Axure-Chrome-Extension插件

Chrome浏览器打开Axure生成的HTML静态文件页面时&#xff0c;会显示如下图AXURE RP EXTENSION FOR CHROME&#xff0c;这是因为Chrome浏览器没有安装Axure插件Axure-Chrome-Extension导致的。 解决方法&#xff1a; 插件下载地址&#xff1a;https://download.csdn.net/downlo…

CleanMyMacX需要付费吗?多少钱?有哪些新功能

CleanMyMac X是一个付费应用程序**&#xff0c;需要许可证或订阅来解锁所有功能。不过&#xff0c;CleanMyMac X提供免费试用版供您访问其有限的功能。在试用模式下&#xff0c;用户可以使用部分功能进行体验&#xff0c;但这并非完全免费&#xff0c;因为某些功能会受到限制。…

Android下SF合成流程重学习之GPU合成

Android下SF合成流程重学习之GPU合成 引言 SurfaceFlinger中的图层选择GPU合成(CLIENT合成方式)时&#xff0c;会把待合成的图层Layers通过renderengine(SkiaGLRenderEngine)绘制到一块GraphicBuffer中&#xff0c;然后把这块GraphicBuffer图形缓存通过调用setClientTarget传递…

代码随想录算法训练营 DAY20 | 二叉树(7)

一、LeetCode 530 二叉搜索树的最小绝对值 题目链接&#xff1a;530.二叉搜索树的最小绝对值https://leetcode.cn/problems/minimum-absolute-difference-in-bst/ 思路一&#xff1a;利用搜索二叉树的中序遍历结果为有序数组的性质&#xff0c;将遍历结果保存到数组中&#xf…

分析:香港2亿港元诈骗案的风险特征及技术检测思路

目录 深度伪造带来的新挑战 如何有效检测深度伪造&#xff1f; 多管齐下的安全策略 据香港公共广播公司报道&#xff0c;一家跨国公司香港分行的一名员工在一次电话会议后被骗支付了2亿港元&#xff08;超过2500万美元&#xff09;的资金。 据介绍&#xff0c;这起骗局始于202…

【深度优先搜索】【树】【有向图】【推荐】685. 冗余连接 II

LeetCode685. 冗余连接 II 在本问题中&#xff0c;有根树指满足以下条件的 有向 图。该树只有一个根节点&#xff0c;所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点&#xff0c;而根节点没有父节点。 输入一个有向图&#xff0c;该图由…

Python学习(16)|列表_遍历_排序_max_min_sum

列表的遍历&#xff1a; a [10,20,30,40] for obj in a: #obj 是临时变量名称&#xff0c;随意起名print(obj) 执行结果&#xff1a; 复制列表所有的元素到新列表对象&#xff1a; list1 [30,40,50] list2 list1 #只是将list2也指向了列表对象。也就是说list…

基于Python3的数据结构与算法 - 01 复杂度和列表查找

一、时间复杂度 定义&#xff1a;用来评估算法运行效率的一个式子。 例如&#xff1a;此处的O(1) 详单与一个时间单位 接下来我们看下面两个式子&#xff1a; 如果按照上面的定义&#xff0c;那么打印三次相当O(3)&#xff0c;下面的循环相当于O(n21) 但是实际不是这样的 因…

YOLO v5项目实战 P5 解决运行detect文件时设置了--view-img但是显示不出来的问题

up主讲的实时显示目标检测后的图片的两种方法&#xff1a; &#xff08;1&#xff09;在下面的Terminal中输入下列命令&#xff1a; python detect.py --view-img &#xff08;2&#xff09;点击进入右上方的detect的Edit Configurations 然后在这个参数这里输入 --view img…