前言
高情已逐晓云空,不与梨花同梦。
一、 串口屏端
-
初始化:
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 <stdio.h>
#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 */