【MPC5744P】S32DS配置etimer, pit中断

DEVKIT-mpc5744p配置etimer中断

软件:S32 Design Studio for Power Architecture Version 2.1
新建工程,配置与生成代码
本文工程下载

  1. Components双击添加eTimer模块, 改名
    在这里插入图片描述
  2. 改成上下沿计数模式
    在这里插入图片描述
  3. 主要时钟输入改为分频输入
    在这里插入图片描述
  4. 双击ClockMan1, 可以看到eTimer1的时钟源也是MOTC, 下边可以改MOTC的时钟源, 最后一个选项卡可以看eTimer具体时钟频率
    在这里插入图片描述
  5. 保存,生成代码
  6. 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));
    
  7. 编译,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 */
}

猜你喜欢

转载自blog.csdn.net/weixin_46143152/article/details/125605983