如何设置STM32F0的接口编码器模式

问题描述 投票:0回答:1

好吧,所以我的目标是在引脚 a1 和 a5 上设置接口编码器模式。读取TIM2->CNT。我有一个旋转编码器,连接到两个引脚和接地/5v。我查看了数据表,我认为我已经正确配置了设置,但我无法让它工作。

这是我的设置

void init_hardware_timer_version(void)
{
    RCC->AHBENR |= RCC_AHBENR_GPIOAEN; // Enable GPIOA clock
    RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // Enable TIM2 clock

    TIM2->ARR = 12; // Set auto-reload register to maximum value

    // Configure capture/compare mode
    TIM2->CCMR1 |= (TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_0);

    // Configure capture/compare polarity
    TIM2->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P);

    // Configure the slave mode controller
    TIM2->SMCR |= TIM_SMCR_SMS_0 | TIM_SMCR_SMS_1;

    // Enable the timer
    TIM2->CR1 |= TIM_CR1_CEN;
}

现在我的期望是,在主程序中调用 TIM2->CNT 后,该值会根据编码器的旋转而变化。然而 CNT 似乎仍然是 0。我不知道为什么它不起作用。

编辑:这就是我设置引脚的方式

GPIOA->MODER |= GPIO_MODER_MODER1_1 | GPIO_MODER_MODER5_1; // Set PA1 and PA5 to alternate function mode
GPIOA->AFR[0] |= (1 << (1 * 4)) | (1 << (5 * 4)); // Set alternate function AF1 for PA1 and PA5 (TIM2_CH2 and TIM2_CH1)
stm32 stm32f0
1个回答
0
投票

您还没有告诉我们您使用的是哪款STM32F0xx;但在我检查过的所有 'F0xx 数据表中('F031/'F042/'F051/'F072/'F091),PA1 和 PA5 上的 TIM2_CHx 是 AF2,而不是 AF1。

© www.soinside.com 2019 - 2024. All rights reserved.