STM32——TIM输入捕获

本文介绍了STM32的TIM输入捕获功能,包括频率测量、主从触发模式、输入捕获通道结构及相关的库函数。通过配置输入捕获单元、选择触发源和设置通道分频器,实现对高频和低频信号的测量,并提供了读取捕获值的函数。

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

1.输入捕获简介

 频率测量方式:

 测频法适合高频信号,而测周法适合低频信号

2.主从触发模式

 主模式可以将定时器内部的信号映射到TRGO引脚用于触发别的外设

从模式是接收其他外设或者自身外设的一些信号用于控制自身定时器的运行

3.输入捕获通道结构

 

 PWMI基本结构

### STM32G4 定时器输入捕获功能使用教程 #### 初始化配置 为了实现定时器输入捕获功能,首先需要通过STM32CubeMX工具配置相应的外设参数。具体来说,在Pinout & Configuration界面找到并打开Timer模块设置窗口,选择所需的通道作为输入捕捉源,并指定触发沿类型(上升沿、下降沿或双边沿)。此外还需设定预分频系数及时基周期等基本属性。 对于实际编程操作而言,则需调用`HAL_TIM_IC_Init()`接口完成初始化工作[^2]: ```c // 假定已经创建了一个名为 htim3 的句柄用于表示 TIM3 外设实例 static void MX_TIM3_Init(void) { /* 设置定时器模式 */ TimHandle.Instance = TIM3; // ...其他必要成员赋值... } ``` #### 启用中断处理机制 当检测到外部信号变化时会触发一次中断事件,因此还需要编写对应的ISR (Interrupt Service Routine),即中断服务程序来响应这些异步请求。通常情况下该函数会被放置于stm32g4xx_it.c文件当中[^3]: ```c void TIM3_IRQHandler(void) { HAL_TIM_IRQHandler(&htim3); } /* 用户可以在下面两个区域之间添加自定义逻辑 */ /* USER CODE BEGIN TIM3_IRQn 0 */ /* USER CODE END TIM3_IRQn 0 */ /* USER CODE BEGIN TIM3_IRQn 1 */ /* USER CODE END TIM3_IRQn 1 */ ``` 这里需要注意的是,如果希望在每次接收到有效边沿之后执行某些特定任务的话,应该把相应代码填入上述标记处;而直接调用`HAL_TIM_IRQHandler()`则负责自动清除标志位以及通知上层应用层有新的数据到来。 #### 实现具体的回调函数 最后一步就是注册一个专门用来接收捕获数值的回调函数了。这可以通过重载默认版本的方式轻松达成目的——只需简单覆盖掉原本存在于`.h`头文件中的声明即可[^4]: ```c void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1){ uint32_t inputCaptureValue = __HAL_TIM_GET_COMPARE(htim, TIM_CHANNEL_1); // 对获取到的时间戳做进一步分析计算 // ... printf("Captured value: %lu\n",inputCaptureValue); } } ``` 以上便是完整的STM32G4系列MCU利用硬件计数器来进行脉冲宽度测量或者频率测定的方法介绍及其配套C语言源码片段展示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值