@floatsd
2016-01-02T08:56:49.000000Z
字数 2096
阅读 1980
CM4实验报告
- 熟悉和掌握PWM模块的工作原理、模块结构和软件编程方法。
- 学会调整输出周期和占空比
板子上提供4个PWM发生器模块和一个控制模块,一共有8路PWM信号输出。每个PWM发生器输出2路PWM信号,分别是PWMA和PWMB,他们的可以选择是否共享时钟和频率,整个四个PWM模块之间的关系如下图所示:

实验程序流程:
/******************************************************************** 函数: PWM_Init()* 描述: PWM初始化* 输入值:无* 返回值:无*****************************************************************/void PWM_Init(){SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);PWMGenConfigure(PWM0_BASE, PWM_GEN_0|PWM_GEN_1,PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);//配置系统时钟和配置重载值(如蜂鸣器,要注意范围2khz-4khz)PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0|PWM_GEN_1, 10000);PWMPulseWidthSet(PWM0_BASE,PWM_OUT_1|PWM_OUT_2|PWM_OUT_3|PWM_OUT_4|PWM_OUT_5|PWM_OUT_6|PWM_OUT_7|PWM_OUT_0,50);//PWM输出使能PWMOutputState(PWM0_BASE, PWM_OUT_0_BIT |PWM_OUT_1_BIT |PWM_OUT_2_BIT | PWM_OUT_3_BIT, true);//PWM把发生器使能PWMGenEnable(PWM0_BASE, PWM_GEN_0);PWMGenEnable(PWM0_BASE, PWM_GEN_1);}
/******************************************************************** 函数: breathLED_run()* 描述: 使呼吸灯闪烁,这里用循环让占空比从变大到变小,再利用PWMPulseWidthSet() 每次循环改变占空比形成亮灭。* 输入值:无* 返回值:无*****************************************************************/void breathLED_run(){while(1){for(ui32Loop=0;ui32Loop<1000;ui32Loop++){;}PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1,PWMPulseWidth);PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2,PWMPulseWidth);PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3,PWMPulseWidth);PWMPulseWidth += flip;if(PWMPulseWidth >= 9990){flip = -5;}else if(PWMPulseWidth <= 50){flip = 5;}}}