xbxdbd 发表于 2024-9-10 16:01

串口助手发送PWM光源指令,光源显示很奇怪?

<p>我用串口助手发送指令电亮PWM光源,频率20Khz,发送指令亮度从0-6是由变化的,从7开始一直到亮度99亮度一直是一个样,然后发送100的亮度,亮度反而变低了,请问这个是什么原因?</p>

<pre>
<code>void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
        uint8_t ucTemp;

        if(huart -&gt;Instance == USART1)
    {
                                ucTemp = aRxBuffer;
                                Uart1_RxBuff = ucTemp;
                                if(Uart1_RxBuff!=0xa3)
                                        Uart1_Rx_Cnt=0;
                                if((Uart1_Rx_Cnt==2) &amp;&amp; (Uart1_RxBuff!=0xb3))
                                        Uart1_Rx_Cnt=0;
                                if(Uart1_Rx_Cnt==8)
                                {
                                        if(data_test(Uart1_RxBuff))
                                        {

                                                /********************
                                                ¸üDÂêy¾Y
                                                *********************/
                                               
                                                turn = Uart1_RxBuff;
                                                pwm = Uart1_RxBuff;

                                               
                                               
                                                if(turn == 0)
                                                {
                                                                pwm_light(0);
                                                }
                                                else if(turn == 1)
                                                {
                                                                pwm_light( pwm);
                                                }
       
                                        }
                                        Uart1_Rx_Cnt = 0;
                                }
                               
                                HAL_UART_Receive_IT(&amp;huart1,&amp;aRxBuffer,1);
    }
}
voidpwm_light(uint8_t pwm)
{

   __HAL_TIM_SetCompare(&amp;htim2,TIM_CHANNEL_1, pwm);

}


</code></pre>

<p>&nbsp;</p>

秦天qintian0303 发表于 2024-9-11 08:39

<p>这个得看占空比和亮度控制之间是不是线性的,有很多这样的例子,固定占空比去测试一下</p>

yangjiaxu 发表于 2024-9-11 12:03

<p>PWM控制器的占空比设置可能存在问题,导致在某些亮度值时占空比没有变化;或者控制软件的逻辑可能存在问题,导致在某些亮度值时无法正确控制PWM输出</p>

xbxdbd 发表于 2024-9-12 08:35

yangjiaxu 发表于 2024-9-11 12:03
PWM控制器的占空比设置可能存在问题,导致在某些亮度值时占空比没有变化;或者控制软件的逻辑可能存在问题 ...

<p>整个接受串口逻辑只有这个,然后光源处理逻辑就是PWM_light:&nbsp; &nbsp;__HAL_TIM_SetCompare(&amp;htim2,TIM_CHANNEL_1, pwm);</p>
页: [1]
查看完整版本: 串口助手发送PWM光源指令,光源显示很奇怪?