Advertisement

STM32F407标准库输入捕获项目及学习记录:获取脉冲周期和频率

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:RAR


简介:
本项目详细介绍了基于STM32F407微控制器的标准库实现输入捕获功能的过程,重点在于通过定时器捕捉外部信号的脉冲周期,并据此计算其频率。涵盖了硬件配置、代码编写及调试技巧等多方面的内容,适合初学者深入理解与实践嵌入式系统开发中的时间测量技术。 输入捕获实验步骤如下: 1. 初始化定时器以计算脉冲溢出次数,并设置ARR值为32位0xFFFFFFFF。 2. 配置输入捕获参数: - 设置通道为输入捕获模式; - 将IC1映射到TI1引脚上; - 不启用分频功能; - 禁止滤波器使用,直接获取信号边缘信息; - 启动更新中断和CCITE(捕捉事件)中断。 3. 激活定时器以及输入捕获功能。 4. 计算高电平宽度的逻辑: (1)设定上升沿触发,在检测到一个上升沿时清空计数寄存器; (2)设置下降沿作为下一个捕捉点; (3)从上一脉冲结束至当前下降沿来临前,记录溢出次数N; (4)在捕获到下降沿后读取输入捕获值C; (5)计算总的高电平计数值Cnt = N*ARR + C; (6)将该计数转换成时间T = Cnt * 1us。 实验中,重装载的周期设置为84分频后的值,因此每个定时器周期等于1微秒。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • STM32F407
    优质
    本项目详细介绍了基于STM32F407微控制器的标准库实现输入捕获功能的过程,重点在于通过定时器捕捉外部信号的脉冲周期,并据此计算其频率。涵盖了硬件配置、代码编写及调试技巧等多方面的内容,适合初学者深入理解与实践嵌入式系统开发中的时间测量技术。 输入捕获实验步骤如下: 1. 初始化定时器以计算脉冲溢出次数,并设置ARR值为32位0xFFFFFFFF。 2. 配置输入捕获参数: - 设置通道为输入捕获模式; - 将IC1映射到TI1引脚上; - 不启用分频功能; - 禁止滤波器使用,直接获取信号边缘信息; - 启动更新中断和CCITE(捕捉事件)中断。 3. 激活定时器以及输入捕获功能。 4. 计算高电平宽度的逻辑: (1)设定上升沿触发,在检测到一个上升沿时清空计数寄存器; (2)设置下降沿作为下一个捕捉点; (3)从上一脉冲结束至当前下降沿来临前,记录溢出次数N; (4)在捕获到下降沿后读取输入捕获值C; (5)计算总的高电平计数值Cnt = N*ARR + C; (6)将该计数转换成时间T = Cnt * 1us。 实验中,重装载的周期设置为84分频后的值,因此每个定时器周期等于1微秒。
  • STM32 PA1 PWM 测量
    优质
    本项目利用STM32微控制器的PA1引脚输入捕获功能,精确测量PWM信号周期与频率。通过软件配置实现高效、稳定的工业级信号处理应用。 源码中STM32 PA1 输入捕获PWM周期频率的实现方法可以参考相关资料。
  • STM32F407代码.rar_STM32F407 _测高电平_捉_测量
    优质
    本资源包含基于STM32F407微控制器的输入捕获程序,适用于高电平信号频率测量。文件内详细介绍了如何使用定时器进行精确频率检测,适合电子开发人员学习与参考。 STM32F407输入捕捉代码可以测量输入信号的高、低电平时间和频率,最高可测频率达20MHz。
  • STM32F103通过占空比
    优质
    本文章介绍如何使用STM32F103微控制器的定时器输入捕获功能测量脉冲信号的占空比与周期,适用于嵌入式系统开发人员。 本资源提供了STM32F103输入捕获获取占空比与周期的源代码及Keil5工程文件,在原子哥代码的基础上增加了获得周期的功能,可以得到周期时间和高电平时间,并据此计算出占空比。经过测试证明该功能准确无误。
  • STM32CubeMX十一:定时器源码
    优质
    本篇笔记详细介绍了如何使用STM32CubeMX配置和编写代码实现定时器的输入脉冲捕获功能,适用于嵌入式开发初学者。 定时器输入脉冲捕获源码已测试完成。
  • STM32F407外部计数
    优质
    本简介介绍如何使用STM32F407微控制器实现外部脉冲信号的捕捉与计数功能,适用于需要精确测量周期、频率或编码器位置的应用场景。 STM32F407用于捕捉外部脉冲并进行计数。
  • STM32F1测量
    优质
    本项目介绍如何使用STM32F1系列微控制器实现输入信号的频率测量。通过GPIO和定时器输入捕获功能,精确捕捉外部信号周期,进而计算出频率值,适用于各种工业控制场景。 在STM32F1平台上实现了输入捕获测频功能,并能在2.8寸TFT液晶屏上显示汉字及频率测量数值,同时展示输入捕获计算值。
  • STM32与占空比.rar
    优质
    本资源提供了使用STM32标准库进行输入捕获测频及测量信号占空比的方法和代码示例,适用于嵌入式系统开发人员。 STM32标准库输入捕获测频率、占空比相关的资料可以包含在名为“stm32标准库输入捕获测频率、占空比.rar”的文件中。
  • STM32F407实验分析
    优质
    本实验详细探讨了基于STM32F407微控制器的输入捕获功能,通过理论与实践结合的方式,深入解析了该功能的工作原理及其应用技巧。 之前只用过51单片机,编程的时候全是设定寄存器,现在接触STM32发现寄存器太多了,让我头疼了三天。 以前一直参考的是STM32F103的资料来设置定时器参数,但后来发现这个方法对STM32F407并不适用。两者之间确实存在很大的差异。一开始我就走错了路,还想找到正确的方向?在使用输入捕获功能时,我发现需要将GPIO配置为复用模式,并且要进行管脚的复用映射。 ```c GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_TIM5); ``` 进入`GPIO_PinAFConfig`查看注释后才恍然大悟,原来需要这样设置AF。
  • STM32 计(模式).7z
    优质
    本文件包含一个基于STM32微控制器的频率测量程序源代码,采用输入捕获模式实现高精度计频功能。 #include counter.h #include stdio.h #include usart.h TIM_ICInitTypeDef TIM3_ICInitStructure; void TIM3_counter_Init(u16 arr, u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); // 使能TIM3时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 使能GPIOA时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; // PA7 清除之前设置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; // PA7 浮空输入 GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_ResetBits(GPIOA, GPIO_Pin_7); // PA7 下拉 TIM_TimeBaseStructure.TIM_Period = arr; // 设定计数器自动重装值 TIM_TimeBaseStructure.TIM_Prescaler = psc; // 预分频器 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; // 设置时钟分割: TDTS = Tck_tim TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // TIM向上计数模式 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); // 根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位 TIM3_ICInitStructure.TIM_Channel = TIM_Channel_2; // 选择输入端 IC1 映射到TI1上 TIM3_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; // 上升沿捕获 TIM3_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; // 映射到TI1上 TIM3_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; // 配置输入分频, 不分频 TIM3_ICInitStructure.TIM_ICFilter = 0x00; // IC1F=0000 配置输入滤波器 不滤波 TIM_ICInit(TIM3, &TIM3_ICInitStructure); }