打印

请教STM32产生PWM问题?

[复制链接]
1661|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的标准库的例程文件里好像没有这些注释的,应该是后来人为加上去的。

使用特权

评论回复
5
wll_2012|  楼主 | 2014-1-2 15:45 | 只看该作者
现在明白了,根据程序中使用的配置是PWM2模式,向上计数可以知道,在TIM1_CNT(计数器的值)<TIM1_CCR1(捕获比较寄存器1中的值)时,输出的值为0,反之是1,可以知道这里的占空比(高电平:低电平)为:(144-40):40

使用特权

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

本版积分规则

11

主题

96

帖子

0

粉丝