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);
   {
   }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章