You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
2.0 KiB

#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();
}
}