-
请教ch32v103c8t6驱动WS2812B问题
各位大佬好,我使用PWM+DMA的方式驱动RGB,实现简单的流水灯效果,但是灯效太快。通过delay的调节速度,效果不理想,甚至没有流水效果。代码如下:#include"ch32v10x.h"#defineT0H30#defineT1H60#defineLED_NUM16#defineDATA_NUM24u16RGB[DATA_NUM*LED_NUM];voidTIM1_PWMOUTPUT_Init(u16arr,u16psc,u16ccp){GPIO_InitTypeDefGPIO_InitStruct;//GPIO结构体与TIMBase结构体未初始化,暂时没看出问题TIM_OCInitTypeDefTIM_OCInitStruct={0};//PWM结构体必须初始化TIM_TimeBaseInitTypeDefTIM_TimeBaseInitStruct={0};//这个结构体不初始化,无法点亮灯具体原因未知//时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);//引脚GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8;GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStruct);//TIM1TIM_TimeBaseInitStruct.TIM_Period=arr-1;TIM_TimeBaseInitStruct.TIM_Prescaler=psc;TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStruct);//PWMTIM_OCInitStruct.TIM_Pulse=ccp;TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;//TIM_OCInitStruct.TIM_OutputNState=TIM_OutputNState_Disable;TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;TIM_OC1Init(TIM1,&TIM_OCInitStruct);TIM_CtrlPWMOutputs(TIM1,ENABLE);TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);TIM_ARRPreloadConfig(TIM1,ENABLE);}voidDMA1_Init(){DMA_InitTypeDefDMA_InitStruct;//如果这个结构体初始化,第一个灯将会最后亮//时钟RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);//DMADMA_DeInit(DMA1
2022-10-25 0