From 034f12a602fe36b888d16dbdea6374db6c4e471e Mon Sep 17 00:00:00 2001 From: Ajit Ananthadevan Date: Tue, 19 Aug 2025 07:40:46 +1000 Subject: [PATCH] fix button int mux error --- myapps/practice/02-button-int/src/main.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/myapps/practice/02-button-int/src/main.c b/myapps/practice/02-button-int/src/main.c index 35dba0c..191428f 100644 --- a/myapps/practice/02-button-int/src/main.c +++ b/myapps/practice/02-button-int/src/main.c @@ -1,6 +1,6 @@ -// TODO fix line 27 +// Note: unlike ch582, ch592 has no RB_PIN_INTX mux, so cannot use PB22,23 as INT pins! // LED: PA8 (active low) -// BUT: PB22 (active low, no pullup) +// BUT: PB4 (active low, no pullup) #include "CH59x_common.h" @@ -8,9 +8,9 @@ __INTERRUPT __HIGH_CODE void GPIOB_IRQHandler() { - if (GPIOB_ReadITFlagBit(GPIO_Pin_8)) { + if (GPIOB_ReadITFlagBit(GPIO_Pin_4)) { GPIOA_InverseBits(GPIO_Pin_8); - GPIOB_ClearITFlagBit(GPIO_Pin_8); + GPIOB_ClearITFlagBit(GPIO_Pin_4); } } @@ -21,10 +21,9 @@ int main() GPIOA_SetBits(GPIO_Pin_8); // LED GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeOut_PP_5mA); - GPIOB_ModeCfg(GPIO_Pin_22, GPIO_ModeIN_PU); // button - GPIOB_ITModeCfg(GPIO_Pin_8, GPIO_ITMode_FallEdge); // PB8 mux'd as PB22 see below - GPIOB_ClearITFlagBit(GPIO_Pin_8); - GPIOPinRemap(ENABLE, RB_PIN_INTX); // <================== workaround, as R16_PB_INT reg is 16b wide + GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeIN_PU); // button + GPIOB_ITModeCfg(GPIO_Pin_4, GPIO_ITMode_FallEdge); + GPIOB_ClearITFlagBit(GPIO_Pin_4); PFIC_EnableIRQ(GPIO_B_IRQn); while (1);