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

目录

一、输入捕获初始化函数

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.hqwc.cn/news/478605.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Camunda快速入门(四):设计一个带网关的流程

接上一篇文章:Camunda快速入门(三):设计一个人工任务流程并配置表单 在本节中,您将学习如何使用 BPMN 2.0 排他网关(Exclusive Gateways)使流程更加动态。 1、添加两个网关 我们想修改我们的…

新版Java面试专题视频教程——框架篇

新版Java面试专题视频教程——框架篇 框架篇 01-框架篇介绍02-Spring-单例bean是线程安全的吗03-Spring-AOP相关面试题04-Spring-事务失效的场景05-Spring-bean的生命周期5.1 BeanDefinition 06-Spring-bean的循环依赖(循环引用)6.1 一般对象的循环依…

[AudioRecorder]iPhone苹果通话录音汉化破解版-使用巨魔安装-ios17绕道目前还不支持

首先你必须有巨魔才能使用!! 不会安装的,还没安装的移步这里,ios17 以上目前装不了,别看了:永久签名 | 网址分类目录 | 路灯iOS导航-苹果签名实用知识网址导航-各种iOS技巧-后厂村路灯 视频教程 【Audio…

重学Java 17.面向对象.5.方法参数和快速生成debug

不走心的努力,都是在敷衍自己 ——24.2.19 一、方法参数 1.基本数据类型 整型 byte short int long 浮点型 float double 字符型 char 布尔型 boolean 2.基本数据类型做方法参数传递 基本类型做方法参数传递&a…

消息队列-RabbitMQ:MQ作用分类、RabbitMQ核心概念及消息生产消费调试

1、MQ 的相关概念 1)什么是 MQ MQ (message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互…

[杂记]mmdetection3.x中的数据流与基本流程详解(数据集读取, 数据增强, 训练)

之前跑了一下mmdetection 3.x自带的一些算法, 但是具体的代码细节总是看了就忘, 所以想做一些笔记, 方便初学者参考. 其实比较不能忍的是, 官网的文档还是空的… 这次想写其中的数据流是如何运作的, 包括从读取数据集的样本与真值, 到数据增强, 再到模型的forward当中. 0. MMDe…

新增长100人研讨会:快消零售专场探讨招商加盟数字化转型实战

2024年2月2日下午,一场由纷享销客与杨国福集团联合主办的招商加盟数字化转型研讨会在上海成功举办。本次研讨会汇聚了众多快消零售业界的领军人物,共同探讨行业未来的新增长点。 会议伊始,杨国福集团数字化中心负责人王林林发表了主题演讲&a…

三防平板丨手持工业平板丨ONERugged工业三防平板丨推动数字化转型

随着科技的发展,数字化转型已经成为企业转型升级的必由之路。而在数字化转型中,三防平板作为一种重要的工具,可以极大地推动企业的数字化转型。本文将从以下几个方面探讨三防平板如何推动数字化转型。 一、提高工作效率 ONERugged加固平板的…

Android 11.0 mtp在锁屏模式和息屏时禁止访问mtp文件夹功能实现

1.前言 在11.0的系统rom产品定制化开发中,由于系统对于mtp模式访问文件夹没有限制,就是在锁屏息屏状态下也是可以访问文件夹的,由于产品的需要 要求在锁屏和息屏的情况下,禁止访问文件夹,就是需要实现如图效果 2.mtp在锁屏模式和息屏时禁止访问mtp文件夹功能实现的核心…

搜索算法(算法竞赛、蓝桥杯)--BFS八数码难题、抓住那头牛、魔板问题

1、B站视频链接&#xff1a;B14 BFS 八数码难题_哔哩哔哩_bilibili 题目链接&#xff1a;八数码难题 - 洛谷 #include <bits/stdc.h> using namespace std; char c; string str; unordered_map<string,int> d;//记录步数 queue<string> q; int dx[4]{-1,0,1…

使用【Python+Appium】实现自动化测试

一、环境准备 1.脚本语言&#xff1a;Python3.x IDE&#xff1a;安装Pycharm 2.安装Java JDK 、Android SDK 3.adb环境&#xff0c;path添加E:\Software\Android_SDK\platform-tools 4.安装Appium for windows&#xff0c;官网地址 Redirecting 点击下载按钮会到GitHub的…

深度学习发展的艺术

将人类直觉和相关数学见解结合后&#xff0c;经过大量研究试错后的结晶&#xff0c;产生了一些成功的深度学习模型。 深度学习模型的进展是理论研究与实践经验相结合的产物。科学家和工程师们借鉴了人类大脑神经元工作原理的基本直觉&#xff0c;并将这种生物学灵感转化为数学模…