野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16730|回复: 1

Tim2设置之后只输出了三组PWM波,通道三没用到,求解

[复制链接]
发表于 2015-7-13 16:35:37 | 显示全部楼层 |阅读模式
本帖最后由 ypc_ly 于 2015-7-13 17:22 编辑

我用TIM2输出四组PWM波,没有设置重映射,用了默认的PINA0、1、2、3来产生。但是只输出了三组,只有PINA0、1、2有输出,并且分别对应了Tim2的通道1、2、4 。不知道为什么通道三没有用到,而且PINA3也没有输出PWM波。向大神们讨教一下这个是什么原因照成的?我又把TIM2换成了4,结果还是一样,
  1. #include "bsp_pwm_output.h"
  2. #include "stm32f10x_it.h"
  3. volatile u32 time0=900;
  4. volatile u32 time1=900;
  5. volatile u32 time2=900;
  6. volatile u32 time3=900;
  7. /**
  8.   * @brief  ÅäÖÃTIM3¸′óÃêä3öPWMê±óÃμ½μÄI/O
  9.   * @param  ÎT
  10.   * @retval ÎT
  11.   */
  12. static void TIM2_GPIO_Config(void)
  13. {
  14.   GPIO_InitTypeDef GPIO_InitStructure;

  15.         
  16.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //open tim2 clock
  17.         
  18.   /* GPIOA and GPIOB clock enable */
  19.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  20.         
  21.         //GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2, ENABLE);    //重映射

  22.   /*GPIOA Configuration: TIM2 channel 3 as alternate function push-pull */
  23.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9 ;
  24.    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  25.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                    

  26.         GPIO_Init(GPIOB, &GPIO_InitStructure);
  27.   

  28.   /*GPIOA Configuration: TIM2 channel 2,3 and 15 as alternate function push-pull */
  29.   
  30.         
  31. //        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
  32. //        GPIO_Init(GPIOB, &GPIO_InitStructure);
  33. }


  34. static void TIM2_Mode_Config(void)
  35. {
  36.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  37.         TIM_OCInitTypeDef  TIM_OCInitStructure;

  38.         /* PWMDÅoÅμçƽìø±äÖμ */
  39.          u16 CCR1_Val = time0;        
  40.          u16 CCR2_Val = time1;
  41.          u16 CCR3_Val = time2;
  42.         u16 CCR4_Val = time3;


  43.         
  44. /* -----------------------------------------------------------------------
  45.     TIM3 Channel1 duty cycle = (TIM2_CCR1/ TIM3_ARR+1)* 100% = 50%
  46.     TIM3 Channel2 duty cycle = (TIM2_CCR2/ TIM3_ARR+1)* 100% = 37.5%
  47.     TIM3 Channel3 duty cycle = (TIM2_CCR3/ TIM3_ARR+1)* 100% = 25%
  48.     TIM3 Channel4 duty cycle = (TIM2_CCR4/ TIM3_ARR+1)* 100% = 12.5%
  49.   ----------------------------------------------------------------------- */

  50.   /* Time base configuration */                 
  51.   TIM_TimeBaseStructure.TIM_Period = 999;       //预装值
  52.   TIM_TimeBaseStructure.TIM_Prescaler = 0;            //预分频
  53.   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;        //设置时钟系数
  54.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //向上计数
  55.   TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);

  56.   /* PWM1 Mode configuration: Channel1 */
  57.   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;            //选择模式一
  58.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;        
  59.   TIM_OCInitStructure.TIM_Pulse = CCR1_Val;           //跳变值
  60.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  
  61.   TIM_OC1Init(TIM4, &TIM_OCInitStructure);         //使能通道一
  62.   TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);

  63.   /* PWM1 Mode configuration: Channel2 */

  64.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  65.   TIM_OCInitStructure.TIM_Pulse = CCR2_Val;         
  66.   TIM_OC2Init(TIM4, &TIM_OCInitStructure);         
  67.   TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);

  68. //  /* PWM1 Mode configuration: Channel3 */

  69.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  70.   TIM_OCInitStructure.TIM_Pulse = CCR3_Val;      
  71.   TIM_OC3Init(TIM4, &TIM_OCInitStructure);        
  72.   TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);
  73.         
  74.          
  75.         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  76.   TIM_OCInitStructure.TIM_Pulse = CCR4_Val;      
  77.   TIM_OC3Init(TIM4, &TIM_OCInitStructure);        
  78.   TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);

  79.   
  80.   TIM_ARRPreloadConfig(TIM4, ENABLE);                        
  81.   /* TIM2 enable counter */
  82.   TIM_Cmd(TIM4, ENABLE);                    
  83. }


  84. void TIM2_PWM_Init(void)
  85. {
  86.         TIM2_GPIO_Config();
  87.         TIM2_Mode_Config();        
  88. }
  89. void TIM2_2 (void)
  90. {TIM2_Mode_Config();        }
复制代码

回复

使用道具 举报

发表于 2015-7-14 15:24:06 | 显示全部楼层
可能有的引脚在板子的其它芯片占用了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-10 07:16 , Processed in 0.038149 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表