工具箱里随意按置一个控件都会有按下事件和弹起事件,选择控件后,在命令窗口的弹起事件输入page 1(1是页面的id号,也可改为自己更改后的名字),当使用时,点击控件,就会跳到相应的界面
勾选“发送键值”,串口屏会发送相应信息给MCU。
设计出了自己想要的GUI界面后,就可以点击左上角的调试功能,实现自己的界面。
实例
设计好自己的GUI界面后,我们就要下载到串口屏上了,首先在硬件上,将串口屏的发送和接收引脚与单片机的串口接收、发送引脚连好,之后,点击Program.s里设置波特率为115200,再点击下载
代码:
这里只给出部分代码作参考
HMI协议(接收串口屏键值信息)代码:
/*
* @name HMI_Protocol
* @brief 接口协议 - 接收键值信息
* @param None
* @retval None
*/
static void HMI_Protocol(void)
{
uint8_t Temp_Array[7] = {0x00};
uint8_t i = 0,Index = 0;
//串口1停止DMA接收
HAL_UART_DMAStop(&huart1);
//读取缓存,一共7个字节,起始值为0x65
for(i=0;i<HMI_Rec_Buffer_LENGTH;i++)
{
//检测起始值0x65
if(Index == 0)
{
if(*(HMI.pucRec_Buffer+i) != 0x65)
continue;
}
Temp_Array[Index] = *(HMI.pucRec_Buffer+i);
//已读取7个字节
if(Index == Protocol_Data_LEN)
break;
Index++;
}
//串口1开启DMA接收
HAL_UART_Receive_DMA(&huart1,HMI.pucRec_Buffer,(uint16_t)20);
//处理数据
if(Index == Protocol_Data_LEN)
{
//主页面键值信息
if(Temp_Array[1] == 0x00)
{
//控件2弹起
if((Temp_Array[2] == 0x02) && (Temp_Array[3] == 0x00))
{
//切换至数码管界面
HMI.Page = Page_Display;
Display.Disp_Clr();
}
//控件3信息
if((Temp_Array[2] == 0x03) && (Temp_Array[3] == 0x00))
{
//切换至步进电机页面
HMI.Page = Page_Step_Motor;
Display.Disp_Clr();
//ÏÔʾµç»úȦÊý
Display.Disp_HEX(Disp_NUM_6,Unipolar_Step_Motor.Circle,Disp_DP_OFF);
//ÏÔʾµç»úËÙ¶È
switch(Unipolar_Step_Motor.Speed)
{
case 100: Display.Disp_HEX(Disp_NUM_1,1,Disp_DP_OFF); break;
case 90: Display.Disp_HEX(Disp_NUM_1,2,Disp_DP_OFF); break;
case 80: Display.Disp_HEX(Disp_NUM_1,3,Disp_DP_OFF); break;
case 70: Display.Disp_HEX(Disp_NUM_1,4,Disp_DP_OFF); break;
case 60: Display.Disp_HEX(Disp_NUM_1,5,Disp_DP_OFF); break;
case 50: Display.Disp_HEX(Disp_NUM_1,6,Disp_DP_OFF); break;
case 40: Display.Disp_HEX(Disp_NUM_1,7,Disp_DP_OFF); break;
case 30: Display.Disp_HEX(Disp_NUM_1,8,Disp_DP_OFF); break;
case 20: Display.Disp_HEX(Disp_NUM_1,9,Disp_DP_OFF); break;
default: break;
}
}
//控件5弹起
if((Temp_Array[2] == 0x05) && (Temp_Array[3] == 0x00))
{
//切换至NTC界面
HMI.Page = Page_NTC;
Display.Disp_Clr();
}
//控件6弹起
if((Temp_Array[2] == 0x06) && (Temp_Array[3] == 0x00))
{
//切换至蜂鸣器界面
HMI.Page = Page_Buzzer;
Display.Disp_Clr();
}
}
//数码管页面信息
if(Temp_Array[1] == 0x01)
{
//控件1弹起
if((Temp_Array[2] == 0x01) && (Temp_Array[3] == 0x00))
{
//切换至主页面
HMI.Page = Page_Main;
Display.Disp_Clr();
}
}
//步进电机页面信息
if(Temp_Array[1] == 0x02)
{
//控件11弹起
if((Temp_Array[2] == 0x0B) && (Temp_Array[3] == 0x00))
{
//切换至主页面
HMI.Page = Page_Main;
Display.Disp_Clr();
//关闭步进电机
Unipolar_Step_Motor.Status = Stop_State;
CLR_Motor_A;
CLR_Motor_B;
CLR_Motor_C;
CLR_Motor_D;
LED.LED_OFF(LED3);
Unipolar_Step_Motor.Circle = 0;
}
//控件5弹起
if((Temp_Array[2] == 0x05) && (Temp_Array[3] == 0x00))
{
HMI.Page_Step_Motor_KEY_Flag = TRUE;
HAL_GPIO_EXTI_Callback(KEY1_Pin);
HMI.Page_Step_Motor_KEY_Flag = FALSE;
}
//控件8弹起
if((Temp_Array[2] == 0x08) && (Temp_Array[3] == 0x00))
{
HMI.Page_Step_Motor_KEY_Flag = TRUE;
HAL_GPIO_EXTI_Callback(KEY2_Pin);
HMI.Page_Step_Motor_KEY_Flag = FALSE;
}
//控件6弹起
if((Temp_Array[2] == 0x06) && (Temp_Array[3] == 0x00))
{
HMI.Page_Step_Motor_KEY_Flag = TRUE;
HAL_GPIO_EXTI_Callback(KEY3_Pin);
HMI.Page_Step_Motor_KEY_Flag = FALSE;
}
//控件7弹起
if((Temp_Array[2] == 0x07) && (Temp_Array[3] == 0x00))
{
HMI.Page_Step_Motor_KEY_Flag = TRUE;
HAL_GPIO_EXTI_Callback(KEY4_Pin);
HMI.Page_Step_Motor_KEY_Flag = FALSE;
}
}
//NTC页面信息
if(Temp_Array[1] == Page_NTC)
{
if((Temp_Array[2] == 0x03) && (Temp_Array[3] == 0x00))
{
//切换至主页面
HMI.Page = Page_Main;
Display.Disp_Clr();
}
}
//蜂鸣器页面信息
if(Temp_Array[1] == Page_Buzzer)
{
//控件2弹起
if((Temp_Array[2] == 0x02) && (Temp_Array[3] == 0x00))
{
//Çл»ÖÁÖ÷Ò³Ãæ
HMI.Page = Page_Main;
Display.Disp_Clr();
}
//控件3弹起
if((Temp_Array[2] == 0x03) && (Temp_Array[3] == 0x00))
{
HMI.Page_Buzzer_Flag = TRUE;
HAL_GPIO_EXTI_Callback(KEY1_Pin);
HMI.Page_Buzzer_Flag = FALSE;
}
}
}
}
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!
26767)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!