0

我正在对电路板进行编程,并希望 PWM 信号出现在引脚上以驱动 LED。我用的是STM32 NUCLEO-F207ZG板,只有低级寄存器编程。它不工作。

我查看了手册、数据表和应用说明。还进行了一些谷歌搜索。

//使能定时器1时钟:RCC->APB2ENR |= BIT0;

//Output mode on PWM
TIM1->CCMR1 |= BIT5 | BIT6;

//Period:
TIM1->ARR = 0x0000FFFF;

//Duty cycle:
TIM1->CCR1 = 0x00007FFF;

//Enable preload
TIM1->CCMR1 |= BIT3;
TIM1->CR1 |= BIT7;

//Enable CC1 output
TIM1->CCER |= BIT0;

//Enable timer
TIM1->CR1 |= BIT0;

//Enable GPIOE clock
RCC->AHB1ENR |= BIT4;

//Alternate function mode voor pin PE_9
GPIOE->MODER |= BIT19;
GPIOE->AFR[1] |= BIT4;

我希望引脚 D6 (PE_9) 上有一个 PWM 信号来驱动 LED。但是 LED 似乎什么也没做。

4

1 回答 1

0

我没有一点一点地检查您的代码,但总体上看起来还可以。但我怀疑问题的可能原因是:通常您应该等待几个时钟周期,然后才能在启用其时钟后访问任何外围设备。我可能错了,但外设可能会忽略这两行代码,因为它们是在启用时钟后立即执行的:

TIM1->CCMR1 |= BIT5 | BIT6;
GPIOE->MODER |= BIT19;

我建议使用调试器检查是否所有外设寄存器都加载了正确的值。

我还建议尝试其他 PWM 通道。由于电路板硬件配置,您使用的引脚可能存在一些冲突。

于 2019-11-08T14:31:03.127 回答