DEVKIT-mpc5744p配置etimer中断
软件:S32 Design Studio for Power Architecture Version 2.1
新建工程,配置与生成代码
本文工程下载
Components
双击添加eTimer
模块, 改名
- 改成上下沿计数模式
- 主要时钟输入改为分频输入
- 双击ClockMan1, 可以看到eTimer1的时钟源也是MOTC, 下边可以改MOTC的时钟源, 最后一个选项卡可以看eTimer具体时钟频率
- 保存,生成代码
- 在
main.c
里添加业务代码// 中断函数 void ETIMER0_Ch0_IRQHandler(void) { #define CNT_TIMEOUT 2 static uint32_t cnt=CNT_TIMEOUT; if(--cnt==0) { /* RED LED toggle */ PINS_DRV_TogglePins(PTC,(1 << 12)); cnt=CNT_TIMEOUT; } /* need to reset flags */ ETIMER_DRV_ClearInterruptStatus(0,ETIMER_CH_IRQ_FLAGS_TOF,0); } // 定时器中断的初始化 /* setup ETIMERx channels */ ETIMER_DRV_Init(INST_ETIMER0); ETIMER_DRV_InitChannel(INST_ETIMER0, 0, &eTimer0_etimer_user_channel_config0); /* Enable ETIMER0 channel 0 interrupt and install an ISR */ IRQn_Type etimer0_ch0_irq_id = ETIMER_DRV_GetInterruptNumber(0,ETIMER_IRQ_CH0); INT_SYS_InstallHandler(etimer0_ch0_irq_id, &ETIMER0_Ch0_IRQHandler, (isr_t*) 0); INT_SYS_EnableIRQ(etimer0_ch0_irq_id); /* enable interrupts */ ETIMER_DRV_EnableInterruptSource(INST_ETIMER0,ETIMER_CH_IRQ_SOURCE_TOFIE,0); /* start channel operation */ ETIMER_DRV_StartTimerChannels(INST_ETIMER0, (ETIMER_ENABLE_CH0));
- 编译,Debug
pit中断
PIT_DRV_Init(INST_PIT1, &pit1_InitConfig);
PIT_DRV_InitChannel(INST_PIT1, &pit1_ChnConfig0);
PIT_DRV_StartChannel(INST_PIT1, pit1_ChnConfig0.hwChannel);
void PIT_Ch0_IRQHandler(void)
{
PINS_DRV_TogglePins(PTC, (1<<13));
PIT_DRV_ClearStatusFlags(INST_PIT1, pit1_ChnConfig0.hwChannel); /* Clear channel 0 interrupt flag */
}