#include "timer12.h" #include "gpio_state_led.h" #define TIMER1n_PERIPHERAL TIMER12 #define TIMER1n_IRQ_TYPE TIMER12_IRQn #define TIMER1n_INTERRUPT_MASK MSK_TIMER12 static TIMER_CALLBACK Timer12_Match_Callback = NULL; void Timer12_Initialization(void) { TIMER1n_PERIODICCFG_Type TIMER1n_Config; TIMER1n_Config.CkSel = TIMER1n_PCLK; // PCLK = 40MHz TIMER1n_Config.Prescaler = 40; // fTIMER = PCLK / 40 = 1MHz TIMER1n_Config.ADR = ( 1000 ); // Period = ADR / fTIMER = 1000us TIMER1n_Config.StartLevel = TIMER1n_START_LOW; TIMER1n_Config.BDR = 0; // Duty(B) = BDR / fTIMER = 0us // dummy parameter TIMER1n_Config.ECE = TIMER1n_FALLING_EGDE; // dummy parameter HAL_TIMER1n_Init((TIMER1n_Type*)TIMER1n_PERIPHERAL, TIMER1n_PERIODIC_MODE, &TIMER1n_Config); HAL_TIMER1n_ConfigInterrupt((TIMER1n_Type*)TIMER1n_PERIPHERAL, TIMER1n_INTCFG_MIE, ENABLE); NVIC_SetPriority(TIMER1n_IRQ_TYPE, 3); NVIC_EnableIRQ(TIMER1n_IRQ_TYPE); HAL_INT_EInt_MaskDisable(TIMER1n_INTERRUPT_MASK); HAL_TIMER1n_Cmd((TIMER1n_Type*)TIMER1n_PERIPHERAL, ENABLE ); // timer start & clear } void Timer12_Set_Match_Interrupt_Callback(TIMER_CALLBACK Callback) { Timer12_Match_Callback = Callback; } /*----------------- INTERRUPT SERVICE ROUTINES --------------------------*/ /*********************************************************************//** * @brief Timer12 interrupt handler sub-routine * @param[in] None * @return None **********************************************************************/ void TIMER12_Handler(void) { // TODO : Type your code here uint32_t status; status = T1nMaInt_GetFg(TIMER1n_PERIPHERAL); if (status == 1) { T1nMaInt_ClrFg(TIMER1n_PERIPHERAL); if(Timer12_Match_Callback != NULL) Timer12_Match_Callback(); } }