news 2026/3/31 21:59:46

D01期:档位的转换

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
D01期:档位的转换

#include <stdint.h>
2
3// ========================
4// 定义枚举类型(示例)
5// ========================
6typedef enum {
7 GEAR_N = 0, // 空档
8 GEAR_R = 14, // 倒档
9 GEAR_1 = 1,
10 GEAR_2 = 2,
11 GEAR_3 = 3,
12 GEAR_4 = 4,
13 GEAR_5 = 5,
14 GEAR_6 = 6,
15 GEAR_7 = 7,
16 GEAR_8 = 8,
17 GEAR_SHIFTING = 15 // 换挡中
18} TCU_Gear_E;


// ========================
// 函数接口声明
// ========================
extern uint8_t VHAL_TCUGear_enum; // 外部输入:TCU 实际档位
extern int8_t KINP_TCUGearMin_enum; // 最小允许档位(例如 0)
extern int8_t KINP_TCUGearMax_enum; // 最大允许档位(例如 8)

// ========================
// 内部变量(模拟 Z⁻¹ 记忆单元)
// ========================
static TCU_Gear_E VINP_TCUGear_enum_mem = GEAR_N; // 初始为空档

// ========================
// 主函数:档位处理逻辑
// ========================
TCU_Gear_E VINP_TCUGear_enum(void) {
TCU_Gear_E current_input;
TCU_Gear_E filtered_input;
TCU_Gear_E final_output;

// Step 1: 获取当前输入并预处理
if (VHAL_TCUGear_enum == 14) {
current_input = -1;
} else if (VHAL_TCUGear_enum == 0) {
current_input = GEAR_N; // 无效输入设为空档
}


else if (VHAL_TCUGear_enum == -1) {
current_input = GEAR_N; // 无效输入设为空档
} else if (VHAL_TCUGear_enum == GEAR_SHIFTING) {//15
current_input = VINP_TCUGear_enum_mem; // 换挡中时维持上一档
} else {
current_input = (TCU_Gear_E)VHAL_TCUGear_enum;
}

// Step 2: 边界检查
if (current_input >= KINP_TCUGearMin_enum && current_input <= KINP_TCUGearMax_enum) {
filtered_input = current_input;
} else {
filtered_input = GEAR_N; // 超出范围则置为空档
}

// Step 3: 更新记忆变量(模拟 Z⁻¹)
final_output = filtered_input;
VINP_TCUGear_enum_mem = final_output;

return final_output;
}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 4:37:23

Miniconda-Python3.10镜像助力高校AI实验室快速搭建平台

Miniconda-Python3.10镜像助力高校AI实验室快速搭建平台 在高校人工智能教学与科研一线&#xff0c;你是否经历过这样的场景&#xff1a;学生刚装好Python环境&#xff0c;却因版本不兼容跑不通示例代码&#xff1b;多个项目依赖冲突&#xff0c;“在我电脑上明明能运行”成了口…

作者头像 李华
网站建设 2026/3/17 1:00:20

零基础学习上位机串口通信数据收发原理

从零开始搞懂上位机串口通信&#xff1a;数据是怎么“发”和“收”的&#xff1f;你有没有遇到过这种情况——手里的单片机跑起来了&#xff0c;传感器也连上了&#xff0c;可怎么把数据显示到电脑上呢&#xff1f;或者你想在电脑上点个按钮&#xff0c;远程控制开发板上的LED灯…

作者头像 李华
网站建设 2026/3/29 13:33:20

工业传感器接入nmodbus网络:手把手教程

工业传感器如何接入 nmodbus 网络&#xff1f;从接线到代码的完整实战指南你有没有遇到过这样的场景&#xff1a;现场一堆温度、压力、液位传感器&#xff0c;输出的是4-20mA或0-10V模拟信号&#xff0c;想把它们接入上位机系统做监控&#xff0c;但布线杂乱、抗干扰差&#xf…

作者头像 李华
网站建设 2026/3/25 14:21:37

IDA Pro栈帧分析操作实践:完整示例演示

IDA Pro栈帧分析实战&#xff1a;从零构建漏洞利用基础在逆向工程的世界里&#xff0c;看懂汇编只是起点&#xff0c;理解程序如何使用栈才是关键。尤其当你面对一个没有符号、经过优化的二进制文件时&#xff0c;能否快速定位缓冲区与返回地址之间的偏移&#xff0c;往往直接决…

作者头像 李华
网站建设 2026/3/23 18:59:54

使用Miniconda实现PyTorch与TensorFlow共享GPU资源

使用Miniconda实现PyTorch与TensorFlow共享GPU资源 在现代深度学习项目中&#xff0c;研究人员和工程师常常需要在同一台GPU服务器上并行运行基于PyTorch和TensorFlow的模型。然而&#xff0c;一个现实的问题摆在面前&#xff1a;两个框架对CUDA、cuDNN等底层库版本的要求往往…

作者头像 李华
网站建设 2026/3/31 13:14:08

JLink接线配合STM32进行SWD调试的操作指南

手把手教你用JLink接线实现STM32的SWD调试&#xff1a;从零搭建稳定调试链路你有没有遇到过这样的场景&#xff1f;电路板焊好了&#xff0c;电源正常&#xff0c;但一连JLink就报“No target connected”&#xff1b;或者好不容易识别到芯片&#xff0c;下载程序却卡在50%………

作者头像 李华