stm32与上位机进行串口通信问题

上位机:pc端使用pyqt

下位机:stm32f103

插上st-link下载完程序需要拔掉它,不然有时候会出现串口数据出错的情况。

stm32发送数据给上位机

stm32串口发送数据函数USART_SendData();一次只能发送一个字节(8位),不能超过0xff(255),因此大于255的数据需要拆成几个字节发送。
函数实现:

void Send_data(USART_TypeDef * USARTx,char *s)
{
	while(*s!='\0')
	{ 
		while(USART_GetFlagStatus(USARTx,USART_FLAG_TC )==RESET);	
		USART_SendData(USARTx,*s);
		s++;
	}
}

再在上位机中进行数据组合。

上位机发送数据给stm32

使用serial库,例如:

import serial

seri = serial.Serial('COM9', 115200, timeout=2)
seri.write((str('123') + '\r\n').encode())

数据类型为字符串,经过编码发送给stm32,接收到数据后需要对字符串数据转整型处理。stm32接收到的数据为’1’,‘2’,‘3’,转为123。转换函数为:

u8 str_to_int(u8 *rawData)
{
	return (rawData[0]-'0')*100+(rawData[1]-'0')*10+(rawData[2]-'0');
}

然后通过通信协议解析参数即可。

你可能感兴趣的:(stm32)