LPC11u68 + LPCExpresso: GPIO - co dělám špatně?
Pavel Hudecek
edizon na seznam.cz
Neděle Červen 19 23:47:33 CEST 2016
Dobrý den všem,
hraju si tu s LPC11u68 v LPCExpresso. HW (kromě asi upečeného RTC krystalu)
zjevně chodí, ale nedaří se mi číst vstupy:
Provede se tato inicializace:
/* Initialize GPIO */
Chip_GPIO_Init(LPC_GPIO);
/* Enable and setup SysTick Timer at a periodic rate */
SysTick_Config(SystemCoreClock / 1000);
/* Configure GPIO pin as input */
Chip_GPIO_SetPinDIRInput(LPC_GPIO, KOL1_aPort, KOL1_aPin);
Chip_GPIO_SetPinDIRInput(LPC_GPIO, KOL1_bPort, KOL1_bPin);
Chip_GPIO_SetPinDIRInput(LPC_GPIO, KOL2_aPort, KOL2_aPin);
Chip_GPIO_SetPinDIRInput(LPC_GPIO, KOL2_bPort, KOL2_bPin);
Pak chci číst s pomocí:
Chip_GPIO_ReadPortBit(LPC_GPIO, port, pin)
Ale výsledek je pro všechny čtyři stále true, ať je na vstupu 1, nebo 0.
Co dělám špatně?
Předchází tyto definice:
#define KOL1_aPort 0
#define KOL1_bPort 0
#define KOL2_aPort 2
#define KOL2_bPort 2
#define KOL1_aPin 2
#define KOL1_bPin 20
#define KOL2_aPin 2
#define KOL2_bPin 5
/**
* @brief GPIO port register block structure
*/
typedef struct { /*!< GPIO_PORT Structure */
__IO uint8_t B[128][32]; /*!< Offset 0x0000: Byte pin registers ports
0 to n; pins PIOn_0 to PIOn_31 */
__IO uint32_t W[32][32]; /*!< Offset 0x1000: Word pin registers port
0 to n */
__IO uint32_t DIR[32]; /*!< Offset 0x2000: Direction registers
port n */
__IO uint32_t MASK[32]; /*!< Offset 0x2080: Mask register port n
*/
__IO uint32_t PIN[32]; /*!< Offset 0x2100: Portpin register port
n */
__IO uint32_t MPIN[32]; /*!< Offset 0x2180: Masked port register
port n */
__IO uint32_t SET[32]; /*!< Offset 0x2200: Write: Set register
for port n Read: output bits for port n */
__O uint32_t CLR[32]; /*!< Offset 0x2280: Clear port n */
__O uint32_t NOT[32]; /*!< Offset 0x2300: Toggle port n */
} LPC_GPIO_T;
#define LPC_GPIO_PORT_BASE 0xA0000000
#define LPC_GPIO ((LPC_GPIO_T *)
LPC_GPIO_PORT_BASE)
Díky,
PH
Další informace o konferenci Hw-list