STM32 kann kein DMA auf PWM bekommen

Ich möchte einen Satz NEOPIXELS (ws2812b) mit dem STM32F4 Discovery Board ansteuern, bisher ist es mir gelungen, mit dem CubeMX ein 800-kHz-PWM-Signal zu erhalten.Geben Sie hier die Bildbeschreibung ein

Und

Geben Sie hier die Bildbeschreibung einUnd folgender Code:

/* USER CODE BEGIN 2 */

HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);

/* USER CODE END 2 */

Aber wenn ich diese Codezeilen hinzufüge

/* USER CODE BEGIN Init */
uint16_t pData[25] = {8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,2,2,2,2,2,2,2,2,0};

/* USER CODE END Init */

...

/* USER CODE BEGIN 2 */

//HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
HAL_TIM_PWM_Start_DMA(&htim1, TIM_CHANNEL_1, (uint32_t *)pData, 25);

/* USER CODE END 2 */

Mein PWM-Signal verschwindet einfach, was muss ich tun, um die PWM mit DMA zu steuern?

Bearbeiten:
Es wird die DMA-Sequenz gepostet, aber die DMA muss in kreisförmig geändert werden, um sie auf einem Bereich anzuzeigen

Kommentare sind nicht für längere Diskussionen gedacht; diese Konversation wurde in den Chat verschoben .

Antworten (1)

Der Code hat die DMA-Sequenz korrekt übertragen, aber der DMA musste in den Zirkular- oder Wiederholungsmodus geändert werden, um ihn auf einem Oszilloskop zu sehen. Wenn es nur im linearen oder One-Shot-Modus lief, hatte ich keine Chance, die Ausgabe beim einzigen Mal zu sehen, als es produziert wurde.

Ist das die Lösung für Ihr Problem oder nur eine zusätzliche Klarstellung?