打印
[其他ST产品]

一个引脚用作定时计数器的ETR和EXTI功能

[复制链接]
424|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
柴库柴库|  楼主 | 2025-5-15 11:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用 CubeIDE开发Blue Pill 板。
需要对 4MHz 的外部信号进行频率计数。捕捉信号的开始后尽快执行 1ms 计数周期。
在 MX 中没有执行此功能的配置。

使用特权

评论回复
沙发
公羊子丹| | 2025-5-22 07:35 | 只看该作者
你可以考虑用TIM的外部时钟模式1,把外部4MHz信号接到ETR引脚,然后用定时器计数。

使用特权

评论回复
板凳
周半梅| | 2025-5-22 07:36 | 只看该作者
EXTI不适合这么高频的信号,4MHz的频率中断根本来不及处理,建议直接用硬件计数。

使用特权

评论回复
地板
帛灿灿| | 2025-5-22 07:37 | 只看该作者
CubeMX里不能直接配置ETR模式,你得手动在初始化代码里改TIMx->SMCR那些寄存器。

使用特权

评论回复
5
童雨竹| | 2025-5-22 07:37 | 只看该作者
我之前用过类似方式,用ETR作为时钟源,然后1ms定时读取CNT值,能精准测频率。

使用特权

评论回复
6
万图| | 2025-5-22 07:38 | 只看该作者
用ETR模式时注意不能跟其他输入通道共用引脚,不然会冲突,Blue Pill资源要分配好。

使用特权

评论回复
7
Wordsworth| | 2025-5-22 07:39 | 只看该作者
STM32F1的定时器功能挺强的,就是CubeMX对特殊模式支持不太完善,得手动补代码。

使用特权

评论回复
8
Bblythe| | 2025-5-22 07:40 | 只看该作者
想实现1ms周期读一次计数值,可以用另一个定时器做中断,里头读目标TIM的CNT寄存器。

使用特权

评论回复
9
Pulitzer| | 2025-5-22 07:40 | 只看该作者
试试用ST官方的STM32CubeProgrammer直接连接,看看能否识别并擦除闪存。

使用特权

评论回复
10
Uriah| | 2025-5-22 07:42 | 只看该作者
4MHz频率不低了,建议加个信号整形电路或施密特触发器,防止噪声干扰。

使用特权

评论回复
11
Clyde011| | 2025-5-22 07:43 | 只看该作者
如果你用的是HAL库,配置完后可以手动把TIM的时钟源切换到外部模式,HAL_TIM_ConfigClockSource()用上。

使用特权

评论回复
12
gaonaiweng| | 2025-5-31 18:21 | 只看该作者
可以通过 CubeIDE 自己实现这个功能

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

33

帖子

0

粉丝