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

微处理器开发

开发平台:

C/C++

  1. /******************** (C) COPYRIGHT 2003 STMicroelectronics ********************
  2. * File Name          : eic.c
  3. * Author             : MCD Application Team
  4. * Date First Issued  : 06/25/2003
  5. * Description        : This file provides all the EIC software functions
  6. ********************************************************************************
  7. * History:
  8. *  01/01/2004 : V1.2
  9. *  14/07/2004 : V1.3
  10. *******************************************************************************/
  11. #include "eic.h"
  12. /*******************************************************************************
  13. * Function Name  : EIC_Init
  14. * Description    : Initialise the EIC using the load PC instruction
  15. *                  (PC = PC +offset)
  16. * Input          : None
  17. * Output         : None
  18. * Return         : None
  19. *******************************************************************************/
  20. void EIC_Init(void)
  21. {
  22.   extern u32 T0TIMI_Addr;
  23.   u8 bCounter;
  24.   u32 dOffset=((u32)&T0TIMI_Addr);
  25.   EIC->ICR = 0x00000000; // Disable FIQ and IRQ interrupts
  26.   EIC->IER = 0x00000000; // Disable all channels interrupts
  27.   EIC->IPR = 0xFFFFFFFF; // Clear all pending bits
  28.   EIC->FIR = 0x0000000C; // Disable all FIQ channels interrupts and clear FIQ
  29.                          // channels pending bits
  30.   EIC->CIPR = 0x00000000; // Ste the current priority level to zero
  31.   EIC->IVR  = 0xE59F0000; // IVR = high half of load PC instruction
  32.   dOffset = (dOffset+0x00007E0)<<16;
  33.   for(bCounter=0; bCounter<32; bCounter++) // Initialize SIRn registers
  34.   {
  35.     EIC->SIR[bCounter] = dOffset|0xF0000000;
  36.     dOffset += 0x00000004 << 16;
  37.   }
  38. }
  39. /*******************************************************************************
  40. * Function Name  : EIC_CurrentPriorityLevelConfig
  41. * Description    : Change the current priority level of the srved IRQ routine
  42. * Input 1        : New priority
  43. * Output         : None
  44. * Return         : None
  45. *******************************************************************************/
  46. void EIC_CurrentPriorityLevelConfig(u8 NewPriorityLevel)
  47. {
  48.   u32 dVal;
  49.   dVal = EIC->ICR;              // Save ICR content
  50.   EIC->ICR &= ~0x0001;          // Disable IRQ interrupts.
  51.   EIC->CIPR = NewPriorityLevel; // Change the current priority
  52.   EIC->ICR = dVal;              // Restore ICR content
  53. }
  54. /******************* (C) COPYRIGHT 2003 STMicroelectronics *****END OF FILE****/