gpt4 book ai didi

c - 如何在STM32F3上实现没有CubeMX的PWM?

转载 作者:太空宇宙 更新时间:2023-11-04 03:14:32 25 4
gpt4 key购买 nike

首先,感谢所有阅读本文并试图提供帮助的人。

我有一个小项目。一个 3x3x3 LED 灯杯,使用 STM32F303 构建。我尝试让 TIM2 与三个 channel 一起工作,但是..没有任何反应。

代码如下:

#include "stm32f3xx.h" 
#include "stm32f3xx_nucleo.h"

int main(void){
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;

GPIOA->MODER |= 0b10; //PA0
GPIOA->MODER |= 0b10 << 2; //PA1
GPIOA->MODER |= 0b10 << 4; //PA2

GPIOA->AFR[0] |= 0b0001;
GPIOA->AFR[0] |= 0b0001 << 4;
GPIOA->AFR[0] |= 0b0001 << 8;

TIM2->CCMR1 = (0b0110 << 4) | (0b0110 << 12);
TIM2->CCMR2 = 0b0110 << 4;

TIM2->CCER = TIM_CCER_CC1E;
TIM2->CCER = TIM_CCER_CC2E;
TIM2->CCER = TIM_CCER_CC3E;


TIM2->PSC = 7999;
TIM2->ARR = 999;

TIM2->CCR1 = 99;
TIM2->CCR2 = 399;
TIM2->CCR3 = 699;

TIM2->CR1 = TIM_CR1_CEN;

while (1)
{
;
}

有什么想法吗?

最佳答案

似乎你错过了什么。

  1. 如 Bence 所述:使用 |= 表示 CCER
  2. 在 CR1 上相同,尽管这里没有必要
  3. 在 CCMR 中的每个使能 channel 上设置 PE 位(预加载使能)
  4. 最后在 EGR 寄存器中设置 UE 位(更新生成)

希望就这些。

关于c - 如何在STM32F3上实现没有CubeMX的PWM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53230061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com