isr.h
上传用户:wealth48
上传日期:2022-06-24
资源大小:1701k
文件大小:4k
源码类别:

uCOS

开发平台:

C/C++

  1. /***************************************************************************
  2. Copyright (c) 2004-2007 threewater@up-tech.com, All rights reserved.
  3. by threewter 2004.5.12
  4. ***************************************************************************/
  5. /***************************************************************************
  6.     #说明: 中断注册相关函数定义
  7. ----------------------------------  Bug  --------------------------------------
  8. ----------------------------------  TODO list  --------------------------------------
  9. ----------------------------------修正--------------------------------------
  10. 2004-5-12 移植
  11. ***************************************************************************/
  12. #ifndef __ISR_H__
  13. #define __ISR_H__
  14. ///////////interrupt offset/////////////////////
  15. /* Interrupt Controller */
  16. #define IRQ_EINT0 0 /* External interrupt 0 */
  17. #define IRQ_EINT1 1 /* External interrupt 1 */
  18. #define IRQ_EINT2 2 /* External interrupt 2 */
  19. #define IRQ_EINT3 3 /* External interrupt 3 */
  20. #define IRQ_EINT4_7 4 /* External interrupt 4 ~ 7 */
  21. #define IRQ_EINT8_23 5 /* External interrupt 8 ~ 23 */
  22. #define IRQ_RESERVED6 6 /* Reserved for future use */
  23. #define IRQ_BAT_FLT 7
  24. #define IRQ_TICK 8 /* RTC time tick interrupt  */
  25. #define IRQ_WDT 9 /* Watch-Dog timer interrupt */
  26. #define IRQ_TIMER0 10 /* Timer 0 interrupt */
  27. #define IRQ_TIMER1 11 /* Timer 1 interrupt */
  28. #define IRQ_TIMER2 12 /* Timer 2 interrupt */
  29. #define IRQ_TIMER3 13 /* Timer 3 interrupt */
  30. #define IRQ_TIMER4 14 /* Timer 4 interrupt */
  31. #define IRQ_UART2 15 /* UART 2 interrupt  */
  32. #define IRQ_LCD 16 /* reserved for future use */
  33. #define IRQ_DMA0 17 /* DMA channel 0 interrupt */
  34. #define IRQ_DMA1 18 /* DMA channel 1 interrupt */
  35. #define IRQ_DMA2 19 /* DMA channel 2 interrupt */
  36. #define IRQ_DMA3 20 /* DMA channel 3 interrupt */
  37. #define IRQ_SDI 21 /* SD Interface interrupt */
  38. #define IRQ_SPI0 22 /* SPI interrupt */
  39. #define IRQ_UART1 23 /* UART1 receive interrupt */
  40. #define IRQ_RESERVED24 24
  41. #define IRQ_USBD 25 /* USB device interrupt */
  42. #define IRQ_USBH 26 /* USB host interrupt */
  43. #define IRQ_IIC 27 /* IIC interrupt */
  44. #define IRQ_UART0 28 /* UART0 transmit interrupt */
  45. #define IRQ_SPI1 29 /* UART1 transmit interrupt */
  46. #define IRQ_RTC 30 /* RTC alarm interrupt */
  47. #define IRQ_ADCTC 31 /* ADC EOC interrupt */
  48. #define NORMAL_IRQ_OFFSET 32
  49. /* External Interrupt */
  50. #define IRQ_EINT4 (0 +NORMAL_IRQ_OFFSET)
  51. #define IRQ_EINT5 (1 +NORMAL_IRQ_OFFSET)
  52. #define IRQ_EINT6 (2 +NORMAL_IRQ_OFFSET)
  53. #define IRQ_EINT7 (3 +NORMAL_IRQ_OFFSET)
  54. #define IRQ_EINT8 (4 +NORMAL_IRQ_OFFSET)
  55. #define IRQ_EINT9 (5 +NORMAL_IRQ_OFFSET)
  56. #define IRQ_EINT10 (6 +NORMAL_IRQ_OFFSET)
  57. #define IRQ_EINT11 (7 +NORMAL_IRQ_OFFSET)
  58. #define IRQ_EINT12 (8 +NORMAL_IRQ_OFFSET)
  59. #define IRQ_EINT13 (9 +NORMAL_IRQ_OFFSET) 
  60. #define IRQ_EINT14 (10 +NORMAL_IRQ_OFFSET)
  61. #define IRQ_EINT15 (11 +NORMAL_IRQ_OFFSET)
  62. #define IRQ_EINT16 (12 +NORMAL_IRQ_OFFSET) 
  63. #define IRQ_EINT17 (13 +NORMAL_IRQ_OFFSET) 
  64. #define IRQ_EINT18 (14 +NORMAL_IRQ_OFFSET) 
  65. #define IRQ_EINT19 (15 +NORMAL_IRQ_OFFSET) 
  66. #define IRQ_EINT20 (16 +NORMAL_IRQ_OFFSET) 
  67. #define IRQ_EINT21 (17 +NORMAL_IRQ_OFFSET) 
  68. #define IRQ_EINT22 (18 +NORMAL_IRQ_OFFSET) 
  69. #define IRQ_EINT23 (19 +NORMAL_IRQ_OFFSET) /* 51 */
  70. #define SHIFT_EINT4_7 IRQ_EINT4_7
  71. #define SHIFT_EINT8_23 IRQ_EINT8_23
  72. #define EXT_IRQ_OFFSET (20 +NORMAL_IRQ_OFFSET)
  73. /* sub Interrupt */
  74. #define IRQ_RXD0 (0 +EXT_IRQ_OFFSET)
  75. #define IRQ_TXD0 (1 +EXT_IRQ_OFFSET)
  76. #define IRQ_ERR0 (2 +EXT_IRQ_OFFSET)
  77. #define IRQ_RXD1 (3 +EXT_IRQ_OFFSET)
  78. #define IRQ_TXD1 (4 +EXT_IRQ_OFFSET) 
  79. #define IRQ_ERR1 (5 +EXT_IRQ_OFFSET)
  80. #define IRQ_RXD2 (6 +EXT_IRQ_OFFSET)
  81. #define IRQ_TXD2 (7 +EXT_IRQ_OFFSET)
  82. #define IRQ_ERR2 (8 +EXT_IRQ_OFFSET) 
  83. #define IRQ_TC (9 +EXT_IRQ_OFFSET)  
  84. #define IRQ_ADC_DONE (10 +EXT_IRQ_OFFSET) /* 62 */
  85. #define SUB_IRQ_OFFSET (11 +EXT_IRQ_OFFSET)
  86. #define IRQ_UNKNOWN SUB_IRQ_OFFSET
  87. #define NR_IRQS SUB_IRQ_OFFSET // Maximum # of interrupt  handlers
  88. #define BIT_ALLMSK      0xffffffff
  89. #define BIT_SUB_ALLMSK 0x7ff
  90. typedef void (*Interrupt_func_t)(int, void*);
  91. void ISR_Init(void);
  92. int SetISR_Interrupt(int vector, void (*handler)(int, void*), void* data);
  93. void ISR_IrqHandler(void);
  94. int set_external_irq(int irq, int edge, int pullup);
  95. void Enable_Irq(int vector);
  96. void Disable_Irq(int vector);
  97. #endif  //#ifndef __ISR_H__