pio.c
上传用户:fy98168
上传日期:2015-06-26
资源大小:13771k
文件大小:2k
源码类别:

DVD

开发平台:

C/C++

  1. #ifdef REPORT_TO_CONSOLE
  2.     #include <stdio.h>
  3. #endif
  4. #include "stdevice.h"
  5. #include "stpio.h"
  6. #include "gendef.h"
  7. #include "section.h"
  8. #include "pio.h"
  9. ST_DeviceName_t PIO_DeviceName[] = {"PIO0","PIO1","PIO2","PIO3",
  10. #if KB_PIO_PORTS > 4
  11. "PIO4",
  12.                                     #endif
  13. #if KB_PIO_PORTS > 5
  14. "PIO5",
  15. #endif
  16. #if KB_PIO_PORTS > 6
  17. "PIO6",
  18. #endif
  19. #if KB_PIO_PORTS > 7
  20. "PIO7"
  21. #endif
  22. };
  23. static STPIO_InitParams_t STPIO_InitParams[KB_PIO_PORTS] = {
  24.     { (U32*) PIO_0_BASE_ADDRESS, PIO_0_INTERRUPT, PIO_0_INTERRUPT_LEVEL },
  25.     { (U32*) PIO_1_BASE_ADDRESS, PIO_1_INTERRUPT, PIO_1_INTERRUPT_LEVEL },
  26.     { (U32*) PIO_2_BASE_ADDRESS, PIO_2_INTERRUPT, PIO_2_INTERRUPT_LEVEL },
  27.     { (U32*) PIO_3_BASE_ADDRESS, PIO_3_INTERRUPT, PIO_3_INTERRUPT_LEVEL },
  28. #if KB_PIO_PORTS > 4
  29.     { (U32*) KB_PIO_4_BASE_ADDRESS, KB_PIO_4_INTERRUPT, KB_PIO_4_INTERRUPT_LEVEL },
  30. #endif
  31. #if KB_PIO_PORTS > 5
  32.     { (U32*) KB_PIO_5_BASE_ADDRESS, KB_PIO_5_INTERRUPT, PIO_5_INTERRUPT_LEVEL },
  33. #endif
  34. #if KB_PIO_PORTS > 6
  35.     { (U32*) PIO_6_BASE_ADDRESS, PIO_6_INTERRUPT, PIO_6_INTERRUPT_LEVEL },
  36. #endif
  37. #if KB_PIO_PORTS > 7
  38.     { (U32*) PIO_7_BASE_ADDRESS, PIO_7_INTERRUPT, PIO_7_INTERRUPT_LEVEL }
  39. #endif
  40. };
  41. ST_ErrorCode_t KB_PIOSetup( void )
  42. {
  43.     ST_ErrorCode_t ST_ErrorCode = ST_NO_ERROR;
  44.     int Instance;
  45.     for (Instance = 0; Instance < KB_PIO_PORTS; Instance++)
  46.     {
  47.         STPIO_InitParams[Instance].DriverPartition = SystemPartition;
  48.         ST_ErrorCode |= STPIO_Init( PIO_DeviceName[Instance], &STPIO_InitParams[Instance] );
  49.         #ifdef REPORT_TO_CONSOLE
  50.             Print("KB_PIOSetup(%s)=", PIO_DeviceName[Instance]);
  51.             if (ST_ErrorCode != ST_NO_ERROR)
  52.                 Print("nSTPIO_Init Error");
  53.             else
  54.                 Print("%sn", STPIO_GetRevision() );
  55.         #endif
  56.     }
  57.     return ( ST_ErrorCode );
  58. }
  59. /* EOF */