Deseo conducir un conjunto de NEOPIXELS (ws2812b) usando la placa de descubrimiento STM32F4, hasta ahora logré obtener una señal PWM de 800 kHz usando CubeMX.
Y
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
/* USER CODE END 2 */
Pero cuando agrego estas líneas de código
/* 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 */
Mi señal PWM simplemente desaparece, ¿qué debo hacer para controlar el PWM con DMA?
editar:
está publicando la secuencia DMA, pero el DMA debe cambiarse a circular para verlo en un alcance
El código transmitía correctamente la secuencia DMA, pero era necesario cambiar el DMA al modo circular o repetido para verlo en un visor. Cuando solo se ejecutaba en modo lineal o de un solo disparo, no tenía la oportunidad de ver el resultado la única vez que se producía.
Nick Alexeev