From daa2a698d239261a26aa2a2b3d3996a2a943854c Mon Sep 17 00:00:00 2001 From: Yilin Sun Date: Sun, 4 Jun 2023 00:00:28 +0800 Subject: [PATCH] GPIO: Use pin mask table. Signed-off-by: Yilin Sun --- src/app_gpio.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/app_gpio.c b/src/app_gpio.c index 2acfe64..3cb2e3c 100644 --- a/src/app_gpio.c +++ b/src/app_gpio.c @@ -95,7 +95,7 @@ static inline uint16_t app_gpio_read_reg_cfg(void) { uint16_t ret = 0x0000U; for (uint8_t i = 0; i < APP_GPIO_PIN_COUNT; i++) { - uint32_t dir = GPIO->DIR[0] & (1U << s_app_gpio_id_table[i]); + uint32_t dir = GPIO->DIR[0] & (s_app_gpio_mask_table[i]); if (dir == 0UL) { /* Input mode */ ret |= (2U << (2 * i)); @@ -115,10 +115,10 @@ static inline void app_gpio_write_reg_cfg(uint16_t data) { for (uint8_t i = 0; i < APP_GPIO_PIN_COUNT; i++) { if (data & (2U << (2 * i))) { /* Input mode */ - GPIO->DIRCLR[0] = (1U << s_app_gpio_id_table[i]); + GPIO->DIRCLR[0] = (s_app_gpio_mask_table[i]); } else { /* Output mode */ - GPIO->DIRSET[0] = (1U << s_app_gpio_id_table[i]); + GPIO->DIRSET[0] = (s_app_gpio_mask_table[i]); if (data & (1U << (2 * i))) { /* OD mode */ @@ -147,7 +147,7 @@ static inline uint16_t app_gpio_read_reg_output(void) { uint16_t ret = 0x0000U; for (uint8_t i = 0; i < APP_GPIO_PIN_COUNT; i++) { - if (GPIO->SET[0] & (1U << s_app_gpio_id_table[i])) { + if (GPIO->SET[0] & (s_app_gpio_mask_table[i])) { ret |= (1U << i); } } @@ -158,9 +158,9 @@ static inline uint16_t app_gpio_read_reg_output(void) { static inline void app_gpio_write_reg_output(uint16_t data) { for (uint8_t i = 0; i < APP_GPIO_PIN_COUNT; i++) { if (data & (1 << i)) { - GPIO->SET[0] = (1U << s_app_gpio_id_table[i]); + GPIO->SET[0] = (s_app_gpio_mask_table[i]); } else { - GPIO->CLR[0] = (1U << s_app_gpio_id_table[i]); + GPIO->CLR[0] = (s_app_gpio_mask_table[i]); } } } \ No newline at end of file