pio.c
上传用户:fy98168
上传日期:2015-06-26
资源大小:13771k
文件大小:2k
- #ifdef REPORT_TO_CONSOLE
- #include <stdio.h>
- #endif
- #include "stdevice.h"
- #include "stpio.h"
- #include "gendef.h"
- #include "section.h"
- #include "pio.h"
- ST_DeviceName_t PIO_DeviceName[] = {"PIO0","PIO1","PIO2","PIO3",
- #if KB_PIO_PORTS > 4
- "PIO4",
- #endif
- #if KB_PIO_PORTS > 5
- "PIO5",
- #endif
- #if KB_PIO_PORTS > 6
- "PIO6",
- #endif
- #if KB_PIO_PORTS > 7
- "PIO7"
- #endif
- };
- static STPIO_InitParams_t STPIO_InitParams[KB_PIO_PORTS] = {
- { (U32*) PIO_0_BASE_ADDRESS, PIO_0_INTERRUPT, PIO_0_INTERRUPT_LEVEL },
- { (U32*) PIO_1_BASE_ADDRESS, PIO_1_INTERRUPT, PIO_1_INTERRUPT_LEVEL },
- { (U32*) PIO_2_BASE_ADDRESS, PIO_2_INTERRUPT, PIO_2_INTERRUPT_LEVEL },
- { (U32*) PIO_3_BASE_ADDRESS, PIO_3_INTERRUPT, PIO_3_INTERRUPT_LEVEL },
- #if KB_PIO_PORTS > 4
- { (U32*) KB_PIO_4_BASE_ADDRESS, KB_PIO_4_INTERRUPT, KB_PIO_4_INTERRUPT_LEVEL },
- #endif
- #if KB_PIO_PORTS > 5
- { (U32*) KB_PIO_5_BASE_ADDRESS, KB_PIO_5_INTERRUPT, PIO_5_INTERRUPT_LEVEL },
- #endif
- #if KB_PIO_PORTS > 6
- { (U32*) PIO_6_BASE_ADDRESS, PIO_6_INTERRUPT, PIO_6_INTERRUPT_LEVEL },
- #endif
- #if KB_PIO_PORTS > 7
- { (U32*) PIO_7_BASE_ADDRESS, PIO_7_INTERRUPT, PIO_7_INTERRUPT_LEVEL }
- #endif
- };
- ST_ErrorCode_t KB_PIOSetup( void )
- {
- ST_ErrorCode_t ST_ErrorCode = ST_NO_ERROR;
- int Instance;
- for (Instance = 0; Instance < KB_PIO_PORTS; Instance++)
- {
- STPIO_InitParams[Instance].DriverPartition = SystemPartition;
- ST_ErrorCode |= STPIO_Init( PIO_DeviceName[Instance], &STPIO_InitParams[Instance] );
- #ifdef REPORT_TO_CONSOLE
- Print("KB_PIOSetup(%s)=", PIO_DeviceName[Instance]);
- if (ST_ErrorCode != ST_NO_ERROR)
- Print("nSTPIO_Init Error");
- else
- Print("%sn", STPIO_GetRevision() );
- #endif
- }
- return ( ST_ErrorCode );
- }
- /* EOF */