7.13. INTERRUPT

Overview

提供系统中断应用示例、常用相关 API 介绍和常见问题。

7.13.1. 应用示例

示例演示:

example: 进入 apps/demo/demo_DevKitBoard/include/demo_config.h ,开启宏 USE_INTERRUPT_TEST_DEMO

Note

  • 1.通常安装中断使用request_irq,优先级为1-7, 越大优先级越高,cpu_id为安装到哪一个核去响应中断

  • 2.SDK库内部已经安装好中断, 如果用户需要修改中断的优先级和安装核, 可以在app_main.c的irq_info_table强行修改对应的中断号,例如:

    /*中断列表 */
    const struct irq_info irq_info_table[] = {
      { IRQ_TIMER4_IDX,      2,   1    }, //此中断强制配置为优先级为2,并且安装到cpu1
    
  • 3.当用户想统一某些中断注册到核1,某些中断注册到核0,可以在app_main.c的irq_info_table配置,例如:

    const struct irq_info irq_info_table[] = {
      { IRQ_SOFT5_IDX,      7,   0    }, //此中断强制注册到cpu0
      { IRQ_SOFT4_IDX,      7,   1    }, //此中断强制注册到cpu1
      { -2,                       -2,   -2   },//如果加入了该行, 那么只有该行之前的中断注册到对应核, 其他所有中断强制注册到CPU0
    

7.13.2. 常见问题

7.13.3. API Reference

IRQ select

IRQ_SDTAP_IDX
IRQ_EXCEPTION_IDX
IRQ_SYSCALL_IDX
IRQ_TICK_TMR_IDX
IRQ_TIMER0_IDX
IRQ_TIMER1_IDX
IRQ_TIMER2_IDX
IRQ_TIMER3_IDX
IRQ_USB_SOF_IDX
IRQ_USB_CTRL_IDX
IRQ_RTC_WDT_IDX
IRQ_ALNK_IDX
IRQ_ALNK1_IDX
IRQ_AUDIO_IDX
IRQ_PORT_IDX
IRQ_SPI0_IDX
IRQ_SPI1_IDX
IRQ_SD0_IDX
IRQ_SD1_IDX
IRQ_UART0_IDX
IRQ_UART1_IDX
IRQ_UART2_IDX
IRQ_PAP_IDX
IRQ_IIC_IDX
IRQ_SARADC_IDX
IRQ_SPI3_IDX
IRQ_GPC_IDX
IRQ_EMI_IDX
IRQ_OSA_IDX
IRQ_BLE_RX_IDX
IRQ_NFC_IDX
IRQ_AES_IDX
IRQ_RDEC_IDX
IRQ_MCTMRX_IDX
IRQ_CHX_PWM_IDX
IRQ_SPDETX
IRQ_CTM_IDX
IRQ_SPI2_IDX
IRQ_PLNK_IDX
IRQ_PLNK1_IDX
IRQ_BREDR_IDX
IRQ_BT_CLKN_IDX
IRQ_BT_DBG_IDX
IRQ_WL_LOFC_IDX
IRQ_LRCT_IDX
IRQ_BLE_EVENT_IDX
IRQ_SBC_IDX
IRQ_SS_IDX
IRQ_DMA_COPY_IDX
IRQ_PMU_PND0_IDX
IRQ_PMU_PND1_IDX
IRQ_LDMA_IDX
IRQ_WF_IDX
IRQ_USB1_SOF_IDX
IRQ_USB1_CTRL_IDX
IRQ_JPG_IDX
IRQ_SHA_IDX
IRQ_FFT_IDX
IRQ_SRC_IDX
IRQ_ISC0_IDX
IRQ_EQ_IDX
IRQ_WF_RSVD_IDX
IRQ_TIMER4_IDX
IRQ_TIMER5_IDX
IRQ_ISC1_IDX
IRQ_IMD_IDX
IRQ_SOFT0_IDX
IRQ_SOFT1_IDX
IRQ_SOFT2_IDX
IRQ_SOFT3_IDX
IRQ_SOFT4_IDX
IRQ_SOFT5_IDX
IRQ_SOFT6_IDX
IRQ_SOFT7_IDX
ISR_ENTRY
void request_irq(unsigned char index, unsigned char priority, void (*handler)(void), unsigned char cpu_id)

request_irq, 中断注册

Parameters
  • index – : 使用的中断号,例如IRQ_TIMER0_IDX 等

  • priority – : 中断优先级0~7,越大优先级越高

  • handler – : 中断函数

  • cpu_id – : 中断注册到的cpu, 0是注册到cpu0,1是注册到cpu1,cpuid为0xff时注册到当前CPU。

void unrequest_irq(u8 index, u8 cpu_id)

unrequest_irq, 解除中断注册

Parameters
  • index – : 使用的中断号,例如IRQ_TIMER0_IDX 等

  • cpu_id – : 中断注册到的cpu, 0是注册到cpu0,1是注册到cpu1