HC32F488定时器timer4_1初始化例程
`
/******************************************************************************
Function:
Description: TMR4 Count valley interrupt handler callback.
******************************************************************************/
static void TMR4_1_CountValley_IrqCallback(void)
{
TMR4_ClearStatus(CM_TMR4_1, TMR4_FLAG_CNT_VALLEY);
}
/******************************************************************************
Function:
Description: timer4_1定时器初始化
将0号中断请求与timer4_1更新事件进行绑定
******************************************************************************/
void bsp_timer4_1_Init(void)
{
stc_tmr4_init_t stcTmr4Init;
stc_irq_signin_config_t stcIrqConfig;
/* Enable TMR4 peripheral clock */
FCG_Fcg0PeriphClockCmd(FCG0_PERIPH_AOS, ENABLE); // 开启自动运行系统时钟
FCG_Fcg2PeriphClockCmd(FCG2_PERIPH_TMR4_1, ENABLE); // 使能定时器时钟
/* Initialize TMR4 Counter */
stcTmr4Init.u16CountMode = TMR4_MD_SAWTOOTH; // 锯齿计数模式
stcTmr4Init.u16ClockSrc = TMR4_CLK_SRC_INTERNCLK; // 时钟源
stcTmr4Init.u16ClockDiv = TMR4_CLK_DIV128; // 分频系数据
stcTmr4Init.u16PeriodValue = (1000-1); // 设置周期
(void)TMR4_Init(CM_TMR4_1, &stcTmr4Init);
// 设置溢出时跳过的中断个数,用于降低中断个数
TMR4_SetCountIntMaskTime(CM_TMR4_1, TMR4_INT_CNT_VALLEY, TMR4_INT_CNT_MASK0);
/* Register IRQ handler && configure NVIC. */
// 将中断事件和中断号进行绑定
stcIrqConfig.enIRQn = INT000_IRQn; // 中断号
stcIrqConfig.enIntSrc = INT_SRC_TMR4_1_UDF; // 中断事件号
stcIrqConfig.pfnCallback = &TMR4_1_CountValley_IrqCallback; // 注册回调函数
(void)INTC_IrqSignIn(&stcIrqConfig);
NVIC_ClearPendingIRQ(stcIrqConfig.enIRQn); // 清中断标志
NVIC_SetPriority(stcIrqConfig.enIRQn, DDL_IRQ_PRIO_DEFAULT); // 设置中断优先级
NVIC_EnableIRQ(stcIrqConfig.enIRQn);
/* Enable the valley interrupt */
TMR4_IntCmd(CM_TMR4_1, TMR4_INT_CNT_VALLEY, ENABLE); // 使能中断
// 硬件触发定时器启动(外部按键启动)
//AOS_SetTriggerEventSrc(AOS_TMR4_0, EVT_SRC_PORT_EIRQ6); // 设置事件与动作连接
//TMR4_HWStartCmd(CM_TMR4_1, ENABLE);
// 软件启动定时器(直接启动)
TMR4_Start(CM_TMR4_1); // 开启定时器
}
`

浙公网安备 33010602011771号