| 
 TimerA的初始化配置代码,在main.c中初始化,具体如下:
 static void Timera_Config(void)
 {
 stc_timera_base_init_t stcTimeraInit;
 stc_timera_compare_init_t stcTimerCompareInit;
 stc_irq_regi_conf_t stcIrqRegiConf;
 stc_port_init_t stcPortInit;
 
 /* configuration structure initialization */
 MEM_ZERO_STRUCT(stcTimeraInit);
 MEM_ZERO_STRUCT(stcIrqRegiConf);
 MEM_ZERO_STRUCT(stcTimerCompareInit);
 MEM_ZERO_STRUCT(stcPortInit);
 
 /* Configuration peripheral clock */
 PWC_Fcg2PeriphClockCmd(TIMERA_UNIT4_CLOCK, Enable);
 PWC_Fcg0PeriphClockCmd(PWC_FCG0_PERIPH_AOS, Enable);
 
 /* Configuration TIMERA compare pin */
 PORT_SetFunc(TIMERA_UNIT4_CH2_PORT, TIMERA_UNIT4_CH2_PIN, TIMERA_UNIT4_CH2_FUNC, Disable);
 
 /* Configuration timera unit 4 base structure */
 stcTimeraInit.enClkDiv = TimeraPclkDiv128;  //84M/128 = 656.25Khz
 stcTimeraInit.enCntMode = TimeraCountModeTriangularWave; //TriangularWave
 stcTimeraInit.enCntDir = TimeraCountDirUp;
 stcTimeraInit.enSyncStartupEn = Disable;
 stcTimeraInit.u16PeriodVal = PERIOD_VAL;        //freq: 100Hz; cd0/hex = 3280/dec
 TIMERA_BaseInit(TIMERA_UNIT4, &stcTimeraInit);
 
 /* Configuration timera unit 4 compare structure */
 stcTimerCompareInit.u16CompareVal = stcTimeraInit.u16PeriodVal * 4u / 5u; //duty cycle: (1-80%)=20%
 stcTimerCompareInit.enStartCountOutput = TimeraCountStartOutputLow;
 stcTimerCompareInit.enStopCountOutput = TimeraCountStopOutputLow;
 stcTimerCompareInit.enCompareMatchOutput = TimeraCompareMatchOutputReverse;
 stcTimerCompareInit.enPeriodMatchOutput = TimeraPeriodMatchOutputKeep;
 stcTimerCompareInit.enSpecifyOutput = TimeraSpecifyOutputInvalid;
 //stcTimerCompareInit.enCacheEn = Enable;
 //stcTimerCompareInit.enTriangularTroughTransEn = Enable;
 //stcTimerCompareInit.enTriangularCrestTransEn = Disable;
 //stcTimerCompareInit.u16CompareCacheVal = stcTimerCompareInit.u16CompareVal;
 
 /* Configure Channel 2 */
 TIMERA_CompareInit(TIMERA_UNIT4, TIMERA_UNIT4_CH2, &stcTimerCompareInit);
 TIMERA_CompareCmd(TIMERA_UNIT4, TIMERA_UNIT4_CH2, Enable);
 
 /* Enable period count interrupt */
 TIMERA_IrqCmd(TIMERA_UNIT4, TimeraIrqOverflow, Enable);
 /* Interrupt of timera unit 4 */
 stcIrqRegiConf.enIntSrc = TIMERA_UNIT4_OVERFLOW_INT;
 stcIrqRegiConf.enIRQn = Int006_IRQn;
 stcIrqRegiConf.pfnCallback = &TimeraUnit4_IrqCallback;
 enIrqRegistration(&stcIrqRegiConf);
 NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn);
 NVIC_SetPriority(stcIrqRegiConf.enIRQn, DDL_IRQ_PRIORITY_15);
 NVIC_EnableIRQ(stcIrqRegiConf.enIRQn);
 
 /* Configure timera unit 4 disable */
 TIMERA_Cmd(TIMERA_UNIT4, Disable);
 }
 
 通过PUMP_ON来启动pwm波,PUMP_ON在中断函数中调用:
 /* TIMERA PWM parameter definition */
 #define PERIOD_VAL     0xCD0u
 #define DUTY_CYLCE     (0.4)    //duty cycle: 0~1, except 0 and 1; duty_cycle = u16Compare/u16Period = COMPARE_VAL/PERIOD_VAL
 #define COMPARE_VAL    (PERIOD_VAL * (1-DUTY_CYLCE))
 
 #define PUMP_ON()                               {TIMERA_Cmd(TIMERA_UNIT4, Enable);TIMERA_SetCompareValue(TIMERA_UNIT4, TIMERA_UNIT4_CH2, COMPARE_VAL);}
 #define PUMP_OFF()                              TIMERA_Cmd(TIMERA_UNIT4, Disable)
 |