智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1279|回复: 2
打印 上一主题 下一主题

[咨询] 新手求解有关PWM程序的频率与设定不符

[复制链接]

11

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1105
威望
356
贡献
199
兑换币
203
注册时间
2012-11-4
在线时间
275 小时
跳转到指定楼层
1#
发表于 2013-4-21 15:22:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
才弄XS128不久,弄了很久的PWM模块了,时钟无法正确输出想要的频率和占空比。请大神指教一下。


我的程序如下:
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */


#include"PWM.h"
#include"PLL.h"

//==============函数声明=========================//
void  PWM_Init(void);
void  PLL_Init(void);


//==============PLL_Init()函数=====================//
  void  PLL_Init(void)   {
     CLKSEL=0x00;
     PLLCTL&=0xbf;                                                                                  //倍频后产生64M的频率。
     SYNR=0x03;
     REFDV=0x01;
     PLLCTL|=(1<<6);
     asm     NOP;
     asm     NOP;
     asm     NOP;
     while(CRGFLG_LOCK==1) ;                                                             //CRGFLG寄存器中LOCK置位表示稳定
     CLKSEL_PLLSEL=1;

  }

   //==============PWM_Init函数=====================//
void  PWM_Init(void) {
PWME=0x00;                                                                                               //总线时钟为32M
PWMPRCLK=0x44;                                                                                     //内部时钟频率均为2M
PWMCLK=0xff;                                                                                            //所有通道都以0.1 4.5为SA,2.3.6.7为SB时钟
PWMSCLA=4;                                                                                              //SA时钟为250KHz
PWMSCLB=5;                                                                                              //SB时钟为200Khz
PWMPOL=0xff;                                                                                          //极性为输出为高电平
PWMCAE=0x00;                                                                                         //输出为左对齐输出
PWMCTL=0xff;                                                                                            //全部级联
PWMPER67= 200;                                                                                      //6.7通道的输出频率为1KHZ
PWMPER45=100;                                                                                      //4.5通道的输出频率为2.5KHZ
PWMPER23=400;                                                                                       //2.3通道的输出频率为0.5KHZ/ PWMPER01=200;                                                                                       //0.1通道的输出频率为1.25Khz
PWMDTY67= 40;                                                                                      //6.7通道占空比为20%
PWMDTY45= 80;                                                                                       //5.4 通道占空比为80%
PWMDTY23= 200;                                                                                //2.3通道占空比为  50%
PWMDTY01= 80;                                                                                       //1.0占空比为40%
PWME=0xff;



}

//===============主函数=========================//
void main(void) {
PLL_Init() ;
PWM_Init() ;
while(1);





}


求大神帮帮忙,实在不知道怎么办呢。





11

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1105
威望
356
贡献
199
兑换币
203
注册时间
2012-11-4
在线时间
275 小时
3#
 楼主| 发表于 2013-4-21 20:47:45 | 只看该作者
穆旦阿斗 发表于 2013-4-21 19:49
慢慢的一个一个对吧  首先看看PLL

嗯,谢了,已经找出来问题了。弄了我好几天了。
回复 支持 反对

使用道具 举报

42

主题

1054

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3034

优秀会员奖章活跃会员奖章

QQ
威望
1650
贡献
780
兑换币
625
注册时间
2012-7-6
在线时间
302 小时
2#
发表于 2013-4-21 19:49:31 | 只看该作者
慢慢的一个一个对吧  首先看看PLL
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 04:02 , Processed in 0.257435 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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