簡體   English   中英

如何在沒有 CubeMX 的情況下在 STM32F3 上實現 PWM?

[英]How to realise on a STM32F3 a PWM without CubeMX?

首先,感謝所有閱讀本文的人,並嘗試提供幫助。

我有一個小項目。 使用 STM32F303 構建的 3x3x3 LED 杯。 我嘗試讓 TIM2 與三個通道一起工作,但是 .. 沒有任何反應。

這是代碼:

#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. 正如本斯提到的:使用 |= 用於 CCER
  2. CR1 上也一樣,雖然這里沒有必要
  3. 在 CCMR 中的每個啟用通道上設置 PE 位(預加載啟用)
  4. 最后在 EGR 寄存器中設置 UE 位(更新生成)

希望這就是全部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM