PWM实验程序解析

PWM实验程序解析

//PWM实验程序解析
//头文件
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/rom.h"
#include "driverlib/gpio.h"
#include "driverlib/pwm.h"
#include "driverlib/fpu.h"
#include "driverlib/pin_map.h"

int main (void)
{
  //使能FPU
  FPUEnable();
  FPULazyStackingEnable();

  //设置系统时钟为50MHz
  SysCtlClockSet(SYSCTL_SYSDIV_4 |SYSCTL_USE_PLL 
|SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);

  //使能PWM模块
  ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM); 
  //使能PWM2和PWM3输出所在GPIO
  ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH); 
  //配置PH0/PH1为PWM功能
  ROM_GPIOPinTypePWM(GPIO_PORTH_BASE, GPIO_PIN_0); 
  ROM_GPIOPinTypePWM(GPIO_PORTH_BASE, GPIO_PIN_1); 

  // PWM时钟配置:不分频
  ROM_SysCtlPWMClockSet(SYSCTL_PWMDIV_1); 
  //配置PWM发生器1:加减计数 
  ROM_PWMGenConfigure(PWM_BASE,     
                    PWM_GEN_0,PWM_GEN_MODE_UP_DOWN 
| PWM_GEN_MODE_NO_SYNC);
   //设置PWM发生器1的周期 
  ROM_PWMGenPeriodSet(PWM_BASE, PWM_GEN_0, 6000); 
  //设置PWM2/PWM3输出的脉冲宽度
  ROM_PWMPulseWidthSet(PWM_BASE, PWM_OUT_0, 4200); 
  ROM_PWMPulseWidthSet(PWM_BASE, PWM_OUT_1, 1800);
  //使能PWM2和PWM3的输出 
  ROM_PWMOutputState(PWM_BASE, (PWM_OUT_0_BIT | 
                       PWM_OUT_1_BIT), true);
  //使能PWM发生器1
  ROM_PWMGenEnable(PWM0_BASE, PWM_GEN_0); 

while(1);
   {
   }
}

猜你喜欢

转载自blog.csdn.net/qq_38470434/article/details/106041789
PWM