The ETPWM driver fails initialization (hangs forever) under the IAR compiler because the definition of etpwmBASE is not volatile. This can be fixed by changing the definition in reg_etpwm.h from:
typedef struct etpwmBASE
to:
typedef volatile struct etpwmBASE
in both places that it exists. The same problem may exist in reg_pom.h, reg_eqep.h, reg_ecap.h, and other files.
-Jeremy