OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4139|回复: 1

PWM输出问题,求大神解答

[复制链接]

6

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2014-10-26
在线时间
11 小时
发表于 2014-11-19 19:24:02 | 显示全部楼层 |阅读模式
5金钱
问题虽然有点白痴,但网上实在找不到答案。
以前只学过51对PWM不太了解
[mw_shl_code=c,true]TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //脉宽调制模式 2 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能 TIM_OCInitStructure.TIM_Pulse = 0; //设置待装入捕获比较寄存器的脉冲值 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性高 TIM_OC1Init(TIM1, &TIM_OCInitStructure); //③初始化外设 TIMx[/mw_shl_code]

其中TIM_OCInitStructure.TIM_Pulse = 0; //设置待装入捕获比较寄存器的脉冲值
里的结构体TIM_OCInitStructure里的TIM_Pulse是什么意思,它是怎么设置脉冲值的?

最佳答案

查看完整内容[请看2#楼]

sorry,我在看同学的资料时偶然间看到了TIM-Pulse这个参数的意义。TIM_Pulse的值就是比较计数器TIM_CCR的值。这个寄存器与定时器的计数器TIM_CNT即本章的脉冲计数器的比较结果决定了PWM的占空比。 int main(void) { u16 led0pwmval=0; u8 dir=1; delay_init();  //延时函数初始化  LED_Init();  //初始化与 LED 连接的硬件接口 TIM1_PWM_Init(899,0);//不分频。 WM  ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2014-10-26
在线时间
11 小时
 楼主| 发表于 2014-11-19 19:24:03 | 显示全部楼层
sorry,我在看同学的资料时偶然间看到了TIM-Pulse这个参数的意义。TIM_Pulse的值就是比较计数器TIM_CCR的值。这个寄存器与定时器的计数器TIM_CNT即本章的脉冲计数器的比较结果决定了PWM的占空比。
int main(void)
{
u16 led0pwmval=0;
u8 dir=1;
delay_init();  //延时函数初始化 
LED_Init();  //初始化与 LED 连接的硬件接口
TIM1_PWM_Init(899,0);//不分频。 WM 频率=72000/(899+1)=80Khz
 while(1)
{
delay_ms(10);
if(dir)led0pwmval++;
else led0pwmval--;
if(led0pwmval>300)dir=0;
if(led0pwmval==0)dir=1; 
TIM_SetCompare1(TIM1,led0pwmval); 
}
}
TIM_SetCompare1(TIM1,led0pwmval);函数中的led0pwmval是寄存器TIM_CCR1的值原子哥的例程中设置的计数器TIM_CNT的周期为899+1=900,向上计数模式。当计数器TIM_CNT的值大于(或小于)比较计数器TIM_CCR值时输出高电平小于(或大于)TIM_CCR是输出低电平
以此来控制PWM的占空比
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-29 02:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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