3087|1

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

帮忙看下为什么不产生PWM波啊 [复制链接]

我用的芯片是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); GPIOPinConfigure(GPIO_PH7_PWM5);  详情 回复 发表于 2012-8-10 13:43

点评

楼主,你少了引脚复用配置: 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
点赞 关注
 

回复
举报

1803

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

回复 楼主 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);
此帖出自ARM技术论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表