eic.h
上传用户:yyyd609
上传日期:2022-07-18
资源大小:183k
文件大小:7k
源码类别:

微处理器开发

开发平台:

C/C++

  1. /******************** (C) COPYRIGHT 2003 STMicroelectronics ********************
  2. * File Name          : eic.h
  3. * Author             : MCD Application Team
  4. * Date First Issued  : 25/06/2003
  5. * Description        : This file contains all the functions prototypes for the
  6. *                      EIC software library.
  7. ********************************************************************************
  8. * History:
  9. *  01/01/2004 : V1.2
  10. *  14/07/2004 : V1.3
  11. *******************************************************************************/
  12. #ifndef __eic_H
  13. #define __eic_H
  14. #include "71x_lib.h"
  15. typedef enum
  16. {
  17.   T0TIMI_IRQChannel    = 0,
  18.   FLASH_IRQChannel     = 1,
  19.   RCCU_IRQChannel      = 2,
  20.   RTC_IRQChannel       = 3,
  21.   WDG_IRQChannel       = 4,
  22.   XTI_IRQChannel       = 5,
  23.   USBHP_IRQChannel     = 6,
  24.   I2C0ITERR_IRQChannel = 7,
  25.   I2C1ITERR_IRQChannel = 8,
  26.   UART0_IRQChannel     = 9,
  27.   UART1_IRQChannel     = 10,
  28.   UART2_IRQChannel     = 11,
  29.   UART3_IRQChannel     = 12,
  30.   SPI0_IRQChannel      = 13,
  31.   SPI1_IRQChannel      = 14,
  32.   I2C0_IRQChannel      = 15,
  33.   I2C1_IRQChannel      = 16,
  34.   CAN_IRQChannel       = 17,
  35.   ADC_IRQChannel       = 18,
  36.   T1TIMI_IRQChannel    = 19,
  37.   T2TIMI_IRQChannel    = 20,
  38.   T3TIMI_IRQChannel    = 21,
  39.   HDLC_IRQChannel      = 25,
  40.   USBLP_IRQChannel     = 26,
  41.   T0TOI_IRQChannel     = 29,
  42.   T0OC1_IRQChannel     = 30,
  43.   T0OC2_IRQChannel     = 31
  44. } IRQChannel_TypeDef;
  45. typedef enum
  46. {
  47.   T0TIMI_FIQChannel     = 0x00000001,
  48.   WDG_FIQChannel        = 0x00000002,
  49.   WDGT0TIMI_FIQChannels = 0x00000003
  50. } FIQChannel_TypeDef;
  51. /*******************************************************************************
  52. * Function Name  : EIC_Init
  53. * Description    : Initialise the EIC using the load PC instruction
  54. *                 (PC = PC +offset)
  55. * Input          : None
  56. * Output         : None
  57. * Return         : None
  58. *******************************************************************************/
  59. void EIC_Init(void);
  60. /*******************************************************************************
  61. * Function Name  : EIC_IRQConfig
  62. * Description    : Enable or Disable IRQ interrupts
  63. * Input 1        : New status : can be ENABLE or DISABLE
  64. * Output         : None
  65. * Return         : None
  66. *******************************************************************************/
  67. inline void EIC_IRQConfig(FunctionalState NewState)
  68. {
  69.   if (NewState==ENABLE) EIC->ICR |= 0x0001; else EIC->ICR &= ~0x0001;
  70. }
  71. /*******************************************************************************
  72. * Function Name  : EIC_FIQConfig
  73. * Description    : Enable or Disable FIQ interrupts
  74. * Input 1        : New status : can be ENABLE or DISABLE
  75. * Output         : None
  76. * Return         : None
  77. *******************************************************************************/
  78. inline void EIC_FIQConfig(FunctionalState NewState)
  79. {
  80.   if (NewState==ENABLE) EIC->ICR |= 0x0002; else EIC->ICR &= ~0x0002;
  81. }
  82. /*******************************************************************************
  83. * Function Name  : EIC_IRQChannelConfig
  84. * Description    : Configure the IRQ Channel
  85. * Input 1        : IRQ channel name
  86. * Input 2        : Channel New status : can be ENABLE or DISABLE
  87. * Output         : None
  88. * Return         : None
  89. *******************************************************************************/
  90. inline void EIC_IRQChannelConfig(IRQChannel_TypeDef IRQChannel, FunctionalState NewState)
  91. {
  92.   if (NewState==ENABLE) EIC->IER |= 0x0001 << IRQChannel;
  93.   else EIC->IER &= ~(0x0001 << IRQChannel);
  94. }
  95. /*******************************************************************************
  96. * Function Name  : EIC_FIQChannelConfig
  97. * Description    : Configure the FIQ Channel
  98. * Input 1        : FIQ channel name
  99. * Input 2        : Channel New status : can be ENABLE or DISABLE
  100. * Output         : None
  101. * Return         : None
  102. *******************************************************************************/
  103. inline void EIC_FIQChannelConfig(FIQChannel_TypeDef FIQChannel,
  104.                           FunctionalState NewState)
  105. {
  106.   if (NewState==ENABLE) EIC->FIR |= FIQChannel;
  107.   else EIC->FIR &= ~FIQChannel;
  108. }
  109. /*******************************************************************************
  110. * Function Name  : EIC_IRQChannelPriorityConfig
  111. * Description    : Configure the selected IRQ channel priority
  112. * Input 1        : IRQ channel name
  113. * Input 2        : IRQ channel priority
  114. * Output         : None
  115. * Return         : None
  116. *******************************************************************************/
  117. inline void EIC_IRQChannelPriorityConfig(IRQChannel_TypeDef IRQChannel, u8 Priority)
  118. {
  119.   EIC->SIR[IRQChannel] = (EIC->SIR[IRQChannel]&0xFFFF0000) | (u16)Priority & 0x000F;
  120. }
  121. /*******************************************************************************
  122. * Function Name  : EIC_CurrentPriorityLevelConfig
  123. * Description    : Change the current priority level of the srved IRQ routine
  124. * Input 1        : New priority
  125. * Output         : None
  126. * Return         : None
  127. *******************************************************************************/
  128. void EIC_CurrentPriorityLevelConfig(u8 NewPriorityLevel);
  129. /*******************************************************************************
  130. * Function Name  : EIC_CurrentPriorityLevelValue
  131. * Description    : Return the current priority level of the current served IRQ
  132. *                  routine
  133. * Input          : None
  134. * Output         : None
  135. * Return         : The current priority level
  136. *******************************************************************************/
  137. inline u8 EIC_CurrentPriorityLevelValue(void)
  138. {
  139.   return EIC->CIPR & 0xF;
  140. }
  141. /*******************************************************************************
  142. * Function Name  : EIC_CurrentIRQChannelValue
  143. * Description    : Return the current served IRQ channel number
  144. * Input 0        : None
  145. * Output         : None
  146. * Return         : The current served IRQ channel number
  147. *******************************************************************************/
  148. inline IRQChannel_TypeDef EIC_CurrentIRQChannelValue(void)
  149. {
  150.   return (IRQChannel_TypeDef)(EIC->CICR & 0x1F);
  151. }
  152. /*******************************************************************************
  153. * Function Name  : EIC_CurrentFIQChannelValue
  154. * Description    : Return the current served FIQ channel number
  155. * Input          : None
  156. * Output         : None
  157. * Return         : The current served FIQ channel number
  158. *******************************************************************************/
  159. inline FIQChannel_TypeDef EIC_CurrentFIQChannelValue(void)
  160. {
  161.    return (FIQChannel_TypeDef)((EIC->FIR >> 2) & 0x0003);
  162. }
  163. /*******************************************************************************
  164. * Function Name  : EIC_FIPendingBitClear
  165. * Description    : Clear the FIQ pending bit
  166. * Input 1        : FIQ channel
  167. * Output         : None
  168. * Return         : None
  169. *******************************************************************************/
  170. inline void EIC_FIQPendingBitClear(FIQChannel_TypeDef FIQChannel)
  171. {
  172.   EIC->FIR = (EIC->FIR & 0x0003) | (FIQChannel << 2);
  173. }
  174. #endif /* __eic_H */
  175. /******************* (C) COPYRIGHT 2003 STMicroelectronics *****END OF FILE****/