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。
一、概念理解
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。
相关文章推荐
- TIM通用定时器(三):PWM输入捕获模式
- TIM通用定时器:PWM输入捕获模式
- TIM通用定时器(三):PWM输入捕获模式
- TIM通用定时器(一)计数器模式
- TIM通用定时器(二):输出比较——翻转模式
- stm32通用定时器产生pwm时 模式1和模式2有什么区别
- STM32 HAL库定时器TIM---编码器接口模式配置
- 1.STM32F4系列通用定时器TIM2~5总结
- stm32库函数学习篇----通用定时器(PWM功能)
- 定时器TIM和PWM的输出
- stm32之通用定时器TIM
- 【STM库应用】stm32 之 TIM (详解一 通用定时器)
- 3. avr定时器/计数器0 --TC0 --相位修正PWM模式 (比较输出--相位修正PWM 模式)
- 通用定时器(中断功能和PWM输出)
- STM32利用通用定时器输入PWM
- STM32 HAL库 定时器TIM----- PWM输出配置
- 输出比较模式时的TIM_OCMode_PWM1和TIM_OCMode_PWM2区别
- STM32高级定时器TIM1、TIM15输出PWM
- 通用定时器PWM输出
- 4. avr 定时器/计数器1 --TC1 --CTC模式输出PWM (比较匹配发生时清除计数器模式(即CTC模式))