ST的定时器配置问题

[复制链接]
6445|13
 楼主| Candic12e 发表于 2025-3-20 16:55 | 显示全部楼层 |阅读模式
一般使用TIM的TIM_Cmd(TIM2, DISABLE);  功能的话,在启用是不是需要重新配置定时器?我看网上建议直接关闭定时器的输出功能就行,不用关闭定时器。这样再启动配置还在。这样对吗?
yangjiaxu 发表于 2025-3-20 16:56 | 显示全部楼层

ST的定时器配置问题

是这样的,这样启动定时器会非常快,而且配置参数也不需要重新配置了
香水城 发表于 2025-3-20 17:59 | 显示全部楼层
TIM_CMD()只关心计数器的起停,不影响其它定时器配置,即其它配置不因计数器的起停而改变。
时光贩卖机 发表于 2025-3-20 22:02 | 显示全部楼层

ST的定时器配置问题

是这样的,相当于正常运行一样,只是没有输出而已
Wordsworth 发表于 2025-3-21 08:02 | 显示全部楼层
还有一种方式是用 TIM_UpdateDisableConfig(),可以避免更新寄存器,这样即使 DISABLE 了,配置也不会变。
Bblythe 发表于 2025-3-21 08:03 | 显示全部楼层
你是遇到啥问题了吗?是 ENABLE 之后定时器没恢复正常工作吗?
Pulitzer 发表于 2025-3-21 08:05 | 显示全部楼层
这种做法在一些低功耗应用里挺实用的,省去了重新写配置的步骤,恢复速度快一点。
Uriah 发表于 2025-3-21 08:06 | 显示全部楼层
其实很多库函数底层就是直接操作寄存器,具体可以看看 TIM_Cmd() 这个函数干了啥。
Clyde011 发表于 2025-3-21 08:07 | 显示全部楼层
如果不确定,可以试试 HAL_TIM_Base_Start() 这种 HAL 库方式,有些时候 HAL 处理得更稳妥。
公羊子丹 发表于 2025-3-21 08:09 | 显示全部楼层
直接用 TIM_Cmd(TIM2, DISABLE); 确实会停掉定时器,但寄存器配置应该不会变,重新 ENABLE 就能恢复运行。
周半梅 发表于 2025-3-21 08:10 | 显示全部楼层
你说的方式没问题,关闭定时器的输出功能,比如 TIM_CCxCmd(TIM2, TIM_Channel_1, TIM_CCx_Disable);,这样不会影响定时器本身的配置。
帛灿灿 发表于 2025-3-21 08:11 | 显示全部楼层
其实看应用需求,有些情况下 DISABLE 也没问题,比如定时器用完就彻底关掉,下次重新配置也不会影响性能。
童雨竹 发表于 2025-3-21 08:12 | 显示全部楼层
这种方法适合需要定时器参数保持不变的情况,但如果需要改动某些参数,可能还是得重新配置一下。
万图 发表于 2025-3-21 08:14 | 显示全部楼层
我之前试过,直接 DISABLE 然后 ENABLE,定时器还能正常跑,配置也都在,没啥问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

89

主题

1697

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部