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.
Und
/* 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
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.
Nick Alexejew