ST意法半导体
直播中

刘丹

8年用户 1563经验值
私信 关注
[问答]

为什么STM32f10x它在未配置/启用触发源时会生成TIM2中断呢?

  • int Pulse(void)
  • {
  • tiM_TimeBaseInitTypeDef     TimeStruct;
  •             RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
  •             TIM_SelectInputTrigger(TIM2,TIM_TS_ITR3);//
  •             TIM_SelectSlaveMode(TIM2,TIM_SlaveMode_External1);
  •             TimeStruct.TIM_Prescaler=0;
  •             TimeStruct.TIM_CounterMode=TIM_CounterMode_Up;
  •             TimeStruct.TIM_Period=29;
  •             TimeStruct.TIM_ClockDivision=TIM_CKD_DIV1;
  •             TimeStruct.TIM_RepetitionCounter=0;
  •             TIM_TimeBaseInit(TIM2, &TimeStruct);
  •             TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
  •         ///Master Configuration code
  • ...
  • }
  • void TIM2_IRQHandler(){
  •    if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
  •    {
  •     x=x+1;
  •     TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
  •    }
  • }
我打算在STM32f10x下配置一个主从配置。我正确地连接了它们,但在第一步它会在启用主定时器或启用从定时器之前生成一个中断。这是我的代码:
调用 Pulse 函数后,它会生成 TIM2 中断(x=1),我需要知道为什么它在未配置/启用触发源时生成中断。

回帖(1)

郑俊杰

2023-1-6 10:46:52
不,单独设置 PSC 或 CNT 不会引起中断。每次您(这里的“您”也指“您正在调用的库函数”)设置 TIMx_EGR.UG 时,它都会设置更新标志(如果启用,可能会导致中断)。
“库”函数之所以这样做,是因为设置 PSC 不会立即更改预分频器,因为 PSC 是预加载的。阅读 RM 中的 TIM 章节。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分