STM32 TIM测 输入信号的 频率

发布者:温柔心情最新更新时间:2017-09-29 来源: eefocus关键字:STM32  TIM  输入信号  频率 手机看文章 扫描二维码
随时随地手机看文章

说 不进中断 等等基本功能没实现ok的,查看: 
STM32 外设配置关键步骤 
务必仔细瞅瞅…

TIM输入捕获简介

TIM输入捕获两种模式: 
1. PWM输入模式 
2. 输入捕获模式


调试记录

PWM输入模式:

该模式的理解: 
stm32的PWM输入捕获模式

仅适用于通道1、 2 
从输入捕获中断说起… 
从TIM3 CH1输入信号,

..............
  if(TIM_GetITStatus(TIM3,TIM_IT_CC1) == SET) //
  {
    ic1 = TIM_GetCapture1(TIM3)+1;  //周期
    ic2 = TIM_GetCapture2(TIM3)+1; //脉冲宽度
    float pulse = ic2 /(float)ic1; //占空比
    FAN_Frequency = (u32)1000000 /ic1; //频率
  }  //TIM_SetCounter(TIM3,0);
  TIM_ClearFlag(TIM3,TIM_FLAG_CC1);
  TIM_ClearITPendingBit(TIM3,TIM_IT_CC1);//清楚TIM的中断待处理位
  ..........123456789101112

注: 
- 计数器从0计数,需要+1处理; 
- “FAN_Frequency = (u32)1000000 /ic1;” 的1000000,取自基时钟72分频以后的时钟频率,为1M。如:进行配置,取72M;36分频,取2M;

外设TIM3配置: 
捕获法

void TIM3_Configuration(void)
{...
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
  GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);

  TIM_InternalClockConfig(TIM3);
  TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  TIM_TimeBaseStructure.TIM_Prescaler = 72-1; 
  TIM_TimeBaseStructure.TIM_Period = 0xffff;
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; 
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

  TIM_ICInitTypeDef TIM_ICInitStructure;
  TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; 
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; 
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
  TIM_ICInitStructure.TIM_ICFilter = 0x00;
  //TIM_ICInit(TIM3, &TIM_ICInitStructure);
  TIM_PWMIConfig(TIM3, &TIM_ICInitStructure);   

  TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1);
  TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);
  TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable); 
  .....
}12345678910111213141516171819202122232425262728

注: 
TIM_PWMIConfig(TIM3, &TIM_ICInitStructure); //TIM_ICInitStructure参数的配置函数 
TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1); 
TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset); 
TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable);

此四行代码为 PWM输入捕获模式标配; 
关于TIM_ICInitStructure参数的配置函数还有: 
TIM_ICInit(TIM3, &TIM_ICInitStructure); 
区别就是是否设置另外一个通道的/* Select the Opposite Input Polarity /和/ Select the Opposite Input */ 反向捕获边沿、另一个择TIMx_CCRx的有效输入。这里将TIMx_CCR2有效输入选择至TI1上。 
只是测频率的话,无伤大雅。 
详见:数据手册 + 固件库源码。

输入捕获模式

适用于全部通道。 
TIM设置,代码注释贴上来都是乱码,就直接截图啦。 
这里写图片描述

这里使用TIM_ICInit(TIM3, &TIM_ICInitStructure);进行配置。

中断代码如下: 
这里写图片描述

以上仅供参考,多退少补…


关键字:STM32  TIM  输入信号  频率 引用地址:STM32 TIM测 输入信号的 频率

上一篇:STM32学习笔记-Flash做为存储器储存数据
下一篇:STM32 JTAG引脚复用设置

推荐阅读最新更新时间:2024-03-16 15:39

基于STM32的软件定时器设计
1 什么是软件定时器 软件定时器是用程序模拟出来的定时器,可以由一个硬件定时器模拟出成千上万个软件定时器,这样程序在需要使用较多定时器的时候就不会受限于硬件资源的不足,这是软件定时器的一个优点,即数量不受限制。 但由于软件定时器是通过程序实现的,其运行和维护都需要耗费一定的CPU资源,同时精度也相对硬件定时器要差一些。 2 软件定时器的实现原理 在Linux,uC/OS,FreeRTOS等操作系统中,都带有软件定时器,原理大同小异。典型的实现方法是:通过一个硬件定时器产生固定的时钟节拍,每次硬件定时器中断到,就对一个全局的时间标记加一,每个软件定时器都保存着到期时间。 程序需要定期扫描所有运行中的软件定时器,将各个到期时间
[单片机]
基于<font color='red'>STM32</font>的软件定时器设计
stm32不同闪存存储器容量启动文件选择说明
小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。 选择 startup_stm32f10x_ld.s。 中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。 选择 startup_stm32f10x_md.s。 大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。 选择 startup_stm32f10x_hd.s。 还需要说明的一点是在 MDk安装路径\ARM\Startup\ST\下有一个
[单片机]
基于STM32+NBIOT+华为云IOT设计的智能井盖
一、概述 智能井盖是一种通过物联网技术实现对井盖状态监测和管理的设备。当前介绍基于STM32微控制器,BC26 NBIOT模组以及华为云IOT平台设计一款智能井盖系统。该系统通过光线传感器、霍尔传感器、温湿度传感器等设备实现井盖状态的实时监测,通过NBIOT网络将数据上传到华为云IOT平台,再通过云平台下发控制指令实现远程管理。 应用场景 智能井盖系统可以广泛应用于城市管理、交通建设等领域,其中具体应用场景包括: (1)实时监测井盖状态,及时发现井盖开放或异常情况,提高城市管理的效率和安全性; (2)提供实时环境监测数据,帮助提升城市环境监测能力; (3)利用NBIOT网络和华为云平台的远程控制功能,可以实现智能井盖的开关控制
[单片机]
基于STM32+NBIOT+华为云IOT设计的智能井盖
STM32处理器输入捕获分析
前言: 1.博文基于ARM Cortex-M3内核的STM32F103ZET6芯片和标准3.5.0库; 2.如有不足之处,还请多多指教; ** 一 基本知识 ** 输入捕获的功能:用来测量脉宽或者测量信号频率; 输了TIM6和TIM7外,其他定时器都有输入捕获功能; 通用定时器输入捕获中断和定时器更新中断公用同一个中断函数; 二 侧脉宽工作原理 如何获取一个脉冲的宽度(比如高电平): 开启并设置好定时器的时钟源 ,频率为F; 输入需要检测的脉冲; 利用CNT计数器计算一个脉冲的上升沿和下降沿之间的脉宽 三 相关寄存器 TIMx_ARR,TIMx_PSC,TIMx_CCMRx,TIMx_CCERx,TIMx_DIER,T
[单片机]
<font color='red'>STM32</font>处理器<font color='red'>输入</font>捕获分析
STM32自学笔记GPIO寄存器
GPIO寄存器一览 以下图片全部摘自STM32中文参考手册 GPIOx- CRL(x=A…E) 这个寄存器主要是设置GPIO的低8位(0~7)端口的配置 MODE 用来设置端口输出的速度 (在输入模式下不需要配置,仅在输出模式下需要配置) CNF 用来设置输入模式或者输出模式 例如 设置PA0为推挽输出速度为50MHz GPIOA- CRL&=0XFFFFFFF0;//PA0配置清零 GPIOA- CRL|=0X00000003;//PA0输出 速度50MHz 设置PA0为上下拉输入(默认下拉) GPIOA- CRL&=0XFFFFFFF0;//PA0配置清零 GPIOA- CRL|=0X00000008
[单片机]
<font color='red'>STM32</font>自学笔记GPIO寄存器
stm32 中断串口控制LED灯
#include stm32f10x.h #include usart.h #include led.h #include stdio.h /*********************************************************************** ***********************************************************************/ void RCC_Configuration(void); void GPIO_Configuration(void); void NVIC_Configuration(void); //void d
[单片机]
三星自曝Exynos 9810处理器频率:小核心高达1.9GHz
    在手机处理器行业,苹果A系列是个无敌的存在,而在安卓阵营中,高通骁龙曾经独执牛耳,但是三星Exynos、华为麒麟也都在迅速崛起,竞争激烈。   骁龙845发布之后,三星也很快推出了新一代的Exynos 9810,将和骁龙845一起出现在新旗舰Galaxy S9系列之中,均为首发。   根据此前披露的信息,Exynos 8910采用三星自家第二代10nm LPP工艺制造,拥有四个三星自研架构的高性能CPU核心、四个低功耗的A55小核心,同时集成多达18个核心的Mali-G72 MP18 GPU核心。   同时,Exynos 8910支持四个16位通道LPDDR4X-1794内存、4K120Hz H.265/H.2
[半导体设计/制造]
STM32低功耗唤醒方式
MCU进入低功耗之后,以极低的功耗维持着系统“活着”,但是醒过来是需要一定条件的,比如定个“闹钟”,按键“按一下”等,目前常用的“正常的”唤醒方式有以下几种: 1、RTC定时唤醒; 2、外部中断唤醒(按键或者通讯唤醒); 3、特殊唤醒引脚唤醒(某些引脚具有专门的唤醒功能)。 下面,我们再来看一看如何通过RTC和外部中断唤醒MCU。 1、RTC定时唤醒 依然是从手册中我们可以看到,所有的RTC时间都可以把MCU从低功耗模式中唤醒: 介绍使用RTC的定时功能实现,定时1S唤醒一次,使用cubemx进行对RTC进行配置: 生成代码的时候,勾选这个选项,可以把不用的引脚配置为模拟输入模式,降低功耗: RTC的配置如图,使能RTC,
[单片机]
<font color='red'>STM32</font>低功耗唤醒方式
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved