fix button int mux error

This commit is contained in:
Ajit Ananthadevan 2025-08-19 07:40:46 +10:00
parent 9f50648334
commit 034f12a602

View file

@ -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);