STM32F407 定时器输入捕获

本文介绍了如何在STM32中使用定时器功能来捕获串口信号的高电平持续时间,包括使用printf输出、定时器中断配置、输入捕获处理和中断回调函数的编写,以计算并显示高电平持续时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定时器输入捕获

插播一条串口

之前学串口部分的时候,偷懒没学用printf()输出,今天要打印高电平持续时间的时候,直接重写了fputc函数。结果一直困在printf的死循环里出不来。找了半天发现居然是!!对printf重定向后,避免使用半主机模式而导致库函数程序无法运行,使用微库Micro LIB可以避免半主机模式,在keil中点击Options for Target…,勾选Use Micro LIB,点击OK即可。
在这里插入图片描述
勾选完这个选项之后,我们发现串口可以用printf()语句顺利的输出啦。

定时器捕获的原理

关于原理部分可以参考一篇博客链接: link。里面详细介绍了各个寄存器的作用。

代码实现

基本框架

首先定义四个变量,状态变化时的一个计数值、存储计数器的记录值、计数器溢出的个数和最后总的高电平的时间。

uint8_t TIM5_CH1_Edge=0;  //状态变化时,计数值
uint32_t TIM5_CH1_VAL=0;  //储存计数器的记录值
uint32_t TIM5_CH1_OVER=0; //计数器溢出的个数
uint32_t time;   //高电平持续时间

然后在主函数前面打开定时器的中断以及打开输入捕获。

HAL_TIM_Base_Start_IT(&htim5);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值