请教STM32产生PWM问题?

[复制链接]
2058|4
 楼主| wll_2012 发表于 2013-7-27 10:31 | 显示全部楼层 |阅读模式
/*TIM1时钟配置*/
TIM_TimeBaseStructure.TIM_Prescaler = 4000;                                                //预分频(时钟分频)72M/4000=18K
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;                //向上计数
TIM_TimeBaseStructure.TIM_Period = 144;                                                        //装载值 18k/144=125hz
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0;
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);

/* Channel 1 Configuration in PWM mode */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;                                 //PWM模式2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;         //正向通道有效
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;//反向通道无效
TIM_OCInitStructure.TIM_Pulse = 40;                 //占空时间
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;                 //输出极性
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;     //互补端的极性  
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;  

TIM_OC1Init(TIM1,&TIM_OCInitStructure);                                                 //通道1
请问在以上配置中TIM_TimeBaseStructure.TIM_Period = 144;和TIM_OCInitStructure.TIM_Pulse = 40; 有什么关系,而且我始终不理解TIM_OCInitStructure.TIM_Pulse = 40; 是占空时间,为什么说是占空时间呢?
logokfu 发表于 2013-7-27 12:27 来自手机 | 显示全部楼层
40/144才是占空比啊
wangliuliu566 发表于 2013-7-27 18:40 | 显示全部楼层
我一般注释时不写占空时间,因为听起来比较拗口,我一般会写PWM脉宽,其实意思一样
diweo 发表于 2013-7-27 20:18 | 显示全部楼层
应该是个人习惯问题。
官方的3.5的标准库的例程文件里好像没有这些注释的,应该是后来人为加上去的。
 楼主| wll_2012 发表于 2014-1-2 15:45 | 显示全部楼层
现在明白了,根据程序中使用的配置是PWM2模式,向上计数可以知道,在TIM1_CNT(计数器的值)<TIM1_CCR1(捕获比较寄存器1中的值)时,输出的值为0,反之是1,可以知道这里的占空比(高电平:低电平)为:(144-40):40
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

96

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部