STM32 外部计数ETR计算频率

发布者:omicron25最新更新时间:2017-10-27 来源: eefocus关键字:STM32  外部计数  ETR  计算频率 手机看文章 扫描二维码
随时随地手机看文章

STM32 外部计数ETR计算频率,测量100K频率,用定时器2定时250ms,定时器3PD2(TIM3_ETR)计数,计算公式f=n*t;

void Tim3_Configuration(void)

{  

   TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

   TIM_TimeBaseStructure.TIM_Prescaler = 0x00; 

   TIM_TimeBaseStructure.TIM_Period = 0xFFFF; 

   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; 

   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 

   TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);  // Time base configuration 

      

   TIM_ETRClockMode2Config(TIM3, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);  

   TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);  

   TIM_SetCounter(TIM3, 0);    

   TIM_Cmd(TIM3, ENABLE); 

         

void Tim2_Config(void)

{

    TIM_TimeBaseInitTypeDef   TIM2_TimeBaseStructure;

    NVIC_InitTypeDef NVIC_InitStructure;  

    TIM_DeInit(TIM2);

    TIM2_TimeBaseStructure.TIM_Period =(2500-1);

    TIM2_TimeBaseStructure.TIM_Prescaler = (7200-1); 

    TIM2_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;

    TIM2_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Up;

    TIM_TimeBaseInit(TIM2, &TIM2_TimeBaseStructure); // Time base configuration

    TIM_ClearFlag(TIM2,TIM_FLAG_Update);

    TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE ); 

    TIM_Cmd(TIM2, ENABLE); 

    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);                

void TIM2_IRQHandler(void)   

{

        if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) 

          {

             TIM_ClearITPendingBit(TIM2, TIM_IT_Update);

             CAPTURE=(u32)TIM_GetCounter(TIM3);        

          }

        sum+=CAPTURE;

        count++;

        if(count==4)

        {

         Frequency=sum*4;//求频率公式F=n*t;这里求了4次的计数值,合起来是1S的频率

       sum=0;

        count=0;

          }

        TIM_SetCounter(TIM3,0); 


关键字:STM32  外部计数  ETR  计算频率 引用地址:STM32 外部计数ETR计算频率

上一篇:STM32定时器编码器模式计算减速电机AB相脉冲个数
下一篇:STM32地址映射的理解

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

STM32代码存储位置与MCUISP下载注意事项
最近做一个项目,在stm32内部一部分用来存储自己的代码,开辟出一段空间来用来存储FPGA代码。每次开机实现stm32往FPGA写入代码的功能。 向stm32某段空间写入代码的方法: (1)ST_LINK Utility软件 通过JTAG,连接后。载入FPGA的bin文件,改写Start address就可以将代码写入固定的区域。 当然可以用ST-LINK写入任意代码。 (2)用STMFlashDemo软件。 这个官方的串口下载软件,通过系统存储器进行下载。在之前的日志中提到过,不详说。 利用MCUISP下载的时候,会擦出整个芯片。 所以如果将一部分内容存到FLASH中比如(0x0807000~0x0807100),再
[单片机]
<font color='red'>STM32</font>代码存储位置与MCUISP下载注意事项
STM32 学习笔记_TIME定时器详解2
STM32的定时器功能很强大,学习起来也很费劲儿. 其实手册讲的还是挺全面的,只是无奈TIMER的功能太复杂,所以显得手册很难懂,我就是通过这样看手册:while(!SUCCESS){看手册 }才搞明白的!所以接下来我以手册的顺序为主线,增加一些自己的理解,并通过11个例程对TIMER做个剖析。实验环境是STM103V100的实验板,MDK3.2 +Library2.东西都不怎么新,凑合用 TIMER主要是由三部分组成: 1、 时基单元。 2、 输入捕获。 3、 输出比较。 还有两种模式控制功能:从模式控制和主模式控制。 一、 框图 让我们看下手册,一开始是定时器的框图,这里面几乎包含了所有定时器的信息,您要是能看明
[单片机]
<font color='red'>STM32</font> 学习笔记_TIME定时器详解2
stm32 12864驱动
/**************************************************************** 【文 件 名 称】lcd12864.h 【功 能 描 述】lcd12864 头文件 *****************************************************************/ #ifndef __LCD12864_H #define __LCD12864_H //**************************************************************** #include stm32f10x_gpio.h #inc
[单片机]
STM32开发板之ADC功能框图讲解
一.ADC简介 STM32f103系列有3个ADC,精度为12位,每个ADC最多有16个外部通道。其中ADC1和ADC2都有16个外部通道,ADC3一般有8个外部通道,各通道的A/D转换可以单次、连续、扫描或间断执行,ADC转换的结果可以左对齐或右对齐储存在16位数据寄存器中。ADC的输入时钟不得超过14MHz,其时钟频率由PCLK2分频产生。 二.ADC功能框图讲解 学习STM32开发板上的外设时首先要了解其外设的功能框图,如下: 功能框图可以大体分为7部分,下面一一讲解: 1.电压输入范围 ADC所能测量的电压范围就是VREF- ≤ VIN ≤ VREF+,把 VSSA 和 VREF-接地,把 VREF+和 VDDA
[单片机]
<font color='red'>STM32</font>开发板之ADC功能框图讲解
STM32中的串口通信
说起通信,我们都知道通信分为并行通信和串行通信。并行通信速率快但是占用引脚数多,串行通信速度慢但是占用引脚数很少。 今天我们主要来说串行通信 串行通信还可以分为同步通信和异步通信。 同步通信:带时钟同步信号传输,栗子:SPI、IIC 异步通信:不带时钟同步信号,栗子:UART、单总线 对于同步通信来说,通信双方是通过同步时钟信号进行发送和接收数据的,即每来一个时钟信号,发送方就发送一位数据,这样接收方也可以通过时钟信号来进行数据的解析。 对于异步通信来说,通信双方之间并没有同步时钟信号,为了使接收方能够准确地把发送方发送的信息解析出来,通信双方在通信之前要约定好一个东西,我们叫它波特率,即发送方按照一定的频率去发送数据
[单片机]
STM32的SPI采用DMA方式传输测试
环境: 主机:WIN7 开发环境:MDK4.23 MCU:STM32F103CBT6 说明: 参考链接: http://www.openedv.com/posts/list/3159.htm SPI传输数据分为连续传输和非连续传输. 连续传输时序图: 非连续传输时序图: 非连续传输模式可以参考上篇文章: http://blog.csdn.net/jdh99/article/details/7598573 官方pdf关于连续和非连续传输的说明: 当在主模式下发送数据时,如果软件足够快,能够在检测到每次TXE的上升沿(或TXE中断),并立即在正在进行的传输结束之前写入SPI_DR寄存器,则能够实现连续的通信;此时,
[单片机]
<font color='red'>STM32</font>的SPI采用DMA方式传输测试
STM32 USB 问题汇总
以下是笔者将ST的Custom_HID例程修改为 自定义USB设备 例程时总结出来的,因为笔者也是刚刚学USB开发不久,某些方面理解错误在所难免,请各位大虾指正。 一、usb_desc.c文件 根据你程序使用的通信方式修改。usb_desc.h文件中定义要根据usb_desc.c文件中的数组的大小;ConfigDescriptor 下添加需要处理的端点;根据需要添加或删除报告描述符(主要用于HID)和CDC接口描述符(主要用于实现USB转串口)等。具体方法可以下载个 电脑圈圈 使用D12编写的例子。 二、Usb_conf.h文件: 1、修改需要处理那些中断 CNTR_CTRM 处理数据正确传输后控制,比如说响应主机 C
[单片机]
<font color='red'>STM32</font> USB 问题汇总
STM32学习笔记之电容触摸1
电容触摸简介 8.1.1 电容触摸概述 随着科技的发展,传统的机械按键正在逐步从设备上面消失,这个原因主要有机械按键由于是采用机械接触的方式,寿命比较短,从用户体验上看,机械按键也显得操作复杂,对比现在的电容按键,电容按键具有寿命长,因为不存在机械接触,占用空间少,以前的机械按键在设计外壳的时候需要考虑尺寸,现在换成电容按键后这个问题不再需要考虑。 8.1.2 检测原理 常规的检测方式一般是通过计算电容放电时间来判断是否有手指按下,这是因为手指会与线路板的铜箔接触面上产生电容效应,当手指没有放在铜箔上的时候,铜箔与PCB之间存在杂散电容,这两个状态的电容值差别很大,检测原理如下图所示。 在检测之前首先用开关将电容Cs里面的电荷
[单片机]
<font color='red'>STM32</font>学习笔记之电容触摸1
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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