打印

TIM1_CH1做输出比较怎么配置

[复制链接]
6845|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
我早看到了,信息太少,等你不断地补充信息。

使用特权

评论回复
5
PXJ_520|  楼主 | 2010-7-19 16:49 | 只看该作者
信息还少吗?
就这些信息还不嫩反应问题吗?

使用特权

评论回复
6
香水城| | 2010-7-19 16:59 | 只看该作者
怎么知道你是不是改对了?

使用特权

评论回复
7
PXJ_520|  楼主 | 2010-7-19 17:14 | 只看该作者
完全按照例程里面的改,怎么会错?
不用TIM1_CH1用TIM2_CH1,就对了
TIM1时钟,CH1引脚,中断都配置正确的

使用特权

评论回复
8
PXJ_520|  楼主 | 2010-7-19 17:16 | 只看该作者
有时间你们可以试着修改一下,TIM1_CH1,CH2,CH3都有问题

使用特权

评论回复
9
香水城| | 2010-7-19 18:07 | 只看该作者
嗬嗬,你说不会错就不会错了?

既然你这么自信,为什么不把你修改的结果贴出来,让大家评判一下?

使用特权

评论回复
10
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 );

  }
}
程序大致是这个样子了,请大家看看有什么问题!!

使用特权

评论回复
11
PXJ_520|  楼主 | 2010-7-20 09:08 | 只看该作者
如果我把上面TIM1_CH1相关部分改为TIM2_CH1,程序就能正确输出波形!!

使用特权

评论回复
12
香水城| | 2010-7-20 10:07 | 只看该作者
GPIOA时钟?TIM1时钟?

使用特权

评论回复
13
PXJ_520|  楼主 | 2010-7-20 10:13 | 只看该作者
时钟方面都是OK的

使用特权

评论回复
14
香水城| | 2010-7-20 10:52 | 只看该作者
你太不幸了,:$

使用特权

评论回复
15
PXJ_520|  楼主 | 2010-7-20 11:24 | 只看该作者
?????
什么太不幸了?

使用特权

评论回复
16
PXJ_520|  楼主 | 2010-7-20 13:01 | 只看该作者
香版,到底怎么回事?

使用特权

评论回复
17
香水城| | 2010-7-20 13:48 | 只看该作者
没怎么回事。你的帖子让我想起来以前一个帖子,一查是你一年多以前发的,也是关于TIM1_CH1。

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

https://bbs.21ic.com/viewthread.php?tid=110539

使用特权

评论回复
18
yytdragon| | 2010-7-20 14:01 | 只看该作者
有点恶搞啊,
难道搁浅的项目又提出来了?

使用特权

评论回复
19
PXJ_520|  楼主 | 2010-7-20 16:28 | 只看该作者
我不记得发过关于TIM1_CH1的帖子哦
还有,上面的程序是什么地方有问题?

使用特权

评论回复
20
秋天落叶| | 2010-7-20 20:32 | 只看该作者
两个贴提的问题也不太一样嘛,虽然都是关于定时器的

使用特权

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

本版积分规则

39

主题

230

帖子

0

粉丝