USART_HMI串口屏幕
一、串口屏简介
串口屏、TFT、oled屏
不多说了~串口屏NB
二、上位机(屏幕UI)
制作一个简单工程 ------- 如上非常简单,总结一下流程
1.新建工程选择:版型、显示方向
2.Program.s加入
在page指令之前添加如下配置,注意必须添加在page之前,因为page之后的指令是不会执行的
//以下代码只在上电时运行一次,一般用于全局变量定义和上电初始化数据
int sys0=0,sys1=0,sys2=0 //全局变量定义目前仅支持4字节有符号整形(int),不支持其他类型的全局变量声明,如需使用字符串类型可以在页面中使用变量控件来实现
bkcmd=3 //都有返回值
baud=115200 //波特率
dims=100 //亮度
page 0 //上电刷新第0页
3.制作-保存-添加字库
4.添加模块-了解其属性
5.调试
三、下位机(STM32)
STM32程序 修改全局变量n0~n5的值即可在修改屏幕上的数字
PA9----USART1 TX
PA10---USART1 RX
PA2----USART2 TX
PA3----USART2 RX
printf已经重定向
main.c
#include "main.h"
#include "usart.h"
#include "gpio.h"
#include "stdio.h"
/*******************************************
* 时间: 2021.4.4
* 作用:串口1————与串口屏通信 修改n0.val
* 串口2————与pc通信调试
* 作者:黄新煜
*********************************************/
int n0=0; //一号数目
int n1=0; //二号数目
int n2=0; //三号数目
int n3=0; //四号数目
int n4=0; //残留数目
uint8_t Tx_str2[] = "stm32上电\r\n";
uint8_t Rx_dat =0 ;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART2)
{
n0=(int)Rx_dat;
HAL_UART_Receive_IT(&huart2,&Rx_dat,1);
}
}
void HMI(void)
{
printf("n0.val=%d\xff\xff\xff",n0);
printf("n1.val=%d\xff\xff\xff",n1);
printf("n2.val=%d\xff\xff\xff",n2);
printf("n3.val=%d\xff\xff\xff",n3);
printf("n4.val=%d\xff\xff\xff",n4);
}
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_USART2_UART_Init();
HAL_UART_Transmit(&huart2,Tx_str2,sizeof(Tx_str2),10000);
//向上位机发送"stm32上电"
while (1)
{
HAL_UART_Receive_IT(&huart2,&Rx_dat,1); //启动串口2接收上位机1个字节
HMI(); //更新屏幕数据
}
}
usart.c
#include "stdio.h"
int fputc(int ch,FILE *f)
{
uint8_t temp[1]={ch};
HAL_UART_Transmit(&huart1,temp,1,2);
return 0;
}