我用串口助手发送指令电亮PWM光源,频率20Khz,发送指令亮度从0-6是由变化的,从7开始一直到亮度99亮度一直是一个样,然后发送100的亮度,亮度反而变低了,请问这个是什么原因?
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
uint8_t ucTemp;
if(huart ->Instance == USART1)
{
ucTemp = aRxBuffer;
Uart1_RxBuff[Uart1_Rx_Cnt++] = ucTemp;
if(Uart1_RxBuff[0]!=0xa3)
Uart1_Rx_Cnt=0;
if((Uart1_Rx_Cnt==2) && (Uart1_RxBuff[1]!=0xb3))
Uart1_Rx_Cnt=0;
if(Uart1_Rx_Cnt==8)
{
if(data_test(Uart1_RxBuff))
{
/********************
¸üDÂêy¾Y
*********************/
turn = Uart1_RxBuff[2];
pwm = Uart1_RxBuff[3];
if(turn == 0)
{
pwm_light(0);
}
else if(turn == 1)
{
pwm_light( pwm);
}
}
Uart1_Rx_Cnt = 0;
}
HAL_UART_Receive_IT(&huart1,&aRxBuffer,1);
}
}
void pwm_light(uint8_t pwm)
{
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1, pwm);
}
引用: yangjiaxu 发表于 2024-9-11 12:03 PWM控制器的占空比设置可能存在问题,导致在某些亮度值时占空比没有变化;或者控制软件的逻辑可能存在问题 ...
整个接受串口逻辑只有这个,然后光源处理逻辑就是PWM_light: __HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1, pwm);