El siguiente código se encuentra al inicio de mi función main()
:
SystemInit();
SystemCoreClockUpdate();
SysTick_Config(168); // 1 us ticks
NVIC_SetPriority(SysTick_IRQn, 0);
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN;
// Set EXTI on PB0 for CLK
SYSCFG->EXTICR[0] |= 0b0001;
SET(EXTI->RTSR, EXTI_RTSR_TR0);
SET(EXTI->IMR, EXTI_IMR_MR0);
NVIC_SetPriority(EXTI0_IRQn, 1);
NVIC_EnableIRQ(EXTI0_IRQn);
Sin embargo, a pesar del hecho de que estoy configurando el indicador de bit para el EXTI0 activado por el puerto B, todavía lo está generando cuando PA0 tiene un flanco ascendente y no cuando PB0 lo hace. Cuando se usa un depurador para recorrer el código, EXTICR1
no cambia, a pesar del hecho de que se está escribiendo (verificado a través del desmontaje) e incluso si uso el depurador para configurar el registro, en realidad no cambia.
¿Qué estoy haciendo mal? No puedo encontrar ningún reloj o marca que necesito habilitar. Aún más extraño, recuerdo que funcionaba con prácticamente el mismo código, aunque no estaba usando ningún tipo de control de versión, por lo que no puedo verificar los detalles precisos del mismo.