这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 行业应用 » 汽车电子 » 【S32K3XX】FLASH 中断使用

共1条 1/1 1 跳转至

【S32K3XX】FLASH 中断使用

高工
2026-07-03 16:22:28     打赏

【简介】

查看S32K3 的芯片手册时发现C40IP(FLASH)是有中断信号输出到MCU的,对应的寄存器信号描述如下:

image.png

我们开启此信号触发中断来验证 Flash 的中断功能,S32DS 中断配置中开启FLASH1 的中断配置。

image.png

本地在之前擦除 flash 功能验证(【S32K3XX】Flash驱动使用)的测试代码基础上使能 flash 中断。

#if (1 == CFG_C40_IRQ_ENABLE)
void Flash0_IRQHandler(void)
{
    IP_FLASH->MCR &= ~FLASH_MCR_PECIE_MASK;
    PRINTF("Flash0_IRQHandler MCR %lx MCRS %lx \r\n", IP_FLASH->MCR, IP_FLASH->MCRS);
    /* clear flag */
    IP_FLASH->MCR &= ~FLASH_MCR_EHV_MASK;
    IP_FLASH->MCR &= ~FLASH_MCR_ERS_MASK;
    IP_FLASH->MCR &= ~FLASH_MCR_PGM_MASK;
    PRINTF("Flash0_IRQHandler MCR %lx MCRS %lx \r\n", IP_FLASH->MCR, IP_FLASH->MCRS);
}

void Flash1_IRQHandler(void)
{
    PRINTF("Flash1_IRQHandler %lx \r\n", IP_FLASH->MCRS);
}

void Flash2_IRQHandler(void)
{
    PRINTF("Flash2_IRQHandler %lx \r\n", IP_FLASH->MCRS);
}
#endif


void flash_erase_test(void)
{
    C40_Ip_StatusType t_ReturnValue = C40_IP_STATUS_ERROR;

    t_ReturnValue = C40_Ip_ClearLock(FLS_SECTOR_TEST, FLS_MASTER_ID);
    if(C40_IP_STATUS_SUCCESS != t_ReturnValue)
    {
        /* erase failed */
        PRINTF("Flash clear lock failed %x \r\n", t_ReturnValue);
    }
    else
    {
        PRINTF("Flash clear lock success \r\n");
    }
#if (1 == CFG_C40_IRQ_ENABLE)
    /* Enable flash interrupts */
    IP_FLASH->MCR |= FLASH_MCR_PECIE_MASK;
#endif
    /* erase 0x50_0000  */
    t_ReturnValue = C40_Ip_MainInterfaceSectorErase(FLS_SECTOR_TEST, FLS_MASTER_ID);
    if(C40_IP_STATUS_SUCCESS != t_ReturnValue)
    {
        /* erase failed */
        PRINTF("Flash erase failed %x \r\n", t_ReturnValue);
    }
    else
    {
        PRINTF("Flash erase success \r\n");
    }
#if (1 != CFG_C40_IRQ_ENABLE)
    t_ReturnValue = WaitForFlag(FLASH_MCR_ERS_MASK);
    if(C40_IP_STATUS_SUCCESS != t_ReturnValue)
    {
        /* erase failed */
        PRINTF("Flash waite erase failed %x \r\n", t_ReturnValue);
    }
    else
    {
        PRINTF("Flash wait erase success \r\n");
    }
#endif
}


上述测试代码运行后 中断测试代码已经按照预期的进入。

image.png






   


           


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]