当前位置:   article > 正文

基于STM32CUBEMX的淘晶驰串口屏通讯入门_淘晶驰串口屏和stm32

淘晶驰串口屏和stm32

文件名称为HMI CODE,包含两个字库和一个工程

双击test打开工程并照教程载入字库

如图所示为工程模板

如何串口通讯改变屏幕参数

首先点击上方的调试界面进入调试

点击左下角键盘输入,在指令区域输入x1.val=1点击执行所有代码

可以看到此时绿灯旁边示数为0.01这是因为采用了虚拟浮点数,因此想要显示小数就必须乘以100来显示。比如要显示3.14,输入就是314

以串口3为例,单片机执行指令

HAL_UART_Transmit(&huart3,"x1.val=1000\xff\xff\xff", 14, 0xffff);

注意14为长度是要算好的,其他指令根据长度是要变换的,三个\xff为截止符一定要加。

此时选择用户MCU输入,选择好波特率和串口并点击开始可以看到

Vci示数为10,我们输入的指令是1000,虚拟浮点数减少两位为10

如何关机保存数据

写入一个变量到用户存储区(EEPROM)

(支持X3、X5、K0系列)

wepo att,add

att:变量/常量

add: 用户存储区位置(从0开始,到1023结束,总共1024个)

实例1:wepo t0.txt,10 (将t0.txt的内容写入用户存储区的第10位置,在储存区中的占用空间为t0.txt的最大设置值+1,即t0的txt-maxl属性表示的大小+1,假如txt-maxl=20,那么最多可以放下10个汉字或者20个英文字母,实际占用的控件为10-30,共21个位置,下个存储地址应从31开始)

实例2:wepo “abcd”,20   (将字符串“abcd”写入用户存储区的第20位置,在储存区中占用大小为5字节,一个英文字母1个字节,共四个字节,因为是字符串,多加1个字节,最后为5个字节,实际存储地址为20-24,注意:由双引号括起来的或者xx.txt的就是字符串)

实例3:wepo 125,10   (将数值125写入用户存储区的第10位置, 在储存区中占用大小为4字节,即10-13位置)

实例4:wepo “一二三四五”,100 (将”一二三四五”字符串写入用户存储区的第100位置,每个汉字占用2字节,5个汉字共10字节,因为是字符串,加1字节,共11字节,实际存储地址100-110,下个存储地址应该从111开始)

备注:

1.写入内容为变量字符串的时候,在储存区中的占用空间为此变量的最大字符数+1;写入内容为常量字符串的时候,在储存区中的占用空间为此常量字符串的实际字符数+1。

2.写入内容为变量数值或常量数值的时候,在储存区中的占用空间统一为4字节。

3.使用用户存储区读写操作过程中请切记规划好数据区位置,以免位置交错引起数据覆盖错乱。

从用户存储区(EEPRO)读数据到一个变量

repo att,add

att:目标变量

add: 用户存储区位置(从0开始)

实例1:repo t0.txt,10   (从用户存储区的10位置读数据到t0.txt变量中,在储存区中的读取数据量为t0.txt的最大设置值+1,即t0的txt-maxl属性表示的大小+1)

实例2.repo n0.val,10   (从用户存储区的10位置读数据到n0.val,在存储区中的读取数据量为4字节)

备注:

1.读入内容为变量字符串的时候,在储存区中的读取数据量为此变量的最大字符数+1。

2.读入内容为变量数值时候,在储存区中的读取数据量统一为4字节。

3.使用用户存储区读写操作过程中请切记规划好数据区位置,以免位置交错引起数据覆盖错乱。

如何实现按键长按功能

1.新建一个定时器tm0,en属性设置为0,其他属性不用管;此时定时器处于默认关闭状态。

2.在按钮的按下事件中写上如下代码:

tm0.tim=2000     2秒后进入长按功能

tm0.en=1         打开定时器

3.在按钮的弹起事件中写上如下代码:

tm0.en=0        已经松手了,所以定时器立即停止工作

4.在定时器tm0的定时事件中写上如下代码:

tm0.tim=100      按钮刚按下的时候,定时时间是2秒,这里修改为100ms,就意味着如果不松手,每100ms会来执行一次后面的代码

此处写上您想操作的长按事件代码,比如:n0.val++

如何实现单片机读取数据

如图选择滑块来实现频率的改变

在弹起事件和滑动事件中输入

  1. n1.val=h1.val      使用n1显示示数
  2. printh AA         起始标识符,可以自己更改,主要作用是让单片机识别串口数据是谁的
  3. prints h1.val,1     将h1的数据发送出去,长度为1
  4. printh BB         结束标识符,可以自己更改,作用同上
  5. wepo h1.val,10    如前面介绍将数字保存起来

此时单片机内使用字符串接收,黄色部分不能去掉,会报错

  1. #define RXBUFFERSIZE  6    //最大接受字节数
  2. uint8_t RxBuffer[RXBUFFERSIZE];   //接收数据

在主函数写入

HAL_UART_Receive(&huart3, (uint8_t *)&RxBuffer,4,0xff);

此时做逻辑判断

  1. if (RxBuffer[0]==0xAA&&RxBuffer[2]==0xBB) //起始位00XAA结束位是0XBB
  2. {
  3.        fre_fenpin=RxBuffer[1];     //fenpin等于第二个数组,也就是我们发送的数据
  4.        fre_val = (fre_fenpin)*10//乘以10,因为我分频采用了71,需要计算
  5.        TIM8->ARR=fre_val;//更改频率,不做解释
  6.              HAL_Delay(1);
  7. }

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/839076
推荐阅读
相关标签
  

闽ICP备14008679号