STM32与串口屏交互(USART HMI)

STM32与串口屏交互(USART HMI)


前言

最近大创和嵌入式比赛都使用到了串口屏,刚开始学习也没什么头绪,后来瞎搞搞就能用了,但是我设计的非常简单,还有很多需要优化的地方,后面我会将代码发出来。为什么我要用串口屏呢?串口屏综合了以上屏幕的特点,即尺寸大、管脚少,能够充分减少占用单片机的I/O资源,且支持触摸。串口屏可作为输出设备(显示)以及输入设备(按键),开发难度小,操作简单,软件要求低且拥有专门的上位机辅助开发,重点是:看着牛


一、前期准备

界面设计就不多做叙述,我直接写关于stm32与串口屏交互的部分

二.关于在上位机USART HMI里面的一些配置

1.首先是在program.s里面定义一个全局变量的标志位
在这里插入图片描述

2.我这边使用的是双态按钮,只有0和1两个值,通过按下后的值向单片机发送一个值,这里是使用了prints函数直接通过串口来发送的
在这里插入图片描述到这里串口屏上位机代码的部分就写完了,我写的很简单,也没个帧头帧尾的,大家可以加上。

三.stm32的代码部分

关于单片机的代码部分,我是用的是stm32f407zgt6的最小系统板,这里必须注意下,最小系统板和核心板要 避免使用串口1,因为下载程序的时候会占用(PA9 PA10)这两个引脚,所以这个问题困扰了我很久,后来突然想到这件事情,我换成串口2就正常了**

下面是代码展示

#include "tjc.h"
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>

///*
//* 描述: HAL库实现多串口使用printf输出
//* 参数: huart:对应的串口结构体
//* 返回: 无*/
void Uart_printf(UART_HandleTypeDef *huart,char *format, ...)
{
  char buf[512]; //定义临时数组,根据实际发送大小微调

  va_list args;
  va_start(args, format);
  uint16_t len = vsnprintf((char *)buf, sizeof(buf), (char *)format, args);
  va_end(args);
  HAL_UART_Transmit(huart,(u8 *)buf,len,1000);
}

#ifndef __TJC_H
#define __TJC_H

#include "stm32f4xx_hal.h"

#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t
#define u64 uint64_t
typedef __IO uint32_t  vu32;
typedef __IO uint16_t vu16;
typedef __IO uint8_t  vu8;
extern void HAL_Delay_us(uint32_t nus);

void Uart_printf(UART_HandleTypeDef *huart,char *format, ...);

#endif
/* USER CODE BEGIN PV */
uint8_t cmd;
uint8_t flag=0;
/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
  
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	
	if(huart->Instance == USART2){
		switch(cmd)
		{
			case 0x01:
				flag=1;
			break;
			case 0x02:
				flag=2;
			break;
		}
		HAL_UART_Receive_IT(&huart2, &cmd, 1);
	
	}
}
/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_TIM1_Init();
  MX_USART2_UART_Init();
  MX_ADC1_Init();
  MX_TIM3_Init();
  /* USER CODE BEGIN 2 */
  HAL_UART_Receive_IT(&huart2, &cmd, 1);
  
  DHT11_Strat();					//开始启用DHT11
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

	  DHT11_Read_Data(&temperature , &humidity);   //读取dht11温湿度传感器
	  MQ2_Read_Data();							//读取mq2烟雾传感器
	  
	  Uart_printf(&huart2,"page1.n0.val=%d\xff\xff\xff",temperature);//串口屏实时显示温度	
	  Uart_printf(&huart2,"page1.n1.val=%d\xff\xff\xff",humidity);//串口屏实时显示湿度	  
	  Uart_printf(&huart2,"page1.n2.val=%d\xff\xff\xff",(int)ppm);//串口屏实时显示烟雾浓度	 
	  
	  if(flag==1)						//串口接收中断接收到串口屏发来的数据,点亮小灯
	  {
		HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET);
	  }
	  else if(flag==2)					//串口接收中断接收到串口屏发来的数据,熄灭小灯
	  {
		HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_SET);
	  }
	 
	  HAL_Delay(800);
	  
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

总结

提醒有可能踩雷的地方:
1.串口屏与stm32接线错误
2.最小系统板和核心板避免使用串口1(亲自踩过坑)

串口屏软件USART HMI下载是指通过串口连接的屏幕设备所需的软件程序。串口屏软件通常用于控制各种应用领域中的触摸屏、人机界面设备等,实现人机交互。 首先,我们需要从可靠的来源下载串口屏软件,比如官方网站或一些知名的软件下载平台。确保下载的软件是最新版本,以获得最佳的使用体验和功能。 下载完成后,解压缩并安装软件。通常,安装过程简单明了,只需按照软件提供的指示进行操作即可。安装完成后,我们可以开始配置和使用串口屏软件。 接下来,通过串口将电脑与屏幕设备连接起来。通常,采用USB串口转接器将PC的USB接口转换为串口接口,然后将转接器与屏幕设备连接。确保连接正确,这样才能正常通信。 打开串口屏软件并进行相应的配置。首先,选择正确的串口端口(COM端口)和波特率(Baud Rate),这些参数与屏幕设备的通信协议相对应。其次,根据需要配置其他参数,比如数据位、停止位和校验位等。 配置完成后,即可开始使用串口屏软件控制屏幕设备。可以通过软件发送指令给屏幕设备,实现对屏幕的显示内容、触摸操作等进行控制。同时,串口屏软件还支持导入图片、音频、视频等多媒体元素,丰富显示效果。 在使用过程中,可能会碰到一些问题,比如无法正常通信或配置错误等。这时,可以参考软件提供的帮助文档或在相关论坛、社区中寻求帮助。另外,保持软件更新也是很重要的,以获得更好的兼容性和稳定性。 总之,USART HMI串口屏软件提供了一种便捷的控制屏幕设备的方式,通过正确的下载、安装和配置,我们可以充分发挥串口屏软件的功能,实现更加灵活多样的人机交互方式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值