社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 1304|回复: 1

[讨论] 帮忙看下为什么不产生PWM波啊

[复制链接]

3

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2012-8-9 17:27:17 | 显示全部楼层 |阅读模式
我用的芯片是LM3S2B93,keil4工程,调试pwm时怎么也产生不了PWM,其他功能正常,大家帮忙看下是怎么回事啊~急急!!

unsigned long gSysClock = 12000000UL;
#define PWM_FREQ    6000               //PWM频率,单位HZ
//管脚复用情况
#define PJ0_PWM0   GPIO_PIN_0
#define PG3_PWM1  GPIO_PIN_3
#define PD2_PWM2  GPIO_PIN_2
#define PD3_PWM3  GPIO_PIN_3
#define PG0_PWM4  GPIO_PIN_0
#define PH7_PWM5  GPIO_PIN_7
/*********************************************************************************************************  
** Function name:       void PWMInit (void)   
** Descriptions:     PWM模块初始化
** input parameters:    NONE  
** output parameters:   NONE  
** Returned value:      NONE  
*********************************************************************************************************/   
void PWMInit (void)   
{   
    int32U Period = 0;
   
    SysctlPWMClockSet(SYSCTL_PWMDIV_1);                         //  PWM时钟配置:不分频     
    SysCtlPeriEnable(SYSCTL_PERIPH_PWM);                          //   使能PWM模块 时钟              
      
    SysCtlPeriEnable(SYSCTL_PERIPH_GPIOD);                       //   使能PWM2和PWM3输出所在GPIO
    SysCtlPeriEnable(SYSCTL_PERIPH_GPIOH);                       //   使能PWM5输出所在GPIO
    SysCtlPeriEnable(SYSCTL_PERIPH_GPIOG);                       //   使能PWM1和PWM4输出所在GPIO
    SysCtlPeriEnable(SYSCTL_PERIPH_GPIOJ);                        //   使能PWM0输出所在GPIO

    GPIOPinTypePWM(GPIO_PORTJ_BASE, GPIO_PIN_0);        //   PJO配置为PWM0功能
    GPIOPinTypePWM(GPIO_PORTG_BASE, GPIO_PIN_3);        //   PG3配置为PWM1功能
    GPIOPinTypePWM(GPIO_PORTD_BASE, GPIO_PIN_2);        //   PD2配置为PWM2功能
    GPIOPinTypePWM(GPIO_PORTD_BASE, GPIO_PIN_3);        //   PD3配置为PWM3功能
    GPIOPinTypePWM(GPIO_PORTG_BASE, GPIO_PIN_0);        //   PG0配置为PWM4功能
    GPIOPinTypePWM(GPIO_PORTH_BASE, GPIO_PIN_7);        //   PH7配置为pwm5功能
    // 配置PWM发生器0:加减计数
    PWMGenConfigure(PWM_BASE, PWM_GEN_0|PWM_GEN_1|PWM_GEN_2, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC);
   
    Period = gSysClock / PWM_FREQ;
    PWMGenPeriodSet(PWM_BASE, PWM_GEN_0|PWM_GEN_1|PWM_GEN_2, Period);        //  设置PWM周期T = (1s/gSysClock)*Period   
    PWmpulseWidthSet(PWM_BASE, PWM_OUT_0|PWM_OUT_1|PWM_OUT_2|PWM_OUT_3
        |PWM_OUT_4|PWM_OUT_5, Period / 2);                                //占空比50 %
    PWMOutputState(PWM_BASE, PWM_OUT_0_BIT|PWM_OUT_1_BIT|PWM_OUT_2_BIT
        |PWM_OUT_3_BIT|PWM_OUT_4_BIT|PWM_OUT_5_BIT, true);                   //允许PWM输出
    PWMGenEnable(PWM_BASE, PWM_GEN_0|PWM_GEN_1|PWM_GEN_2);                      // 在PWM0 PWM1 PWM2通道产生PWM波形
}


//  系统时钟初始化
void clockInit(void)
{
/*
    SysCtlldoSet(SYSCTL_LDO_2_50V);                 //  设置LDO输出电压
    SysCtlClockSet(SYSCTL_USE_osc |                 //  系统时钟设置
                   SYSCTL_OSC_MAIN |                       //  采用主振荡
                   SYSCTL_XTAL_12MHZ |                    //  外接12MHz晶振
                   SYSCTL_SYSDIV_1);                        //  不分频
   */
   SysCtlLDOSet(SYSCTL_LDO_2_75V);               //  配置pll前须将LDO设为2.75V
    SysCtlClockSet(SYSCTL_USE_PLL |                 //  系统时钟设置,采用PLL
                   SYSCTL_OSC_MAIN |                     //  主振荡器
                   SYSCTL_XTAL_12MHZ |                  //  外接12MHz晶振
                SYSCTL_SYSDIV_4);                         // 200MHz 分频结果为50MHz
               
    gSysClock = SysCtlClockGet();                 //  获取当前的系统时钟频率
}
//  主函数(程序入口)
int  main (void)
{
    clockInit();                                            //  时钟初始化:晶振,6MHz
    PWMInit();
    SysCtlPeriEnable(LED_PERIPH);                           //  使能LED所在的GPIO端口
    GPIOPinTypeOut(LED_PORT, LED_PIN);                      //  设置LED所在管脚为输出

    while(1)
    {
        GPIOPinWrite(LED_PORT,LED_PIN,~GPIOPinRead(LED_PORT,LED_PIN));    //PC4取反  
        SysCtlDelay(500* (gSysClock / 3000));            //  延时500ms
    }
}
此帖出自ARM技术论坛

点评

楼主,你少了引脚复用配置: GPIOPinConfigure(GPIO_PJ0_PWM0); GPIOPinConfigure(GPIO_PG3_PWM1); GPIOPinConfigure(GPIO_PD2_PWM2); GPIOPinConfigure(GPIO_PD3_PWM3); GPIOPinConfigure(GPIO_PG0_PWM4); G  详情 回复 发表于 2012-8-10 13:43


回复

使用道具 举报

1887

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

发表于 2012-8-10 13:43:32 | 显示全部楼层

回复 楼主 hwttyzh 的帖子

楼主,你少了引脚复用配置:
GPIOPinConfigure(GPIO_PJ0_PWM0);
GPIOPinConfigure(GPIO_PG3_PWM1);
GPIOPinConfigure(GPIO_PD2_PWM2);
GPIOPinConfigure(GPIO_PD3_PWM3);
GPIOPinConfigure(GPIO_PG0_PWM4);
GPIOPinConfigure(GPIO_PH7_PWM5);


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-11-20 15:25 , Processed in 0.588246 second(s), 22 queries , Redis On.

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