打印

stm32f107 gpio复用的一个bug?和timx有关。

[复制链接]
2780|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jspp|  楼主 | 2011-6-19 01:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
将f107,tim3通道1设置为pwm2模式,tim3_ch1输出,在没有remap时 ,在PA6输出正确波形。但remap到PB4时,没有波形输出。
下面为GPIO的设置代码:
  /* GPIOA clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  /* GPIOB clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

  /*** Configure GPIO to Output ***/
  /* Remap TIM3 CH1 pin to PB4 */
  //AFIO->MAPR   |= 0x00000800;  //不remap时PA6有输出,remapPB4没有输出
  /*TIM3 channel 1 as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_4 ;//PB4,  -- TIM3 CH1 remap
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  /*GPIOB Configuration: TIM4 channel 3 as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_8;//PB8, -- TIM4 CH3
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  /* TIM3 channel 1 pin (PA.06) configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;//PA6, signal out  -- TIM3 CH1 no remap
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
下面为TIM3的设置代码:
   /* TIM3 clock enable */
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

    TIM_TimeBaseStructure.TIM_Period = Period;
    TIM_OCInitStructure.TIM_Pulse = Period >>1;
   
  TIM_TimeBaseStructure.TIM_Prescaler = 0;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
  /* PWM1 Mode configuration: Channel1 */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;  
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
  TIM_OC1Init(TIM3, &TIM_OCInitStructure);
  TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);

  /* Select the TIM4 Input Trigger: ITR1 */
  //TIM_SelectInputTrigger(TIM3, TIM_TS_ITR3);

  /* Select the slave Mode: Gated Mode */
  //TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Gated);
  /* Enable the Master/Slave Mode */
  TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable);   
  TIM_ARRPreloadConfig(TIM3, ENABLE);
  /* TIM3 enable counter */
  TIM_Cmd(TIM3, ENABLE);
沙发
jspp|  楼主 | 2011-6-19 01:10 | 只看该作者
刚刚测试过,在我的板子上确实如此,芯片批号:stm32f107VCT6 99 045

使用特权

评论回复
板凳
ccontrol| | 2011-6-19 06:39 | 只看该作者
看楼主也是个工作狂,深夜1点居然还在测试硬件电路,甚为敬业,佩服!
TIM3的设置肯定不会有错,你查查JTAG功能是否关闭了。

使用特权

评论回复
地板
jspp|  楼主 | 2011-6-19 07:59 | 只看该作者
jtag和这个有关吗?我查查看

使用特权

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

本版积分规则

31

主题

104

帖子

0

粉丝