上位机软件界面认识
讲几个常用或较重要的工具和页面:
- 下载:通过串口将设计的界面下载给串口屏
- 工具箱:里面有许多控件令我们挑选,也就是设计自己想要的GUI,例如,点击文本控件,插入到GUI:
- 在界面右下角的窗口,可以操作控件的属性,例如:将刚插入的文本控件文本改为“你好”,背景色为蓝色:
当如,要想写入自己想要的文本,必须要先创建自己的字库,并添加到左下角窗口字库页面
4.Page 页面
工具箱里随意按置一个控件都会有按下事件和弹起事件,选择控件后,在命令窗口的弹起事件输入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)
{
## 最后
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**
**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/a56e6f0c40256ee544ba5aba50f3e48f.png)
![img](https://img-blog.csdnimg.cn/img_convert/5c4010a95b358ee34c41db7dcb511bbc.jpeg)
![img](https://img-blog.csdnimg.cn/img_convert/791e87ec7da7b8ea55393de8b2b01498.png)
![img](https://img-blog.csdnimg.cn/img_convert/2a47de47c0fb66415b4d86c401cb1e5d.png)
![img](https://img-blog.csdnimg.cn/img_convert/cd7d0b882d607acfac17f7b9a6ac134f.png)
![img](https://img-blog.csdnimg.cn/img_convert/9b93991ca47335248076181b8a806b15.png)
![](https://img-blog.csdnimg.cn/img_convert/2f6293a9baecdc017a7db68d544e702d.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**
[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!
91817)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**
[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!