您的位置:首页 > 其它

TIM通用定时器(四):PWM模式(PWMOut)

2017-03-25 17:43 351 查看
http://blog.csdn.net/dainifeixiang/article/details/5500317

 

一、概念理解

1. PWM模式由TIM_ARR寄存器确定频率,由TIM_CCR寄存器确定占空比的信号。

2. 举例说明:例如TIM时钟频率设置为36MHZ输出比较寄存器中的自装载值为3599即ARR Register = 3599,则输出的PWM频率为

                   frequency = 36MHZ/(ARR+1)=10KHZ。设置捕获寄存器的值CCR_Value(即高电平计数值)= 1800.,则占空比

                   duty cycle = 1800//3600=50%

 

二、程序分析(PWM频率为10K,占空比为25%)

1. 时钟设置

 RCC_PCLK1Config(RCC_HCLK_Div4); //72MHZ  4分频,由于TIM的倍频器在APB分频不为1时为2,所以TIM3的时钟频率为36MHZ

  /* TIM3 clock enable */

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

  /* GPIOA and GPIOB clock enable */

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

 

2. GPIO配置(略)

 

3. TIM3配置

/* Time base configuration */

  TIM_TimeBaseStructure.TIM_Period = 3599;        //输出比较寄存器中的自装载值,ARR Register = 3599

  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_PWM1;    //定时器模式为:TIM脉冲宽度调制模式1

  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

  TIM_OCInitStructure.TIM_Pulse = CCR1_Val;                           //捕获寄存器TIM_CCR的值uint16_t CCR1_Val = 900;

  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  //输出为高电平

  TIM_OC1Init(TIM3, &TIM_OCInitStructure);

  TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);          //使能或者失能TIMx在CCR1上的预装载寄存器

 

  TIM_ARRPreloadConfig(TIM3, ENABLE);                                    //使能或者失能TIMx在ARR上的预装载寄存器

  /* TIM3 enable counter */

  TIM_Cmd(TIM3, ENABLE);                                               //启动TIM3。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: