打印

STM32 TIMER问题

[复制链接]
2661|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cqbbgmg|  楼主 | 2011-5-25 17:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用TIME2通道一 捕获一方波信号,通道二,三,四进行比较中断.
初始化程序如下: 计数器顶点11000,比较器2先为30000,目的是不想进入比较2中断,
但我一启动计数器,这几个中断好像就同时产生了.都进入了中断.以后就正常了.不会产生
二号比较中断了.想问问大家这是怎么回事.

  /* Time base configuration */
  TIM_TimeBaseStructure.TIM_Period = 11000;         
  TIM_TimeBaseStructure.TIM_Prescaler = 71;      
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;   
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
   
  /* TIM2 PWM2 Mode configuration: Channel1
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;         
  TIM_OCInitStructure.TIM_Channel = TIM_Channel_2;         
  TIM_OCInitStructure.TIM_Pulse = 6383;  
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
   
  TIM_OCInit(TIM2, &TIM_OCInitStructure); */
  
  /* TIM2 configuration in Input Capture Mode */
/*
TIM2->CCR1=10000;
TIM2->CCR2=0;
TIM2->CCR3=9500;
TIM2->CCMR1=0x1010;
TIM2->CCMR2=0x0010;
TIM2->CCER=0x0001;
TIM2->DIER=0x000E;
//TIM2->CR1=0x0001 ; */
//* 临时改
TIM2->CCR1=10000;
TIM2->CCR2=30000;
TIM2->CCR3=9500;
TIM2->CCR4=10900;
//TIM2->CCR4=11000;
TIM2->CCMR1=0x1081;
TIM2->CCMR2=0x0010;
TIM2->CCER=0x0001;
TIM2->DIER=0x001E;
  
  TIM_ICInitStructure.TIM_ICMode = TIM_ICMode_ICAP;            
  TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;           
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;         
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;      
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;      
  TIM_ICInitStructure.TIM_ICFilter =8;
  
  TIM_ICInit(TIM2, &TIM_ICInitStructure);
   
  /* One Pulse Mode selection */
// TIM_SelectOnePulseMode(TIM2, TIM_OPMode_Single);

  /* Input Trigger selection */
  //TIM_SelectInputTrigger(TIM2, TIM_TS_TI1FP1);
  /* Slave Mode selection: Trigger Mode */
// TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Trigger);
  TIM2->CR1|=0x0001;//start TIM2
沙发
cqbbgmg|  楼主 | 2011-5-27 15:36 | 只看该作者
怎么没人回答,是不是计数器一到顶点,就把所有比较标志位都设置了。

使用特权

评论回复
板凳
airwill| | 2011-5-27 18:14 | 只看该作者
我看库里面的典型应用在开中断的时候都有先清除中断标志的操作. 这可能是器件硬件初始化的问题.
如果你的应用很介意这个问题, 那就参考典型应用的方法来吧, 如果楼主想搞明白到底为什么会这样. 也希望楼主自己亲自做个测试, 来弄明白这个问题, 然后给网友们一个更好的建议来避免这个缺陷.

使用特权

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

本版积分规则

7

主题

29

帖子

0

粉丝