Fetch the repository succeeded.
This action will force synchronization from guangjieMVP/Wildfire PID debugging assistant protocol, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
#ifndef __PID_PROTOCOL_H__
#define __PID_PROTOCOL_H__
#include "stdint.h"
#ifdef _cplusplus
extern "C" {
#endif
/* 数据接收缓冲区大小 */
#define PROT_FRAME_LEN_RECV 128
/* 校验数据的长度 */
#define PROT_FRAME_LEN_CHECKSUM 1
#pragma pack (1)
/* 数据头结构体 */
typedef __packed struct
{
uint32_t head; // 包头
uint8_t ch; // 通道
uint32_t len; // 包长度
uint8_t cmd; // 命令
// uint8_t sum; // 校验和
}packet_head_t;
#pragma pack () //作用:取消自定义字节对齐方式。
#define FRAME_HEADER 0x59485A53 // 帧头
/* 通道宏定义 */
#define CURVES_CH1 0x01
#define CURVES_CH2 0x02
#define CURVES_CH3 0x03
#define CURVES_CH4 0x04
#define CURVES_CH5 0x05
/* 指令(下位机 -> 上位机) */
#define SEND_TARGET_CMD 0x01 // 发送上位机通道的目标值
#define SEND_FACT_CMD 0x02 // 发送通道实际值
#define SEND_P_I_D_CMD 0x03 // 发送 PID 值(同步上位机显示的值)
#define SEND_START_CMD 0x04 // 发送启动指令(同步上位机按钮状态)
#define SEND_STOP_CMD 0x05 // 发送停止指令(同步上位机按钮状态)
#define SEND_PERIOD_CMD 0x06 // 发送周期(同步上位机显示的值)
/* 指令(上位机 -> 下位机) */
#define SET_P_I_D_CMD 0x10 // 设置 PID 值
#define SET_TARGET_CMD 0x11 // 设置目标值
#define START_CMD 0x12 // 启动指令
#define STOP_CMD 0x13 // 停止指令
#define RESET_CMD 0x14 // 复位指令
#define SET_PERIOD_CMD 0x15 // 设置周期
/* 空指令 */
#define CMD_NONE 0xFF // 空指令
/* 索引值宏定义 */
#define HEAD_INDEX_VAL 0x3u // 包头索引值(4字节)
#define CHX_INDEX_VAL 0x4u // 通道索引值(1字节)
#define LEN_INDEX_VAL 0x5u // 包长索引值(4字节)
#define CMD_INDEX_VAL 0x9u // 命令索引值(1字节)
#define EXCHANGE_H_L_BIT(data) ((((data) << 24) & 0xFF000000) |\
(((data) << 8) & 0x00FF0000) |\
(((data) >> 8) & 0x0000FF00) |\
(((data) >> 24) & 0x000000FF)) // 交换高低字节
#define COMPOUND_32BIT(data) (((*(data-0) << 24) & 0xFF000000) |\
((*(data-1) << 16) & 0x00FF0000) |\
((*(data-2) << 8) & 0x0000FF00) |\
((*(data-3) << 0) & 0x000000FF)) // 合成为一个字
/**
* @brief 接收数据处理
* @param *data: 要计算的数据的数组.
* @param data_len: 数据的大小
* @return void.
*/
void protocol_data_recv(uint8_t *data, uint16_t data_len);
/**
* @brief 初始化接收协议
* @param void
* @return 初始化结果.
*/
int32_t protocol_init(void);
/**
* @brief 接收的数据处理
* @param void
* @return -1:没有找到一个正确的命令.
*/
int8_t receiving_process(void);
/**
* @brief 设置上位机的值
* @param cmd:命令
* @param ch: 曲线通道
* @param data:参数指针
* @param num:参数个数
* @retval 无
*/
void set_computer_value(uint8_t cmd, uint8_t ch, void *data, uint8_t num);
/**
* @brief 最终发送数据输出的底层接口函数,需要用户实现
* @param data : 发送的数据
* @param num: 参数大小
* @retval none
*/
__weak void port_send_data_to_computer(void *data, uint8_t num);
/**
* @brief 处理上位机发送过来的PID参数
* @param p : PID p参数
* @param i: PID i参数
* @param d : PID d参数
* @retval none
* @note 需要用户实现
*/
__weak void set_pid_paramter_cmd(float p, float i, float d);
/**
* @brief: 处理上位机开始PID控制命令
* @param: none
* @retval: none
* @note: 需要用户实现
*/
__weak void pid_start_cmd(void);
/**
* @brief: 处理上位机停止PID控制命令
* @param: none
* @retval: none
* @note: 需要用户实现
*/
__weak void pid_stop_cmd(void);
/**
* @brief: 处理上位机复位命令
* @param: none
* @retval: none
* @note: 需要用户实现
*/
__weak void pid_reset_cmd(void);
/**
* @brief: 处理上位机设置目标值命令
* @param: actual_val - 目标值
* @retval: none
* @note: 需要用户实现
*/
__weak void set_pid_actual_val_cmd(int actual_val);
/**
* @brief: 设置PID周期数
* @param: period - 周期数
* @retval:
* @note: 需要用户实现
*/
__weak void set_pid_period_cmd(uint32_t period);
#ifdef _cplusplus
}
#endif
#endif
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。