STM32串口屏学习

前言

高情已逐晓云空,不与梨花同梦。


一、 串口屏端

  • 初始化

    baud=115200		//115200是串口通信的波特率,可以自己随意设置
    
  • 按键

    printh 01		//发送十六位进制数0x01
    
  • 页面切换

    page pagex		//跳转到页面pagex,pagex是页面的名称
    

二、单片机端

  • 文本显示

    printf("t2.txt=\"%u Hz\"\xff\xff\xff",FQ);	//显示频率
    
  • 通道数:可以在一个图形中显示多少个波形;

  • 像素点:2 * 2个方格点、100 * 100个方格点,

  • 波形显示

    printf("add 1,0,%d\xff\xff\xff",30);	//向ID为1的曲线控件的0通道添加数据30
    
  • 判断接收到的数据

    switch(Rec)
    {
    	case 0x01:
    	{
    		LED=0;	//关灯
    	}break;
    	case 0x02:
    	{
    		LED=1;	//开灯
    	}break;
    }
    

三、代码部分

/* USER CODE BEGIN Includes */
#include 
#include "stdarg.h"
#include "math.h"

#define CONSOLEBUF_SIZE 256

static char Uart_buf[CONSOLEBUF_SIZE];

void PrintfDebugUart(const char *fmt, ...)
{
	va_list args;
	va_start(args, fmt);
	int length = vsnprintf(Uart_buf, sizeof(Uart_buf) - 1, fmt, args);
	va_end(args);
	
	HAL_UART_Transmit(&huart1, (uint8_t *)&Uart_buf, length, 0xffff);
}
/* USER CODE END Includes */
/* USER CODE BEGIN 0 */

uint8_t RX;
uint16_t FQ = 1000;
uint8_t a[200];

/* USER CODE END 0 */
  /* USER CODE BEGIN 2 */
	
	//串口中断接收一位数据
	HAL_UART_Receive_IT(&huart1,(uint8_t *)&RX,1);
	for(uint8_t i=0; i<200; i++)
	{
		a[i] = (sin(2 * 3.141596254 * i / 200) + 1) * 1.0 * 100 / 2;
	}
	
  /* USER CODE END 2 */
/* USER CODE BEGIN 4 */
//书写串口中断回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	if(huart == &huart1)
	{
		switch(RX)
		{
			case 0x01:
			{
				HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);
				PrintfDebugUart("t1.txt=\"%d Hz\"\xff\xff\xff",FQ);	//显示频率
				for(uint8_t i=0; i<200; i++)
				{
					PrintfDebugUart("add 7,0,%d\xff\xff\xff",a[i]);	//向ID为7的曲线控件的0通道添加数据30
				}
			}
			break;
			case 0x02:
			{
				HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);
			}
			break;
		}
		HAL_UART_Receive_IT(&huart1,(uint8_t *)&RX,1);
	}
}
/* USER CODE END 4 */

四、实验结果

STM32串口屏学习_第1张图片

你可能感兴趣的:(电赛准备,stm32,单片机,学习)