智能车制作

 找回密码
 注册

扫一扫,访问微社区

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

[分享] PWM不知道什么原因 求指教

[复制链接]

3

主题

34

帖子

0

精华

高级会员

Rank: 4

积分
676
威望
368
贡献
180
兑换币
167
注册时间
2012-8-31
在线时间
64 小时
毕业学校
厦门大学
跳转到指定楼层
1#
发表于 2013-3-5 16:51:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"

   void SetSysCLK_32M (void);
   void initPWM(void) ;
   
   void Pwm_init(void);
   
   
   void main(void)
   {
  /* put your own code here */
  
      SetSysCLK_32M;
      initPWM() ;
      EnableInterrupts;

  for(;;)
  {
   
         // PWMDTY45=2200;
        //  PWMDTY01=100;
        //  PWMDTY23=100;
      
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}

void Pwm_init(void)
{
    PWMPRCLK=0x22;
    PWMSCLA=4;
    PWMSCLB=4;
    PWMCTL_CON45=1;
    PWMCTL_CON23=1;
    PWMCTL_CON01=1;
    PWMCLK_PCLK1=1;
      PWMCLK_PCLK3=1;
        PWMCLK_PCLK5=1;
        PWMPER45=10000;
        PWMPER01=200;
        PWMPER23=200;
        PWMPOL_PPOL5=1;
         PWMPOL_PPOL1=0;
          PWMPOL_PPOL3=0;
          PWMCAE=0x00;
          PWME_PWME5=1;
          PWME_PWME3=1;
          PWME_PWME1=1;
}


void initPWM()
{
    PWME=0x00;              //禁止PWM

    PWMCTL=0x20;            //23级联,其他都不联级

    PWMCLK=0xFF;            //选择的PWM时钟源为ClockSA、ClockSB

    PWMPRCLK=0x22;          //ClockB预分频4,ClockA分频4

    PWMSCLA=2;             //ClockSA预分频4对ClockA的4分频在
   
    PWMSCLB=2;              //ClockSB预分频4对ClockB的4分频在

    PWMCAE=0;               //所有的通道左对齐

    PWMPOL=0xFF;            //所有PWM一开始输出高电平   
    PWMPER23=40000;         //重点计算的    PWM23周期  32M/(4*4)=2M  1/(2M)*40000=20ms
  
    PWMDTY23=3016;            //占空比///高电平的时间  
    PWMPER5=250;              //PWM5周期

   PWMDTY5=100;                //PWMDTY5大小与反向转速成正比

   PWMPER4=250;              //PWM4周期

   PWMDTY4=100;              //PWMDTY4大小与正向转速成正比
   PWME_PWME4=1;              //允许PWM输出
   PWME_PWME5=1;              //允许PWM输出
   PWME_PWME3=1;              //允许PWM输出

}

void SetSysCLK_32M (void)
{   
    CLKSEL = 0X00;    // disengage PLL to system
    PLLCTL_PLLON = 1;   // turn on PLL
    SYNR = 0x40|0x03;  // pllclock=2*osc*(1+SYNR)/(1+REFDV)=64MHz;                     
    REFDV = 0x80|0x01;
    POSTDIV = 0x00;  
    _asm (nop);          // BUS CLOCK=32M
    _asm (nop);
    while (!(CRGFLG_LOCK == 1));   // when pll is steady ,then use it;
    CLKSEL_PLLSEL = 1;          // engage PLL to system;
}

65

主题

514

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2110

论坛骨干奖章活跃会员奖章优秀会员奖章

威望
945
贡献
561
兑换币
564
注册时间
2012-10-15
在线时间
302 小时
2#
发表于 2013-3-5 19:22:30 | 只看该作者
不是吧,你这样提问题谁也没空给你看啊
要把问题问得详细一点,才有针对性,别人也才好回复你
O(∩_∩)O~
回复 支持 反对

使用道具 举报

3

主题

34

帖子

0

精华

高级会员

Rank: 4

积分
676
威望
368
贡献
180
兑换币
167
注册时间
2012-8-31
在线时间
64 小时
毕业学校
厦门大学
3#
 楼主| 发表于 2013-3-5 19:47:46 | 只看该作者
蛋求无悔 发表于 2013-3-5 19:22
不是吧,你这样提问题谁也没空给你看啊
要把问题问得详细一点,才有针对性,别人也才好回复你
O(∩_∩)O~

谢谢  问题已搞定。。。。。。。。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 21:41 , Processed in 0.052606 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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