精华内容
下载资源
问答
  • stm32外部脉冲计数

    2019-03-23 10:17:57
    stm32外部脉冲计数
  • stm32外部脉冲计数程序,板子不同可以自己修改,实测可用
  • 今天,尝试使用STM32的计数器的外部时钟功能,来对外部脉冲信号进行计数。效果还不错。
  • stm32外部脉冲计数程序,可自己根据不同需求修改程序,可用(看到有朋友需要这样的程序,包括串口接收并波形显示,并存储,以及回放功能,所以顺便做了一个,希望对大家有用! )
  • STM32F407捕捉外部脉冲计数
  • 使用TIM定时器ETR管脚对外部脉冲进行计数,用PA0模拟产生脉冲进行计数。芯片:STM32F103C8T6输出:PA0、PA12(TIM1_ETR)、USART1配置界面TIM1配置Period为计数溢出周期代码应用/* USER CODE BEGIN 2 */HAL_TIM_Base_...

    使用TIM定时器ETR管脚对外部脉冲进行计数,用PA0模拟产生脉冲进行计数。

    芯片:STM32F103C8T6

    输出:PA0、PA12(TIM1_ETR)、USART1

    配置界面

    TIM1配置

    Period为计数溢出周期

    代码应用

    /* USER CODE BEGIN 2 */

    HAL_TIM_Base_Start(&htim1);

    /* USER CODE END 2 */

    /* Infinite loop */

    /* USER CODE BEGIN WHILE */

    while (1)

    {

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,(GPIO_PinState)!HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0));

    HAL_Delay(500);

    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,(GPIO_PinState)!HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0));

    printf("num=%d\r\n",htim1.Instance->CNT);

    }

    /* USER CODE END 3 */

    标准库获取计数器值用TIM_GetCounter函数,HAL函数中,直接调用值即可,好一顿找……

    本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

    展开全文
  • 利用定时/计数器T1对外部脉冲进行计数,每记到10个脉冲,使P1.0接的LED灯取反一次(即前10个脉冲到后亮,后10个脉冲到后灭,反复循环)。

    利用定时/计数器T1对外部脉冲进行计数,每记到10个脉冲,使P1.0接的LED灯取反一次(即前10个脉冲到后亮,后10个脉冲到后灭,反复循环)。

    展开全文
  • STM32定时器使用(三)外部脉冲计数

    千次阅读 2019-10-19 11:33:12
    外部脉冲计数的原理是定时器1设定外部触发,另一个定时器2内部单位时间定时功能,在定时器2的中断函数里,去取定时器1的计数器,然后将定时器1计数器归零,这里取得的计数器值就是在单位时间内捕获的脉冲数。...

    电机脉冲编码器的读取应用,可以测电机转速和位移。外部脉冲计数的原理是定时器1设定外部触发,另一个定时器2内部单位时间定时功能,在定时器2的中断函数里,去取定时器1的计数器,然后将定时器1计数器归零,这里取得的计数器值就是在单位时间内捕获的脉冲数。

    频率: f = CNT1 / time2;

    这里只配置定时器1外部触发模式,定时器2的定时功能在之前的写过,可以去参考;

    这里的定时器1要进行引脚输入功能,使用通用定时器TIM2,而纯定时功能的定时器2我们用基本定时器TIM6

    配置通用定时器TIM2

    void TIM2_Cap_Init(void)                                        //配置 TIM2_CH1_ETR 为外部脉冲计数
    {    
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
     
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);    //使能TIM2时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);   //使能GPIOA时钟
        
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;              //PA0 清除之前设置  
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;           //PA0 输入  
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        GPIO_ResetBits(GPIOA,GPIO_Pin_0);                       //PA0 下拉
        
        //初始化定时器2 TIM2   
        TIM_TimeBaseStructure.TIM_Period = 0xFFFF;              //设定计数器自动重装值 
        TIM_TimeBaseStructure.TIM_Prescaler =0;             //预分频器   
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
        TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);         //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
        TIM_ITRxExternalClockConfig(TIM2,TIM_TS_ETRF);          //配置外部触发,否则不会计数
        TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);
        TIM_SetCounter(TIM2, 0);        
        
        TIM_Cmd(TIM2,ENABLE );                                  //使能定时器
    }
    

    单位时间定时器服务函数

    void TIM6_IRQHandler(void)
    {
        if(TIM_GetITStatus(TIM6,TIM_IT_Update)!= RESET)      //检查TIM6更新中断发生与否
        {
            TIM_ClearITPendingBit(TIM6,TIM_IT_Update);  //清除TIMx更新中断标志 
             
            CNT=TIM_GetCounter(TIM2);                   //读取单位时间内计数器计的CNT值
            fq=CNT;                                     //脉冲数
            TIM_SetCounter(TIM2,0);
        }
    }
    

    这是使用ETR引脚进行时钟计数的,下一篇则使用不同捕获功能进行计数;
    参考:https://blog.csdn.net/qq_26093511/article/details/73909933
    https://blog.csdn.net/u010650845/article/details/81781670

    展开全文
  • STM32F103 CubeMX:ETR外部脉冲计数器

    千次阅读 2019-09-24 16:56:12
    使用TIM定时器ETR管脚对外部脉冲进行计数,用PA5模拟产生脉冲进行计数。 芯片:STM32F103RCT 输出:PA5、PA12(TIM1_ETR) CubeMX(版本5.2.1)的配置界面: 主函数代码 /** @brief The application entry ...

    1、配置方法

    使用TIM1_ETR管脚对外部脉冲进行计数,用PA5模拟产生脉冲进行计数。
    芯片:STM32F103RCT
    输出:PA5、PA12(TIM1_ETR)
    时钟:系统时钟配置为72M
    操作:通过杜邦线将PA5连接到PA12(TIM1_ETR)
    CubeMX(版本5.2.1)的配置界面:

    2、主函数代码

     /**
      * @brief  The application entry point.
      * @retval int
      */
    int main(void)
    {
      /* USER CODE BEGIN 1 */
    
      /* USER CODE END 1 */
      
    
      /* MCU Configuration--------------------------------------------------------*/
    
      /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
      HAL_Init();
    
      /* USER CODE BEGIN Init */
    
      /* USER CODE END Init */
    
      /* Configure the system clock */
      SystemClock_Config();
    
      /* USER CODE BEGIN SysInit */
    
      /* USER CODE END SysInit */
    
      /* Initialize all configured peripherals */
      MX_GPIO_Init();
      MX_TIM1_Init();
      /* USER CODE BEGIN 2 */
      HAL_TIM_Base_Start(&htim1);//自己添加的,启动定时器
      /* USER CODE END 2 */
    
      /* Infinite loop */
      /* USER CODE BEGIN WHILE */
      while (1)
      {
        /* USER CODE END WHILE */
         //翻转引脚PA5 产生方波
        /* USER CODE BEGIN 3 */
    		HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
    		HAL_Delay(1000);
    		HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
    		HAL_Delay(1000);
      }
    
      /* USER CODE END 3 */
    }.
    

    3、 现象

    观察下图寄存器即可,成功实现外部计数器功能。在STM32F103开发板上成功实现。
    也可以通过串口打印功能,通过串口助手观察CNT计数值。
    本人第一次博客分享,不足之处请指出,有点帮助请鼓励!

    展开全文
  • 定时器T0用作频率发生器,输出2.5KHz、50%占空比的频率;定时器T1采样外部脉冲,计数到2500个脉冲则使LED灯取反。
  • STM32 定时器用于外部脉冲计数 第一步,设置GPIO GPIO_InitTypeDef GPIO_InitStructure; /* PA0,PA12-> 左右脉冲输入 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_12;GPIO_InitStructure.GPIO_...
  • STM32CubeMX:ETR外部脉冲计数器

    万次阅读 2016-11-09 18:11:21
    使用TIM定时器ETR管脚对外部脉冲进行计数,用PA0模拟产生脉冲进行计数。 芯片:STM32F103C8T6 输出:PA0、PA12(TIM1_ETR)、USART1 配置界面 TIM1配置 Period为计数溢出周期 代码应用 /* USER ...
  • 1、TIM1 输出pwm.频率为 1 K 。引脚用PA11。...2、TIM3 配置为外部时钟输入模式。引脚用PD2。使能中断。 3、将PD2 和 PA11 短接,主函数串口打印 pwm脉冲个数。 4、控制TIME1 pwm 输出 4个周期后 停止输出。
  • 对于外部脉冲(方波)计数,通用的方法为捕获比较方式,由于项目对于脉冲的精度要求比较高,在快速搭建代码测试过后,发现该方法并不能满足需求,进而寻求计数更为精确的方法----ETR计数。 在测试ETR计数后,其精度...
  • 源:STM32 定时器用于外部脉冲计数 STM32 定时器(一)——定时器时间的计算 STM32的定时器是灰常NB的,也是灰常让人头晕的(当然是对于白菜来说的)。 STM32中的定时器有很多用法: (一)系统时钟(SysTick) 设置...
  • TIM1 外部脉冲计数

    2020-04-06 19:21:45
    void TIM1_init() { PC_DDR_DDR1 = 0; PC_CR1_C11 = 1; TIM1_CCMR1 = 0x9d; TIM1_CCER1 = 0x02; TIM1_SMCR = 0x57; TIM1_CR1 = 0x01; }
  • @ STM32使用总结记录----HAL库(外部脉冲计数/AD并口读数+DMA/使用STM32的DSP库实现FFT…) 目录 外部脉冲计数 AD并口数据的DMA读取 使用STM32自带的DSP库实现FFT STM32型号:STM32F405RGT (64PIN) 配置方案: 1、...
  • PA11接受脉冲信号,实现每一个上升沿AD采样一次,这里的脉冲我是用PA1发送的,脉冲信号正常我测过了,可是AD没有采集到数据,希望哪位高手帮忙看看,我的源码都在下面了。万分感谢!#include"stm32f10x.h"#define ...
  • stm32通用定时器用做外部脉冲计数器的例程

    万次阅读 多人点赞 2018-07-05 14:21:42
    原文: https://blog.csdn.net/sdutkqb/article/details/39100971最近几天要用到stm32对外部输入脉冲进行计数,很自然想到定时器,可是手上资料没有讲解stm32定时器如何用作外部计数器的,在网上找例程,也没找到几...
  • 利用单片机的定时方式0,实现外部脉冲宽度(在5到250ms)的测量。要求画出电路图。在线等 ;问题补充:写出程序,测量结果存储在R0中。;=================================================;做而论道对此题给出了答案:...
  • 本例程介绍使用TIMER的寄存器实现最基本的定时功能,输入捕获,输入捕获模式可以用来测量脉冲宽度或者测量频率。AM335x开发板有8个32位通用定时器,DMTIMER1是用于操作系统(OS)毫秒定时器,用于操作系统时钟,...
  • 单片机测试外部脉冲

    2012-07-26 22:57:54
    用的CPU: C8051F005, 需要测试外部脉冲的频率。 问题有二: 第一个: 单片机一般能够测的最大脉冲频率是多少呢? 第二个: 测试脉冲的 频率大家有啥好想法?
  • void TIM1_Configuration(void) //只用一个外部脉冲端口 { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;  //配置TIMER1作为计数器  TIM_DeInit(TIM1);  TIM_TimeBaseStructure.TIM_Period = 0...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,141
精华内容 456
关键字:

外部脉冲