如何在STM板上的端口D6(PE_9)上获得PWM信号?

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

我正在对一块板进行编程,希望PWM信号出现在引脚上以驱动LED。我正在使用STM32 NUCLEO-F207ZG开发板,并且仅使用低级寄存器编程。它不起作用。

我研究了手册,数据表和应用笔记。还完成了一些Google搜索。

//启用计时器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似乎无能为力。

c timer stm32 pwm nucleo
1个回答
0
投票

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

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

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

我也建议尝试其他PWM通道。由于板卡的硬件配置,可能与您使用的引脚有一些冲突。

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