STM32 HAL 陶晶池串口屏使用

STM32陶晶池串口屏使用

详见快速入门 — 淘晶驰资料中心 1.1.0-2024-07-15 23:52:37 文档 (tjc1688.com),官方文档讲解的很清晰

上位机部分

新建工程后选择对应型号

介绍一下几个上位机的函数

1.prints函数

QQ_1721462011160

注意prints函数串口打印变量时要加上位数,默认是0的话会发送四个字节数据

QQ_1721185702459

就会有三个字节都是0,不方便单片机识别

QQ_1721185732707

我们将位数设置为1,同时加上帧头0xaa,帧尾0x0d,中间留两个字节给数据部分,这样一串数据就是四字节

QQ_1721223856022

函数部分

我们需要注意的是

  1. 配置的波特率与上位机中要一致
  2. 线不要接错

同时,还可能遇到一种问题就是数据可以发送给单片机,只有第一次能收到,后续单片机无法接收

QQ_1721315098528

先注意下printf函数的问题,C语言中printf函数的数据是预先存放的,等到缓存堆满后再输出,或者就是遇到\n换行符直接输出,而陶晶驰这个是\ff\ff\ff做帧尾不允许有\n,我们在第一行加上

    setbuf(stdout, NULL); // 禁用缓冲

就可以禁用缓冲区,直接printf输出了。

注意printf函数要在标志位之前放,因为printf函数可能会影响串口的正常接收,这时候如果你的串口接收中断函数写的不严谨就会出现问题。

同时,我们注意重定向的printf函数是有一个发送的最大等待延时的,如果一口气接收多帧数据,那么你的printf函数最好用在接收完最后一组数据之后再用。笔者就曾经出现过因为两帧之间用了printf函数导致第二帧接收的数据有错乱

最后附上源码

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
#define DataLength 4
#define datanum 10
#define AdcNum 5
/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */
volatile bool   rx_data_receive     = false;//串口接收标志位
extern bool get_shape_shut;
volatile uint16_t   sweep_flag      = 0;//扫频标志位
uint8_t         rx_data_sta         =0;//辅助判断接收进度变量
uint16_t        rx_data_cache[1]    = {
   
   0};//串口接收数据缓存
uint16_t        rx_data[DataLength] = {
   
   0};//串口接收数据(毛)
uint16_t        rx_data_buffer[DataLength] 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值