STM32 定时器输入捕获1——初始化配置

        当想检测高电平或低电平的持续时间的时候,就可以使用定时器输入捕获。例如示波器就是用到这个功能。这里就讲解一下定时器到底是如何输入捕获的:

        

        由上图我们可以知道,周期 是每次连续的上升沿的时间差(例如:T=第二个方波的上升沿时间-第一个方波的上升沿时间),高电平时间 是每次连续的上升沿和下降沿的时间差(例如:T高电平=第一个方波的下降沿-第一个方波的上升沿)。

        (基本定时器是不具备输入捕获的,通用/高级定时器具备输入捕获)

        如何实现输入捕获?

        这里选择TIM2_CH2和TIM3_CH1作为讲解示例。先让TIM2_CH2产生PWM脉冲传输到TIM3_CH1(说直白点就是,一个引脚输出PWM脉冲信号然后拿杜邦线插到另一个引脚上面),然后用TIM3_CH1检查一下PWM脉冲有没有问题。

        STM32F103C8T6中,PA6:TIM3_CH1,PA7:TIM3_CH2,PB0:TIM3_CH3,PB1:TIM3_CH4。让PA6当做输入捕获。

void TIM3_InputCaputure_Configuration(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);

	TIM_TimeBaseStructure.TIM_Period = 19999;
	TIM_TimeBaseStructure.TIM_Prescaler = 71;
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
	
}

        从上面代码可以看出,频率为1us,周期为20ms。所以我们的计算上限为20ms,如果超过则会进入溢出中断。但是也可以这样用,每溢出一次进入溢出中断,溢出中断计数,如果溢出中断计数为10,则时间为10*20ms=200ms。

        正常情况下,我们大多使用在一次周期之内完成计数,而不去频繁进入溢出中断。所以我们把预分配直接拉满:

TIM_TimeBaseStructure.TIM_Period = 0xFFFF;

TIM_ICInit:指定的参数初始化外设TIMx。

参数一:TIMx,例如TIM2,TIM3。

参数二:指向结构体TIM_ICInitTypeDef的指针。

TIM_ICInitTypeDef structure
TIM_ICInitTypeDef 定义于文件“stm32f10x_tim.h”:
typedef struct 
    { 
        u16 TIM_Channel; 
        u16 TIM_ICPolarity; 
        u16 TIM_ICSelection; 
        u16 TIM_ICPrescaler; 
        u16 TIM_ICFilter; 
    } TIM_ICInitTypeDef;

TIM_Channel:选择通道。

TIM_Channel描述
TIM_Channel_1使用TIM通道1
TIM_Channel_2使用TIM通道2
TIM_Channel_3使用TIM通道3
TIM_Channel_4使用TIM通道4

TIM_ICPolarity:输入活动沿。

TIM_ICPolarity描述
TIM_ICPolarityTIM输入捕获上升沿
TIM_ICPolarityTIM输入捕获下降沿

TIM_ICSelection:选择输入。

TIM_ICSelection描述
TIM_ICSelection_DirectTI
TIM 输入 2 3 4 选择对应地与 IC1 IC2
IC3 IC4 相连
TIM_ICSelection_IndirectTI
TIM 输入 2 3 4 选择对应地与 IC2 IC1
IC4 IC3 相连
TIM_ICSelection_TRC
TIM 输入 2 3 4 选择与 TRC 相连

TIM_ICPrescaler:设置输入捕获预分频器。

TIM_ICPrescaler描述
TIM_ICPSC_DIV1TIM捕获在捕获输入上每探测到一个边沿执行一次
TIM_ICPSC_DIV2TIM捕获每2个事件执行一次
TIM_ICPSC_DIV3TIM捕获每3个事件执行一次
TIM_ICPSC_DIV4TIM捕获每4个事件执行一次

TIM_ICFilter:选择输入比较滤波器。该参数值在0x0和0xF之间。

PA6的全部初始化:

void TIM3_InputCaputure_Configuration(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
	TIM_ICInitTypeDef TIM_ICInitStructure;
	NVIC_InitTypeDef NVIC_InitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);

	TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
	TIM_TimeBaseStructure.TIM_Prescaler = 71;
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
	
	TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
	TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
	TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
	TIM_ICInitStructure.TIM_ICFilter = 0x0;
	TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
	TIM_ICInit(TIM3,&TIM_ICInitStructure);
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);	
	NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Init(&NVIC_InitStructure);
	
	TIM_ClearFlag(TIM3, TIM_FLAG_CC1);
	TIM_ITConfig(TIM3, TIM_FLAG_CC1, ENABLE);
	TIM_Cmd(TIM3,ENABLE);
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI赋能建筑设计 | VERYCLOUD睿鸿股份与亚马逊云科技协力为AIRI lab. 打造生成式AI应用案例

近年来,很多研究都致力于探索如何让建筑师借助人工智能的力量来促进并简化设计流程。生成式AI全球爆火以来,建筑设计领域也掀起了一场全新的思维变革。 AI为建筑设计带来更多可能 作为一家面向全球提供设计服务的企业,AIRI lab.计划推出一种…

SIP-2401VP SIP音频广播模块SIP-2401VP SIP号角音柱音箱解码poe广播播放核心板

SV-2401VP和SV-2403VP网络音频模块是一款通用的独立SIP音频功能模块,可以轻松地嵌入到OEM产品中。该模块对来自网络的SIP协议及RTP音频流进行编解码。 该模块支持多种网络协议和音频编解码协议,可用于VoIP和IP寻呼以及高质量音乐流媒体播放等应用。同时…

QT 小组件 列表框以及微调框

.cpp文件 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);QListWidgetItem *pPhone new QListWidgetItem;pPhone->setText("西瓜");pPhone->…

什么是云服务器,阿里云优势如何?

阿里云服务器ECS英文全程Elastic Compute Service,云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务,阿里云提供多种云服务器ECS实例规格,如经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等,阿里云百科aliyunbai…

数据结构 模拟实现Queue队列(双链表模拟)

目录 一、队列的概念 二、队列的接口 三、队列的方法实现 (1)offer方法 (2)poll方法 (3)peek方法 (4)size方法 (5)isEmpty方法 四、最终代码 一、队…

行为型设计模式——状态模式

状态模式 状态模式是比较简单的设计模式,它的主要作用是减少代码中大量的 if-else 或者 switch-case 等逻辑判断(俗称屎山)。它将每个状态定义为一个类,而每个状态类有自己对应的方法,因此当需要根据状态执行逻辑代码…

从零开始搭建一个个人博客并部署发布

1、为什么要自己搭建一个个人博客呢 首先,市场上主流的个人博客有CSDN、掘金、博客园等博客平台,这些平台方便了用户创作、记录的同时,也存在一些弊端,比如某些平台可能你的文章阅读量过高的话,会强制收费等问题已经是…

基于ssm快餐店点餐结算系统的设计与实现+vue论文

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装快餐店点餐结算系统软件来发挥其高效地信息处理的作用&…

Kubernetes (十) 存储——Configmap配置管理

一.Configmap作用 实验环境:清除之前的ns pod svc networkpolicy...... kubectl delete -f networkpolicy.yaml kubectl delete svc myapp-v1 kub…

2024年腾讯云新用户专属优惠活动及代金券活动汇总

腾讯云作为国内领先的云计算服务提供商,一直致力于为用户提供优质、高效的服务。为了更好地满足新用户的需求,腾讯云在2024年推出了一系列新用户专属优惠活动和代金券活动。本文将为大家详细介绍这些活动,帮助大家更好地了解和利用这些优惠。…

CCF模拟题 202309-2 坐标变换(其二)

问题描述 试题编号: 202309-2 试题名称: 坐标变换(其二) 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 对于平面直角坐标系上的坐标 (x,y),小 P 定义了如下两…

vue3dLoader Cannot read properties of null (reading ‘setCrossOrigin‘)“这个报错怎么解决?

默认情况下crossOrigin默认值是“anonymous” 如果出现报错的情况 请设置crossOrigin为空字符串即可。如&#xff1a; <vue3dLoader crossOrigin""> 相关阅读 推荐&#xff1a;vue-3d-loader支持.dae/.fbx/.gltf/.glb/.obj/.ply/.stl/.json&#xff0c;并支…

端侧AI的“春风化雨手”,翻开中国科技下一页

大模型是一年多来全球科技圈的最大热点&#xff0c;手机厂商想要借助大模型的锋芒&#xff0c;打造高端形象&#xff0c;获得新的增长&#xff0c;这无可厚非。 不过&#xff0c;大家注意到没有&#xff0c;越是“AI强者”&#xff0c;对待大模型越举重若轻。 简单来说&#xf…

比尔盖茨:如果只能解决一个问题,我的答案总是营养不良

谷禾健康 当地时间12月19日&#xff0c;微软联合创始人、亿万富翁比尔盖茨发布了对来年的年度预测&#xff0c;称 2024 年将是一个“转折点”。 在这封长达 10 页的信中他展示了对人工智能领域的更多创新、婴儿营养不良问题的突破、气候变化谈判的进展等多方面的期待。 人工智能…

C++(9)——内存管理

1. 内存分类&#xff1a; 在前面的文章中&#xff0c;通常会涉及到几个名词&#xff0c;例如&#xff1a;栈、堆。这两个词所代表的便是计算机内存的一部分 。在计算机中&#xff0c;对系统的内存按照不同的使用需求进行了区分&#xff0c;大致可以分为&#xff1a;栈 、堆、数…

What does `rpm -ivh` do?

rpm -ivh 安装 并 显示安装进度 (–install–verbose–hash) rpm -ivh /media/cdrom/RedHat/RPMS/samba-3.0.10-1.4E.i386.rpm 安装rpm -ivh --relocate //opt/gaim gaim-1.3.0-1.fc4.i386.rpm 指定安装到 /opt/gaim[Ref] rpm -uvh和-ivh有什么区别以及zabbix 安…

在微服务架构中认证和授权的那些事儿

在微服务架构中认证和授权是最基础的服务能力&#xff0c;其中这一块行业类的标准就是OAuth2 和 SSO &#xff0c;而OAuth2 和 SSO 可以归类为“用户管理和身份验证”工具&#xff0c;OpenID Connect 1.0是 OAuth 2.0 协议之上的一个简单身份层。 Part.1 认识OAuth 2.0 OAuth…

libignition-gazebo-diff-drive-system.so是什么

因该就是个动态链接库&#xff0c;库文件之类 而且就是gazebo6版本也就是ign 这个版本的动态链接库有个特点&#xff1a;全部都是以.so结尾&#xff0c;所以很可能ign的插件plugin都是带.so的 abcdegx.so elvikorflsd.so fvlwirjgiojf.so等

系分笔记计算机网络OSI七层模型概念、协议和作用以及TCP/IP协议

文章目录 1、概述2、 OSI七层模型概念、协议和作用3、TCP/IP协议3.1 网络层协议和传输层协议3.2 应用层协议 4、总结 1、概述 计算机网路是系统分析师考试的常考知识点&#xff0c;本篇主要记录了知识点&#xff1a;OSI七层模型概念、协议和作用以及TCP/IP协议中比较重要的考点…

自动化测试和人工测试分别有什么优缺点?

自动化测试 优点 效率高&#xff1a;自动化测试可以快速执行大量测试用例&#xff0c;这对于大型项目或需要频繁进行回归测试的项目非常有用。 一致性强&#xff1a;自动化测试每次执行都会产生相同的结果&#xff0c;这有助于确保测试结果的可靠性和可重复性。 可重复性&am…
最新文章