[STM32G4] 定时器同步触发失败

[复制链接]
759|6
xch 发表于 2025-9-9 10:18 | 显示全部楼层 |阅读模式
想用TIM16 触发 TIM1,TIM2 同时启动计数。结果TIM1,TIM2 的CR1_CEN置一后自己就跑起来了。
void StartTimers(void)
{
  RCC-> APB1RSTR1 = RCC_APB1RSTR1_TIM2RST|RCC_APB1RSTR1_TIM3RST|RCC_APB1RSTR1_TIM4RST;
  RCC-> APB2RSTR = RCC_APB2RSTR_TIM1RST;
  RCC-> APB1RSTR1  =0;
  RCC-> APB2RSTR = 0;
  /*********TIM16 为触发源,进入被触发模式********** */
  uint32_t tmp = TIM_TS_ITR7|TIM_SLAVEMODE_TRIGGER;
  TIM1->SMCR =tmp;
  TIM2->SMCR =tmp;
  TIM3->SMCR =tmp;
  TIM4->SMCR =tmp;

  TIM1 ->CR1 |= TIM_CR1_CEN;
  TIM2 ->CR1 |= TIM_CR1_CEN;
  TIM3 ->CR1 |= TIM_CR1_CEN;
  TIM4 ->CR1 |= TIM_CR1_CEN;
  //?! 这时候4个定时器都开始计数了,不等TIM16触发


见鬼了。SLAVE 改成GATE触发模式倒是都安静等待触发。
这 G431 是不是山寨的?
classroom 发表于 2025-9-9 16:58 | 显示全部楼层
TIM16未启动?
cr315 发表于 2025-9-9 18:59 | 显示全部楼层
配置TIM1/TIM2为从模式。
duo点 发表于 2025-9-9 18:00 | 显示全部楼层
估计是触发源未正确配置,导致从模式无法生效。
 楼主| xch 发表于 2025-9-9 17:34 | 显示全部楼层

是啊。没启动。slave tim 都自己启动了。
 楼主| xch 发表于 2025-9-10 09:40 | 显示全部楼层
估计是TIM16不适合做触发模式的触发源。
在F407上换定时器可以正常触发。有空再试其他定时器触发
 楼主| xch 发表于 2025-9-10 20:54 | 显示全部楼层
果然换 TIM15 就正常。

谁能解释为啥?

我猜 TIM_OC 并不具备触发功能。可能仅级联到下级的捕获接口。
顾名思义TIM_TRGO 才是具备触发功能的信号

8914868c174327229e.png



您需要登录后才可以回帖 登录 | 注册

本版积分规则

xch

122

主题

7123

帖子

34

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