基于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芯片实现的应答式串口数据管理器逻辑分析与程序实现的主要内容,如果未能解决你的问题,请参考以下文章
STM32学习笔记 二基于STM32F103C8T6和STM32CubeMX实现UART串口通信数据收发
STM32学习笔记 二基于STM32F103C8T6和STM32CubeMX实现UART串口通信数据收发
STM32学习笔记 一基于STM32F103C8T6最小系统板和STM32CubeMX实现LED灯循环闪烁