TIM1_CH1做输出比较怎么配置

[复制链接]
 楼主| PXJ_520 发表于 2010-7-19 16:03 | 显示全部楼层 |阅读模式
TIM1_CH1做输出比较怎么配置?怎么用V3.2.0中OCToggle直接修改的例程不行呢?
TIM2_CH1修改的就可以?
 楼主| PXJ_520 发表于 2010-7-19 16:04 | 显示全部楼层
补充:
  中断用的TIM1_CC_IRQn
 楼主| PXJ_520 发表于 2010-7-19 16:30 | 显示全部楼层
香版没看到吗?
自己顶
香水城 发表于 2010-7-19 16:38 | 显示全部楼层
我早看到了,信息太少,等你不断地补充信息。
 楼主| PXJ_520 发表于 2010-7-19 16:49 | 显示全部楼层
信息还少吗?
就这些信息还不嫩反应问题吗?
香水城 发表于 2010-7-19 16:59 | 显示全部楼层
怎么知道你是不是改对了?
 楼主| PXJ_520 发表于 2010-7-19 17:14 | 显示全部楼层
完全按照例程里面的改,怎么会错?
不用TIM1_CH1用TIM2_CH1,就对了
TIM1时钟,CH1引脚,中断都配置正确的
 楼主| PXJ_520 发表于 2010-7-19 17:16 | 显示全部楼层
有时间你们可以试着修改一下,TIM1_CH1,CH2,CH3都有问题
香水城 发表于 2010-7-19 18:07 | 显示全部楼层
嗬嗬,你说不会错就不会错了?

既然你这么自信,为什么不把你修改的结果贴出来,让大家评判一下?
 楼主| PXJ_520 发表于 2010-7-20 09:04 | 显示全部楼层
系统时钟为72M,芯片为STM32F105RCT6
__IO uint16_t CCR1_Val = 1000;
配置部分:  
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;         
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  TIM_TimeBaseStructure.TIM_Period = 2000;
  TIM_TimeBaseStructure.TIM_Prescaler = 71;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

  // Output Compare Toggle Mode configuration: Channel1
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
TIM_OCInitStructure.TIM_OCIdleState        = TIM_OCIdleState_Reset;                                                                                                                                                                                       
  TIM_OC1Init(TIM1, &TIM_OCInitStructure);
//  TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Disable);//Disableh和Enable都试过
//TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);

  // TIM enable counter
  TIM_Cmd(TIM1, ENABLE);
  // TIM IT enable
  TIM_ITConfig(TIM1, TIM_IT_CC1, ENABLE);

  NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
中断部分:
void TIM1_CC_IRQHandler(void)
{
        uint16_t capture = 0;       
  if (TIM_GetITStatus(TIM1, TIM_IT_CC1) != RESET)
  {
    TIM_ClearITPendingBit(TIM1, TIM_IT_CC1 );
    capture = TIM_GetCapture1(TIM1);
//   TIM_SetCompare1(TIM1, capture + CCR1_Val );
    TIM_SetCompare1(TIM1, CCR1_Val );

  }
}
程序大致是这个样子了,请大家看看有什么问题!!
 楼主| PXJ_520 发表于 2010-7-20 09:08 | 显示全部楼层
如果我把上面TIM1_CH1相关部分改为TIM2_CH1,程序就能正确输出波形!!
香水城 发表于 2010-7-20 10:07 | 显示全部楼层
GPIOA时钟?TIM1时钟?
 楼主| PXJ_520 发表于 2010-7-20 10:13 | 显示全部楼层
时钟方面都是OK的
香水城 发表于 2010-7-20 10:52 | 显示全部楼层
你太不幸了,:$
 楼主| PXJ_520 发表于 2010-7-20 11:24 | 显示全部楼层
?????
什么太不幸了?
 楼主| PXJ_520 发表于 2010-7-20 13:01 | 显示全部楼层
香版,到底怎么回事?
香水城 发表于 2010-7-20 13:48 | 显示全部楼层
没怎么回事。你的帖子让我想起来以前一个帖子,一查是你一年多以前发的,也是关于TIM1_CH1。

你搞了这么长时间,还在这里打转,感到太不幸了。

https://bbs.21ic.com/viewthread.php?tid=110539
yytdragon 发表于 2010-7-20 14:01 | 显示全部楼层
有点恶搞啊,
难道搁浅的项目又提出来了?
 楼主| PXJ_520 发表于 2010-7-20 16:28 | 显示全部楼层
我不记得发过关于TIM1_CH1的帖子哦
还有,上面的程序是什么地方有问题?
秋天落叶 发表于 2010-7-20 20:32 | 显示全部楼层
两个贴提的问题也不太一样嘛,虽然都是关于定时器的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

230

帖子

0

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