初学嵌入式开发,一个呼吸灯例程,大家帮忙看一下,谢谢!
#include <stdint.h>
#include <stdbool.h>
#include <math.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/fpu.h"
#include "driverlib/gpio.h"
#include "driverlib/debug.h"
#include "driverlib/pwm.h"
#include "driverlib/pin_map.h"
#include "inc/hw_gpio.h"
#define APP_PI 3.1415926535897932384626433832795f
#define PWM_FREQUENCY 100
#define STEPS 256
int main(void)
{
volatile uint32_t ui32Load;
volatile uint32_t ui32BlueLevel;
volatile uint32_t ui32PWMClock;
volatile uint32_t ui32SysClkFreq;
volatile uint32_t ui32Index;
float fAngle;
uint8_t ui8PinData = 3;
ui32SysClkFreq = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480),120000000);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,GPIO_PIN_2 | GPIO_PIN_3);
//GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2 | GPIO_PIN_3, 0x00);
GPIOPinWrite(GPIO_PORTN_BASE,GPIO_PIN_0 | GPIO_PIN_1, 0x02);
PWMClockSet(PWM0_BASE, PWM_SYSCLK_DIV_64);
GPIOPinTypePWM(GPIO_PORTF_BASE, PWM_GEN_2 );
ui32PWMClock = ui32SysClkFreq / 64;
ui32Load = (ui32PWMClock / PWM_FREQUENCY) - 1;
PWMGenConfigure(PWM0_BASE, PWM_GEN_2, PWM_GEN_MODE_DOWN);
PWMGenPeriodSet(PWM0_BASE, PWM_GEN_2, ui32Load);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_4, ui32Load/2);
PWMGenEnable(PWM0_BASE, PWM_GEN_2);
PWMOutputState(PWM0_BASE, (PWM_OUT_4_BIT ), 1);
ui32Index = 0;
while(1)
{
fAngle = ui32Index * (2.0f * APP_PI/STEPS);
ui32BlueLevel = (uint32_t) (9370.0f * (1 + sinf(fAngle)));
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_4, ui32BlueLevel);
ui32Index++;
if (ui32Index == (STEPS - 1))
{
ui32Index = 0;
}
SysCtlDelay(ui32SysClkFreq/STEPS);
}
}