带输出比较的STM32定时器

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

我正在使用 B-L4S5I-IOT01A 板 (STM32L4S5VIT6),并且遵循裸机课程,但我无法在计时器到期时强制 LED 闪烁。

在我的电路板配置中,LED 连接在 PB14 上,并且在文档中我也看到 PB14 在备用功能 1 下具有 TIM1_CH2N。

void initTimerTim1() 
{
  RCC->APB2ENR |= RCC_APB2ENR_TIM1EN;
  (void)RCC->APB2ENR;

  GPIOB->MODER &= ~(1U << 28);
  GPIOB->MODER |= 1U << 29;

  GPIOB->AFR[1] |= 1U << 24;
  GPIOB->AFR[1] &= ~(1U << 25);
  GPIOB->AFR[1] &= ~(1U << 26);
  GPIOB->AFR[1] &= ~(1U << 27);

  TIM1->PSC = 400 - 1;
  TIM1->ARR = 20000 - 1;
  TIM1->CNT = 0;

  TIM1->CCMR1|=TIM_CCMR1_OC2M_0|TIM_CCMR1_OC2M_1;
  TIM1->CCER|=TIM_CCER_CC2E;
  TIM1->BDTR |= TIM_BDTR_MOE;   

  TIM1->CR1 |= TIM_CR1_CEN;
}


int main() 
{
  RCC->AHB2ENR |= 1U << 1;
  RCC->AHB2ENR |= 1U << 2;

  initTimerTim1();

  while (1){}
}

我还检查了一些寄存器,它似乎配置正确(至少根据我的理解)。

GPIOB->MODER MODER14 = 0b10 (10: Alternate function mode)
GPIOB->AFRH PIN14 = 0b0001 (0001: AF1)

TIM1->CR1 CEN = 0b1
TIM1->CCER CC2E = 0b1
TIM1->CCMR1_Output O2CM=0b011

是否可以使用 TIM1 来实现这一目标(我的课程使用 TIM2)。

c embedded stm32 bare-metal
1个回答
0
投票

TIM1_CH2N 由 TIMx_ENR.CC2NE 启用。

JW

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