STM32F411CE hardware timer in encoder mode won't increment
I'm using a STM32F411CE on a blackpill dev board with a second connected as a BMP debugger.
I'm attempting to use the hardware timer quadrature encoder support and having absolutely no luck. I've followed the guidance in both the application note AN4013 (pg35) and the STM32F411CE Reference Manual (pg341) to set all the appropriate configuration registers and verified those registers are set with the debugger - but the TIMx->CNT never changes. I've also tried all of the general purpose timers (TIM2...TIM5) with no luck.
Relevant code for config registers (GPIOA/GPIOB/TIM2):
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
LL_GPIO_SetPinPull(GPIOA, LL_GPIO_PIN_15, LL_GPIO_PULL_NO);
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN;
LL_GPIO_SetPinPull(GPIOB, LL_GPIO_PIN_3, LL_GPIO_PULL_NO);
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
TIM2->CCMR1 |= (TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_0);
TIM2->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P);
TIM2->SMCR |= TIM_SMCR_SMS_0 | TIM_SMCR_SMS_1;
TIM2->CR1 |= TIM_CR1_CEN;Once run and as viewed through the debugger, the GPIOA/B ports are enabled, set to input, and without any pullup/pulldown. Likewise, the timer is set to the proper SMCR, CCMR1 modes and is enabled.
I also am able to view the GPIO input data register changing as I spin the encoder, and I have verified the encoder output on my oscilloscope. I'm also able to do a basic blinky without any troubles manipulating the ports directly to output modes, so I don't think there's anything wrong with the chip.
Everything looks great except that the counter never increments - please help! I feel like I've got to be missing something really obvious and simple here.
