1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| #include "driverlib.h" #include "device.h"
#define PWM_PERIOD 5000
void EPWM_Init_ThreePhase(void) { GPIO_setPinConfig(GPIO_0_EPWM1_A); GPIO_setPinConfig(GPIO_1_EPWM1_B);
GPIO_setPinConfig(GPIO_2_EPWM2_A); GPIO_setPinConfig(GPIO_3_EPWM2_B);
GPIO_setPinConfig(GPIO_4_EPWM3_A); GPIO_setPinConfig(GPIO_5_EPWM3_B);
EPWM_setTimeBaseCounterMode(EPWM1_BASE, EPWM_COUNTER_MODE_STOP_FREEZE); EPWM_setClockPrescaler(EPWM1_BASE, EPWM_CLOCK_DIVIDER_1, EPWM_HSCLOCK_DIVIDER_1); EPWM_setTimeBasePeriod(EPWM1_BASE, PWM_PERIOD); EPWM_setPhaseShift(EPWM1_BASE, 0); EPWM_disablePhaseShiftLoad(EPWM1_BASE); EPWM_setSyncOutPulseMode(EPWM1_BASE, EPWM_SYNC_OUT_PULSE_ON_COUNTER_ZERO);
EPWM_setTimeBaseCounterMode(EPWM2_BASE, EPWM_COUNTER_MODE_STOP_FREEZE); EPWM_setClockPrescaler(EPWM2_BASE, EPWM_CLOCK_DIVIDER_1, EPWM_HSCLOCK_DIVIDER_1); EPWM_setTimeBasePeriod(EPWM2_BASE, PWM_PERIOD); EPWM_setPhaseShift(EPWM2_BASE, PWM_PERIOD / 3); EPWM_enablePhaseShiftLoad(EPWM2_BASE); EPWM_setPhaseShiftLoadMode(EPWM2_BASE, EPWM_PHASE_SHIFT_LOAD_ON_SYNC_IN);
EPWM_setTimeBaseCounterMode(EPWM3_BASE, EPWM_COUNTER_MODE_STOP_FREEZE); EPWM_setClockPrescaler(EPWM3_BASE, EPWM_CLOCK_DIVIDER_1, EPWM_HSCLOCK_DIVIDER_1); EPWM_setTimeBasePeriod(EPWM3_BASE, PWM_PERIOD); EPWM_setPhaseShift(EPWM3_BASE, PWM_PERIOD * 2 / 3); EPWM_enablePhaseShiftLoad(EPWM3_BASE); EPWM_setPhaseShiftLoadMode(EPWM3_BASE, EPWM_PHASE_SHIFT_LOAD_ON_SYNC_IN);
uint32_t epwm_bases[] = {EPWM1_BASE, EPWM2_BASE, EPWM3_BASE}; for(int i = 0; i < 3; i++) { EPWM_setActionQualifierAction(epwm_bases[i], EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_HIGH, EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO); EPWM_setActionQualifierAction(epwm_bases[i], EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_LOW, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setDeadBandDelayMode(epwm_bases[i], EPWM_DB_RED, true); EPWM_setDeadBandDelayMode(epwm_bases[i], EPWM_DB_FED, true); EPWM_setRisingEdgeDelayCount(epwm_bases[i], 100); EPWM_setFallingEdgeDelayCount(epwm_bases[i], 100); }
EPWM_setTimeBaseCounterMode(EPWM1_BASE, EPWM_COUNTER_MODE_UP); EPWM_setTimeBaseCounterMode(EPWM2_BASE, EPWM_COUNTER_MODE_UP); EPWM_setTimeBaseCounterMode(EPWM3_BASE, EPWM_COUNTER_MODE_UP); }
void main(void) { Device_init(); Device_initGPIO();
EPWM_Init_ThreePhase();
EPWM_setCounterCompareValue(EPWM1_BASE, EPWM_COUNTER_COMPARE_A, PWM_PERIOD / 2); EPWM_setCounterCompareValue(EPWM2_BASE, EPWM_COUNTER_COMPARE_A, PWM_PERIOD / 2); EPWM_setCounterCompareValue(EPWM3_BASE, EPWM_COUNTER_COMPARE_A, PWM_PERIOD / 2);
while(1); }
|