陶晶驰HMI3.5寸串口屏的详解之梳理F4总结系列准备篇
Posted Sumjess
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了陶晶驰HMI3.5寸串口屏的详解之梳理F4总结系列准备篇相关的知识,希望对你有一定的参考价值。
基于stm32的串口屏教程。用过的人都说好,哈哈哈,减少了我们很多不太必要的麻烦步骤。
微信公众号下载地址:① 关注Tech云 ② 回复陶晶驰HMI3.5寸串口屏的详解 文章最后有下载链接
一、HIM串口屏(上位机端)
我们对以下几个常用的模块写一个专门的测试程序,也对HIM与stm32的通信函数进行了封装。
滑动文本控件:g0.txt="文本测试"
文本控件: t0.txt="测试成功ok"
进度条控件:j0.val=90
滑块控件:h0.val=66
数字控件:n0.val=1236
单选框控件:r0.val=0
多选框控件:c0.val=1
二、HIM串口屏与STM32的通信函数:
(1)字符串接收函数:uint8_t Usart_Sum_rec( USART_TypeDef * pUSARTx, uint8_t * rev)
- 返回值:1为获取数据成功 0为获取数据失败
- USART_TypeDef * pUSARTx 选择串口输出,注意必须先初始化、使能该串口
- uint8_t * rev 利用指针获取数据
//字符接收函数:
//uint8_t Usart_Sum_rec( USART_TypeDef * pUSARTx, uint8_t * rev)
//返回值:1为获取数据成功 0为获取数据失败
//USART_TypeDef * pUSARTx 选择串口输出,注意必须先初始化、使能该串口
//uint8_t * rev 利用指针获取数据
uint8_t Usart_Sum_rec( USART_TypeDef * pUSARTx, uint8_t * rev)
if(USART_GetFlagStatus(pUSARTx,USART_FLAG_RXNE)!=RESET)
*rev = USART_ReceiveData(pUSARTx);
Delay_ms(1);
return 1;
return 0;
(2)字符串发送函数:HMI_SendText(USART_TypeDef* USARTx,u8 *data,u8 len,u8 *text,u8 len2)
- USART_TypeDef* USARTx: 选择串口输出,注意必须先初始化、使能该串口
- char *data:上位机上文本位相应的改变数值代码,如"t0.txt="、"t1.txt="
- u8 len:*data代码的长度。如"t0.txt="长度为7。
- char *text:需要串口输出显示的文本
- u8 len2:需要显示的文本的长度,英文一个字符一字节、汉字一个字两个字节
//字符串发送函数:
//HMI_SendText(USART_TypeDef* USARTx,u8 *data,u8 len,u8 *text,u8 len2)
//USART_TypeDef* USARTx: 选择串口输出,注意必须先初始化、使能该串口
//char *data:上位机上文本位相应的改变数值代码,如"t0.txt="、"t1.txt="
//u8 len:*data代码的长度。如"t0.txt="长度为7。
//char *text:需要串口输出显示的文本
//u8 len2:需要显示的文本的长度,英文一个字符一字节、汉字一个字两个字节
void HMI_SendText(USART_TypeDef* USARTx,char *data,u8 len,char *text,u8 len2)
u8 t;
for(t=0;t<len;t++)
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,data[t]);
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET) ; //双引号
USART_SendData(USARTx,0X22);
for(t=0;t<len2;t++)
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,text[t]);
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET); //双引号
USART_SendData(USARTx,0X22);
for(int count=0;count<3;count++)
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,0XFF);
(3)数值发送函数:void HMI_SendNum(USART_TypeDef* USARTx,char *data,u8 len,u16 Num,u8 len2)
- USART_TypeDef* USARTx: 选择串口输出,注意必须先初始化、使能串口
- char *data:上位机上数字位相应的改变数值代码
- u8 len:*data代码的长度。
- u16 Num:需要显示的数值,注意开头0不显示
- u8 len2:需要显示的数值的位数
//10的乘方函数,用于判断位数
u32 HMI_Pow(u8 n)
u32 result=1;
while(n--)result*=10;
return result;
//数值发送函数
//USART_TypeDef* USARTx: 选择串口输出,注意必须先初始化、使能串口
//char *data:上位机上数字位相应的改变数值代码
//u8 len:*data代码的长度。
//u16 Num:需要显示的数值,注意开头0不显示
//u8 len2:需要显示的数值的位数
void HMI_SendNum(USART_TypeDef* USARTx,char *data,u8 len,u16 Num,u8 len2)
u8 t;
for(t=0;t<len;t++)
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,data[t]);
for(t=0;t<len2;t++)
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,0+(Num/HMI_Pow(len2-t-1))%10); //转化为字符型+48
for(int count=0;count<3;count++)
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,0XFF);
三、HIM串口屏与stm32的通信测试程序:
void HMI_Test(void)
uint8_t rev_num=0; //接收数据使用
//写入检测//
//滑动文本控件:g0.txt="文本测试"
HMI_SendText(UART5,"g0.txt=",7,"文本测试",16);
Delay_ms(100);
//文本控件: t0.txt="测试成功ok"
HMI_SendText(UART5,"t0.txt=",7,"测试成功ok",16);
Delay_ms(100);
//进度条控件:j0.val=90
HMI_SendNum(UART5,"j0.val=",7,90,4);
Delay_ms(10);
//滑块控件:h0.val=66
HMI_SendNum(UART5,"h0.val=",7,66,4);
Delay_ms(10);
//数字控件:n0.val=1236
HMI_SendNum(UART5,"n0.val=",7,1236,4);
Delay_ms(10);
//单选框控件:r0.val=0
HMI_SendNum(UART5,"r0.val=",7,0,4);
Delay_ms(10);
//多选框控件:c0.val=1
HMI_SendNum(UART5,"c0.val=",7,1,4);
Delay_ms(10);
//读取检测//
while(1)
if(Usart_Sum_rec(UART5,&rev_num)) //如果接收到了数据
if(rev_num==3) //如果接收到了数据3
HMI_SendNum(UART5,"h0.val=",7,0,4); //滑块控件:h0.val=0
Delay_ms(10);
以上是关于陶晶驰HMI3.5寸串口屏的详解之梳理F4总结系列准备篇的主要内容,如果未能解决你的问题,请参考以下文章