Prosty kod włączajacy sygnał PWM na piny PC4 i PC5. Należy w opcjach projektu dodać "predefined symbols" "PART_LM4F230H5QR", gdyż bez tego biblioteka nie zwróci odpowiednich map dla naszego procesora. W zależności od płytki może być potrzebny inny zapis, więcej na forum TI link
#include "utils/ustdlib.h" #include "inc/hw_types.h" #include "inc/hw_memmap.h" #include "driverlib/sysctl.h" #include "driverlib/pin_map.h" #include "driverlib/debug.h" #include "driverlib/hibernate.h" #include "driverlib/gpio.h" #include "driverlib/systick.h" #include "driverlib/timer.h" #include "driverlib/pwm.h" int main(void) { SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_OSC_INT); // 40 MHz int SysCtlPWMClockSet(SYSCTL_PWMDIV_64); //PWM - pre-divided System Clock 625 kHz SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0); // PWM0 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); // PWM PC4 // Enable pin PC5 for PWM0 M0PWM7 GPIOPinConfigure(GPIO_PC4_M0PWM6); GPIOPinTypePWM(GPIO_PORTC_BASE, GPIO_PIN_5); // Enable pin PC4 for PWM0 M0PWM6 GPIOPinConfigure(GPIO_PC5_M0PWM7); GPIOPinTypePWM(GPIO_PORTC_BASE, GPIO_PIN_4); PWMGenConfigure(PWM0_BASE, PWM_GEN_3, PWM_GEN_MODE_DOWN| PWM_GEN_MODE_NO_SYNC); // PWM Count-Down Mode PWMGenPeriodSet(PWM0_BASE, PWM_GEN_3, 6249); // 100 Hz PWMPulseWidthSet(PWM0_BASE, PWM_OUT_6, 3124); // PC4 50% PWMPulseWidthSet(PWM0_BASE, PWM_OUT_7, 1562); // PC5 25% PWMGenEnable(PWM0_BASE, PWM_GEN_3); PWMOutputState(PWM0_BASE, (PWM_OUT_6_BIT | PWM_OUT_7_BIT), true); while(1) { } }
Sygnał generowany na pinach PC4 i PC5.
Funkcja PWMOutputInvert(PWM0_BASE, PWM_OUT_7_BIT, true)
Invert
Funkcja PWMGenConfigure(PWM0_BASE, PWM_GEN_3, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC)
up-down timer
Funkcja PWMDeadBandEnable(PWM0_BASE, PWM_GEN_3,300,100);
Dead-Band Generator