陶晶驰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

陶晶驰HMI3.5寸串口屏的详解之梳理F4总结系列准备篇(二)_STM32与HIM串口屏

二、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总结系列准备篇的主要内容,如果未能解决你的问题,请参考以下文章

STM32F4 HAL库开发 -- 串口

STM32F4 HAL库开发 -- 串口

STM32F4 HAL库开发 -- 串口

STM32F4串口打印 while函数出错

2.1寸旋钮屏结合6.86寸串口屏助力集成灶智能升级|启明智显

串口屏开发之二维码控件的使用总结——如何显示和更新二维码