python3串口通信16进制_STM32串口通信——16进制数形式

本文探讨了在STM32与Python3进行串口通信时,为何选择16进制形式,以及如何处理不同数据类型(uint_8、int16_t、float)的发送与接收。通过具体代码示例,阐述了如何在STM32端实现数据转换,并在Python3端进行相应解析,以提高通信效率。
摘要由CSDN通过智能技术生成

一.为什么采用16进制数形式?

首先,需要解释一下串口发送的数据都是unsigned char类型的,说成字符和16进制形式,只是我们采用何种方式展示这些数据。字符形式就是把16进制数通过ASCII表一个一个转成字符的。

一开始接触到的串口程序,就是字符形式的,尤其是STM32中被重构的printf()函数,我就先入为主地选择了字符形式。这样比较人性化,因为啥数据都是平时看到的字符,很直观,但是大大降低了通信效率!比如要发送一个数85,字符形式需要发送’8’+‘5’,而16进制只需要发送0x55。还有一点是负数,字符形式多加了一个’-'号,16进制直接发送有符号数就行了。如果要传输大量的数据,应该采用16进制形式。

我在调试STM32与PC(采用Python3编写)串口通信过程中,二者之间需要发送各种类型的数据,uint_8、int16_t、float等等,要将所有类型的数据转换成uint_8类型发送,同时上位机要能转换回来。总之就是拆开发送,接收重组。

二.下位机

uint_8 型

发送:直接利用USART_SendData函数,通常配合检测发送结束位使用,如下:

void usart1_send_data(uint8_t num){

USART_SendData(USART1, num);

while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);

}

接收:很简单,直接赋值即可。

int16_t型</

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值