如何才能按键按下一次,单片机就发送一次数据到串口助手,而且灯会点亮?
[复制链接]
本帖最后由 xbxdbd 于 2024-1-25 14:11 编辑
第一次尝试写代码程序,我想按键按下一次,单片机就发送一次数据到串口助手,而且灯会点亮,按另外一个按键,发送一次另外的数据指令,灯会灭,但是我这边串口助手一直重复接收,按第二个按键串口助手还没有任何的反应,会是按键灵敏度的问题吗?还是说这个程序的逻辑是有问题的?偶尔才能收到第二个按键关闭的指令,求大佬帮忙是什么原因?我应该怎么修改
void Channel_control()
{
if(key_flag1==1)
{
memset(buf,'\0',10);
buf[0]=0x55;
buf[1]=0xA5;
buf[2]=0x01;
buf[3]=0x00;
buf[4]=0x00;
buf[5]=0x00;
buf[6]=0x21;
buf[7]=0x2D;
buf[8]=0x21;
buf[9]=0x21;
HAL_Delay(2000);
}
if(key_flag1==2)
{
memset(buf,'\0',10);
buf[0]=0x55;
buf[1]=0xA5;
buf[2]=0;
buf[3]=0;
buf[4]=0;
buf[5]=0;
buf[6]=0x21;
buf[7]=0x2D;
buf[8]=0x21;
buf[9]=0x21;
key_flag1=0;
HAL_Delay(2000);
}
if(key_flag6==1)
{
memset(buf,'\0',10);
brightness1=brightness1+1;
buf[0]=0x55;
buf[1]=0xA5;
buf[2]=0x01;
buf[3]=0;
buf[4]=0;
buf[5]=0;
buf[6]=brightness1;
buf[7]=0x21;
buf[8]=0x21;
buf[9]=0x21;
key_flag6=0;
}
if(key_flag11==1)
{
memset(buf,'\0',10);
brightness1=brightness1-1;
buf[0]=0x55;
buf[1]=0xA5;
buf[2]=0x01;
buf[3]=0;
buf[4]=0;
buf[5]=0;
buf[6]=brightness1;
buf[7]=0x21;
buf[8]=0x21;
buf[9]=0x21;
key_flag11=0;
}
HAL_UART_Transmit(&huart1, (uint8_t*)buf, sizeof(buf), 10);
HAL_Delay(200);
}
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_USART2_UART_Init();
while (1)
{
key_scan();
HAL_Delay(200);
JPEG_Display(0x00);//屏幕开机页面
HAL_Delay(200);
Channel_control();
Channe2_control();
Channe3_control();
Channe4_control();
Toghter_Control();
Draw_Trangle(0xBC40,46,75,90,261);
Draw_Trangle(0x001F,185,75,230,261);
Draw_Trangle(0x07E0,308,75,352,261);
Draw_Trangle(0xF800,406,75,450,261);
}
}
|