基于STM32F103C8Tx芯片实现的应答式串口数据管理器逻辑分析与程序实现

Posted GYH_better_coder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于STM32F103C8Tx芯片实现的应答式串口数据管理器逻辑分析与程序实现相关的知识,希望对你有一定的参考价值。

写在前面

之前我已经写了如何利用STM32CubeMX实现配置STM32F103C8Tx芯片,传送门在下面
STM32CubeMX配置STM32F103C8Tx芯片制作串口数据管理器
那么这篇博客将分享基于应答式的串口管理器的数据收发方案,在之后的内容中将STM32F103C8Tx串口管理器简称为103

正文

主要内容在我的古月居博客:
基于STM32F103C8Tx芯片实现的应答式串口数据管理器逻辑分析与程序实现

流程图

在这里插入图片描述

效果展示

拨片架往右移动然后拨片拨取货物
在这里插入图片描述
拨片架往左移动然后准备拨取货物
在这里插入图片描述

测试环境以及结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

程序分析

char pi_serial[7] = {'\\0'};
char screw_serial[3] = {'\\0'};
char servo_serial[4] = {'\\0'};
char reply_pi;
char get_servo;
char get_screw;

while (1)
{
	if(!HAL_UART_Receive(&PI_SERIAL,(uint8_t *)pi_serial,6,0XFFFF)){//接收到树莓派的消息
	
		if(pi_serial[0] == '|'){
			reply_pi = '*';
			HAL_UART_Transmit(&PI_SERIAL,(uint8_t *)&reply_pi,1,0XFFFF);
			screw_serial[0] = pi_serial[1];
			screw_serial[1] = pi_serial[2];
			servo_serial[0] = pi_serial[3];
			servo_serial[1] = pi_serial[4];
			servo_serial[2] = pi_serial[5];
			SerialControl();
		}
		
	}else{
		HAL_Delay(50);
	}
void SerialControl()
{
	uint8_t rece_flag = 0;
	HAL_UART_Transmit(&SCREW_SERIAL,(uint8_t *)(&screw_serial),sizeof(screw_serial),0XFFFF);
	while(!rece_flag){
		if(!HAL_UART_Receive(&SCREW_SERIAL,(uint8_t *)(&get_screw),sizeof(get_screw),0XFFFF)){
			if(get_screw == '@'){
				while(1){
					if(!HAL_UART_Receive(&SCREW_SERIAL,(uint8_t *)(&get_screw),sizeof(get_screw),0XFFFF)){
						if(get_screw == '!'){
								rece_flag = 1;
								break;
						}
					}else{
						HAL_Delay(50);
					}
				}
			}
		}
	}
	
	rece_flag = 0;
	HAL_UART_Transmit(&SERVO_SERIAL,(uint8_t *)(&servo_serial),sizeof(servo_serial),0XFFFF);
	while(!rece_flag){
		if(!HAL_UART_Receive(&SERVO_SERIAL,(uint8_t *)(&get_servo),sizeof(get_servo),0XFFFF)){
			if(get_servo == '&'){
				while(1){
					if(!HAL_UART_Receive(&SERVO_SERIAL,(uint8_t *)(&get_servo),sizeof(get_servo),0XFFFF)){
						if(get_servo == '#'){
								rece_flag = 1;
								break;
						}
					}else{
						HAL_Delay(50);
					}
				}
			}
		}
	}
	reply_pi = '?';
	HAL_UART_Transmit(&PI_SERIAL,(uint8_t *)&reply_pi,1,0XFFFF);
}

正文

主要内容在我的古月居博客:
基于STM32F103C8Tx芯片实现的应答式串口数据管理器逻辑分析与程序实现


疯狂明示,这次一定

在这里插入图片描述

以上是关于基于STM32F103C8Tx芯片实现的应答式串口数据管理器逻辑分析与程序实现的主要内容,如果未能解决你的问题,请参考以下文章

STM32F103C8T6实现串口通信+按键点灯

STM32学习笔记 二基于STM32F103C8T6和STM32CubeMX实现UART串口通信数据收发

STM32学习笔记 二基于STM32F103C8T6和STM32CubeMX实现UART串口通信数据收发

STM32学习笔记 一基于STM32F103C8T6最小系统板和STM32CubeMX实现LED灯循环闪烁

STM32学习笔记 二基于STM32F103C8T6和STM32CubeMX实现UART串口通信数据收发

STM32学习笔记 一基于STM32F103C8T6最小系统板和STM32CubeMX实现板载LED灯循环闪烁