STM32F4_TIM输入波形捕获脉冲频率
本文在前面文章“STM32 基本的计数原理”的基础上进行拓展,讲述关于“定时器输入捕 获”的功能,和上一篇文章“定时器比较输出”区别还是挺大的。在引脚上刚好相反一个 输入、一个输出。 本文只使用一个 TIM5 通道 3(也可其他通道)捕获输入脉冲的频率,通过捕获两次输入脉 冲的间隔时间来计算脉冲波形的频率。间隔一定时间读取频率并通过串口打印出来。 当然也可通过两路通道捕获脉冲信号的占空比,计划后期整理。 笔者通过信号发生器产生信号,上位机串口助手显示捕获的脉冲频率。 (没有信号发生器的 朋友可以结合上一篇文章PWM 输出做信号源 在同一块板子上也可以使用不同定时器, 将 输出引脚接在输入引脚) 先看一下实例的实验现象 关于本文的更多详情请往下看。 Ⅱ、实例工程下载 笔者针对于初学者提供的例程都是去掉了许多不必要的功能, 精简了官方的代码, 对初学者 一看就明白,以简单明了的工程供大家学习。 笔者提供的实例工程都是在板子上经过多次测试并没有问题才上传至360 云盘, 欢迎下载测 试、参照学习。 提供下载的软件工程是 STM32F417 的,但 F4 其他型号也适用(适用 F4 其他型号 关注 微信,回复“修改型号” ) 。 STM32F4_TIM 输入波形捕获(脉冲频率)实例 访问密码 STM32F4 资料 访问密码 53e7 Ⅲ、原理描述 笔者将 TIM 分为三大块 时基部分、 比较输出和输入捕获, 请看下面截图 “通用 TIM 框图” 。 前面的文章已经将“时基部分”的一些基础知识讲述过了, “时基部分”的功能是比较有用 的,它除了可以用来延时(定时)之外,它还可以拿来触发其他一些功能,如触发 DA 转 换、AD 采集等。 上一篇文章讲述的就是图中比较输出部分,比较输出部分功能相对比较简单。 该文主要讲述“输入捕获”部分,这部分输入的通道1 与 2、通道 3 与 4 可以相互协作。该 文只使用了 TIM5 的通道 3,捕获输入信号频率。 通用 TIM 框图 上面两图截取“STM32F4x5、x7 参考手册”建议下载手册参看。 Ⅳ、源代码分析 笔者以 F4 标准外设库(同时也建议初学者使用官方的标准外设库)为基础建立的工程,主 要以库的方式来讲述。 1.RCC 时钟 该函数位于 bsp.c 文件下面; 本文提供的例程也可以使用TIM2 (只要将例程源代码中使用到的TIM5 改为 TIM2, 以及引 脚改正过来就行) 。 重点注意 A.外设 RCC 时钟的配置要在其外设初始化的前面; B.匹配对应时钟。 比如RCC_APB2 外设不要配置在 RCC_APB1 时钟里面 【如RCC_APB1PeriphClockRCC_APB2Periph_USART1, ENABLE; 这样能编译通过, 但这是错误的代码】 2.TIM 输入捕获引脚配置 该函数位于 timer.c文件下面; 注意 2 点 A.引脚与通道对应这个需要参看“数据手册” ,该文 TIM5 通道 3 对应的引脚就是 PA2. B.复用配置GPIO_PinAFConfigGPIOA, GPIO_PinSource2, GPIO_AF_TIM5; 这个地方对于 F1 转 F0、F4 等的朋友需要注意,更加芯片系列及库的不同,他们之间存在 一定的差异。 3. TIM 输入捕获配置 该函数位于 timer.c文件下面; “时基部分”是在前面两篇文章讲述过的,这里主要对“输入捕获”部分理解,主要 5 个参 数 捕获通道就是我们捕获的通道; 捕获极性就是我们捕获脉冲的高还是低电平; 捕获选择是直接捕获该通道,还是上面说的1,2 通道协助捕获; 捕获分频对捕获的脉冲分频; 捕获滤波过滤掉波形; 4. NVIC 配置 该函数位于 bsp.c 文件下面; 这里不用多说,只是提醒大家不要忘记配置这里。 5. 计算捕获波形频率原理 该函数位于 stm32f4xx_it.c 文件下面; 该函数是中断函数,也是计算频率重要的函数; A.两次捕获值 捕获配置中,捕获的极性是高电平,这里就是在“上升沿”中断(捕获) ,如果配置为“下 降沿” ,则是在信号的下降沿中断。 B.计算两次捕获差值 这里常人理解都是 capture capture_value2 - capture_value1; 但是,需要考虑另外两种情况,就是计数器在计满和相等时候。 C.计算频率 这里可以理解为1 秒钟计了多少个数。 但是需要注意的是截图中“/2” ,对系统时钟除2,原因在于RCC 给 TIM 提供的时钟就是除 了 2 的,所以,这个地方需要/2. Ⅴ、说明 关于笔者提供的软件工程实例,可关注微信,在会话框回复“关于工程” ,有关于工程结构 描述、型号修改等讲述。 以上总结仅供参考,若有不对之处,敬请谅解。 Ⅵ、最后 更多精彩文章我讲第一时间在微信公众号里面分享。 本着免费分享的原则,方便大家手机学习知识, 定期在微信平台分享技术知识。 如果你觉得 分享的内容对你有用,又想了解更多相关的文章, 请用微信搜索“EmbeddDeveloper” 或者 扫描下面二维码、关注,将有更多精彩内容等着你。 --------------------- 作者ybhuangfugui 来源CSDN 原文 版权声明本文为博主原创文章,转载请附上博文链接