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

一.为什么采用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型

你可能感兴趣的:(python3串口通信16进制)