你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

请问TIM2通道中断怎么应用,与TIM的中断有什么区别? 【...

[复制链接]
scutjd2-394737 提问时间:2012-10-17 17:16 /
做了一块灯板,分很多组,每组灯亮暗都是独立的;想用TIM2每个通道控制一组灯的亮暗(不知能否行得通),4个通道控制4组灯,采用中断方式,就是通道1中断一次,A组灯亮,再中断,A组灯来,(亮暗间隔时间可以不同),几个问题请教各位大侠:
1、TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET  这句是来判断通道中断的吧?每次通道中断 时,TIM2也发生中断 TIM2_IRQHandler事件吧? 通道中断与TIM2中断这两个是什么关系?
2、通道中断用不用加上  
     TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
     TIM_ITConfig(TIM2, TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4, ENABLE);
3、”捕获“是不是就是把TIM2计数寄存器的数填到捕获寄存器中?

亮暗闪几下后就不闪了,不知为什么。
CCR1_Val来调节亮暗时间。
TIM的设置程序、中断程序,,如下:
/* TIM2设置时基单元 */   // CCR:捕获/比较寄存器
   TIM_DeInit(TIM2);
   TIM_TimeBaseStructure.TIM_Prescaler = 35999; // 0.5ms
  TIM_TimeBaseStructure.TIM_Period =TIM2_ARR;   //它对应TIM2_ARR(自动装载寄存器
  TIM_TimeBaseStructure.TIM_ClockDivision = 0; //ClockDivision是对CKD位进行设置的,
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
  /* Prescaler configuration */
// TIM_PrescalerConfig(TIM2 , PrescalerValue, TIM_PSCReloadMode_Immediate);
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;  //选择定时器模式,TIM 输出比较时间模式
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
     /* TIM2第一通道设置 */
// TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; //配置通道1
  TIM_OCInitStructure.TIM_Pulse = CCR1_Val;    //装入当前捕获/比较2 TIM2_CCR1寄存器的值(预装载值)。
  //通用寄存器的四个通道,每一个通道相当于一个中断触发源,可以设置一个计数值,当TIM计数值和此计数值相等时,触发中断。
  //通道1 占空比=TIM2_CCR1/(TIM2_ARR+1)X100%
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //对CCER中CCxP的操作
  TIM_OC1Init(TIM2, &TIM_OCInitStructure);   //将配置应用
  TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Disable);
  /*第二通道设置 */
  TIM_OCInitStructure.TIM_Pulse = CCR2_Val;   //这个是将CCR2_Val的值送到TMI2_CCR2中
  TIM_OC2Init(TIM2, &TIM_OCInitStructure);   //将配置应用
  TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Disable);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);//开启中断,TIM 中断源
  TIM_ITConfig(TIM2, TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4, ENABLE);; //开启中断   捕获/比较1、2、3、4 中断源
  /* TIM2 enable counter */
  TIM_Cmd(TIM2, ENABLE);
//最后两个步骤,一个是管理时钟的,一个是管理中断的。

中断程序:

void TIM2_IRQHandler(void)
{
  TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);  //清除掉中断标志位

<span style="font-size: small;">  if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)   // TIM_IT_CC1: TIM 捕获/比较1 中断源
  {
    TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);
   capture = TIM_GetCapture1(TIM2);   //获得输入捕获1 的值,即计数器中的计数值
if (capture

控制多组灯亮暗的程序.rar

下载

1.44 MB, 下载次数: 84, 下载积分: ST金币 -1

收藏 评论3 发布时间:2012-10-17 17:16

举报

3个回答
xiaodc88 回答时间:2012-10-30 20:35:24

RE:请问TIM2通道中断怎么应用,与TIM的中断有什么区别? 【悬赏问答】

不明白为什么一定要用通道中断?有什么特殊的目的?感觉就用TIM2的中断就行了,每次中断时切换一组灯,而每组灯的亮暗在中断中调整TIM2的四个通道的PWM输出占空比就可以了。
xieyuanfu 回答时间:2012-11-9 14:21:57

RE:请问TIM2通道中断怎么应用,与TIM的中断有什么区别? 【悬赏问答】

1.TIM 中断跟通道中断 只是跟定时器 比较的 寄存器不一样而已,TIN中断一般就是说溢出中断 别的通道中断可以说是匹配中断。
2. 那两个语句是定时器的总体配置 是需要的。
3. 捕获的意思 其实就是一个边沿触发中断事件,并是你说的意思。
liangweichao 回答时间:2012-12-6 18:58:08

回复:请问TIM2通道中断怎么应用,与TIM的中断有什么区别? 【悬赏问答】

附件在哪里?
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版