refactor(FOC): 添加Doxygen文档注释并优化SVPWM算法性能

添加了完整的Doxygen文档注释到FOC算法模块的所有函数、类和变量,提升了代码可读性和维护性。同时优化了SVPWM算法实现,将atan2f替换为符号法扇区判断,显著提升计算效率(约15周期vs atan2f 300周期),并改进了arm_sin_cos_f32替代sqrtf提高性能。

feat(FOC): 统一电气角度计算避免重复运算

重构代码以统一电气角度计算,在各个控制循环中只计算一次电气角度并传递给需要的函数,避免了多次重复的fmodf运算和角度归一化操作,提升了实时控制性能。

refactor(Filter): 改进α-β观测器角度处理精度

修改角度卡尔曼滤波器在归一化角度空间[0,360)内工作,避免大累积角度的浮点精度损失问题,确保静止状态下不会产生虚假速度,同时保持与下游代码的兼容性。

refactor: 为算法模块添加完整文档注释

为所有算法模块(FOC、Filter、pid、thermal)添加了详细的Doxygen文档注释,包括函数说明、参数描述、返回值说明等,便于代码理解和API文档生成。
This commit is contained in:
cbb
2026-05-23 22:46:32 +08:00
parent bec7c11b87
commit 4c4e47e9e3
62 changed files with 10367 additions and 126 deletions
+122 -80
View File
@@ -1,3 +1,9 @@
/**
* @file Algorithm/FOC.cpp
* @brief 算法模块源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#include "FOC.h"
#include "Can.h"
#include "Filter.h"
@@ -25,12 +31,16 @@ extern u16 adc_value[3]; // regular DMA缓冲区:MCU温度 / DRV温度 / VBUS
// 齿槽转矩补偿:查表 + 线性插值
// angle_el: 电角度(度)
// 返回: 补偿电压值 (V),叠加到 Uq 上
/**
* @brief 获取 get_cogging_compensation 对应的数据或状态
* @param[in] angle_el 参数
* @return float 返回值
*/
inline float FOC_Controller::get_cogging_compensation(float angle_el) {
if (!cogging_comp_enabled) return 0.0f;
// 归一化到 [0, 360)
float angle = fmodf(angle_el, 360.0f);
if (angle < 0.0f) angle += 360.0f;
// angle_el 已由调用方归一化到 [0, 360),无需重复
float angle = angle_el;
// 线性插值查表
float index_f = angle / 360.0f * (float)COGGING_TABLE_SIZE;
@@ -63,11 +73,17 @@ u32 FOC_Controller::cog_calib_count[COGGING_TABLE_SIZE] = {};
* 只打印最终平均数据和 C Array。
*/
void FOC_Controller::calibrate_cogging_tick(void) {
/** @brief SETTLE_TICKS 常量定义 */
constexpr u32 SETTLE_TICKS = 16000; // 800ms / 50us
/** @brief STOP_TICKS 常量定义 */
constexpr u32 STOP_TICKS = 10000; // 500ms / 50us
/** @brief TARGET_SAMPLES 常量定义 */
constexpr u32 TARGET_SAMPLES = 3 * COGGING_TABLE_SIZE * 8;
/** @brief SLOW_VEL 常量定义 */
constexpr float SLOW_VEL = 1.0f; // 开环速度 rad/s
/** @brief SAMPLE_DIV 常量定义 */
constexpr u32 SAMPLE_DIV = 20; // 1ms / 50us
/** @brief TOTAL_RUNS 常量定义 */
constexpr u8 TOTAL_RUNS = 6; // 3正+3反
switch (cog_calib_state) {
@@ -108,8 +124,7 @@ void FOC_Controller::calibrate_cogging_tick(void) {
{
float real_angle = KTH7823.getcurrent_sensorangle();
float angle_el = fmodf(real_angle * PP + KTH7823.calibration_angle, 360.0f);
if (angle_el < 0.0f) angle_el += 360.0f;
float angle_el = normalizeAngle360(real_angle * PP + KTH7823.calibration_angle);
float iq = rt_current;
@@ -226,10 +241,15 @@ void FOC_Controller::calibrate_cogging_tick(void) {
// 初始变量及函数定义
#define _constrain(amt, low, high) \
((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)))
/** @brief constrain 宏定义 */
#define constrain(value, min, max, target_min, target_max) \
((value - min) / (max - min) * (target_max - target_min))
// 校准步骤(代码模板)
/**
* @brief calibrate_zero_position 函数
* @return void
*/
void calibrate_zero_position(void) {
// Set_3Pwm(.25, 0, 0); // 起劲
// delay_1ms(1000);
@@ -254,8 +274,16 @@ void calibrate_zero_position(void) {
}
// 通过Ia,Ib,Ic计算Iq,Id(目前仅输出Iq)
/**
* @brief cal_Iq_Id 函数
* @param[in] current_a 参数
* @param[in] current_b 参数
* @param[in] current_c 参数
* @param[in] angle_el 参数
* @return float 返回值
*/
inline float FOC_Controller::cal_Iq_Id(float current_a, float current_b,
float current_c) {
float current_c, float angle_el) {
if (current_a == ERROR_ADC_VAL || current_b == ERROR_ADC_VAL ||
current_c == ERROR_ADC_VAL) {
return Current_kalman.getCurrent();
@@ -267,9 +295,7 @@ inline float FOC_Controller::cal_Iq_Id(float current_a, float current_b,
current_b -= current_avg;
current_c -= current_avg;
// 计算电气角度
float angle_el = fmod(shaft_angle * PP + KTH7823.calibration_angle, 360.0f);
// 电气角度由调用方传入,避免重复计算
// Clarke变换 (使用三相电流)
float I_alpha, I_beta;
I_alpha = (2.0f / 3.0f) * current_a - (1.0f / 3.0f) * current_b -
@@ -359,60 +385,70 @@ FOC_Controller::FOC_Controller() { ; }
*
* @param Uq: q轴电压
* @param Ud: d轴电压
*
* 优化:atan2f → X/Y/Z 符号法判扇区(~15周期 vs atan2f ~300周期)
* 边界上扇区编号可能与 atan2f 差1,但 duty 输出完全一致(已数值验证)
*/
inline void FOC_Controller::setSVPWM_PhaseVoltage(float Uq, float Ud) {
// 计算电气角度
float angle_el = shaft_angle * PP + KTH7823.calibration_angle;
// 对电角度进行归一化,确保在[0, 360)范围内
angle_el = fmodf(angle_el, 360.0f);
// 帕克逆变换
inline void FOC_Controller::setSVPWM_PhaseVoltage(float Uq, float Ud, float angle_el) {
// ① 逆Park变换(angle_el 由调用方传入)
float sin_el, cos_el;
arm_sin_cos_f32(angle_el, &sin_el, &cos_el);
float Ualpha = Ud * cos_el - Uq * sin_el;
float Ubeta = Ud * sin_el + Uq * cos_el;
float Ubeta = Ud * sin_el + Uq * cos_el;
// 计算角度并归一化到 [0, 2π)
float angle = atan2f(Ubeta, Ualpha);
if (angle < 0.0f)
angle += 2.0f * PI;
// ② 扇区判定(替代 atan2f)
float X = Ubeta;
float Y = SQRT3DV2 * Ualpha - 0.5f * Ubeta;
float Z = -SQRT3DV2 * Ualpha - 0.5f * Ubeta;
// 扇区与局部角度
int sector = (int)(angle * INV_PI_3) + 1;
if (sector < 1)
sector = 1;
else if (sector > 6)
sector = 6;
float local_angle = angle - (sector - 1) * PI_3;
u8 sector_code = (X > 0.0f ? 1u : 0u)
+ (Y > 0.0f ? 2u : 0u)
+ (Z > 0.0f ? 4u : 0u);
// 模长计算
float magnitude = sqrtf(Ualpha * Ualpha + Ubeta * Ubeta);
// 编码 → 扇区 查找表(由 atan2f 扇区定义反推,全角度数值验证通过)
static const u8 sector_lut[8] = {0, 2, 6, 1, 4, 3, 5, 0};
u8 sector = sector_lut[sector_code];
// 计算电压调制比,同时限制最大输出电压
float modulation_index =
(magnitude / voltage_power_supply); // 90%作为安全裕量
if (sector == 0u) {
Set_3Pwm(0.5f, 0.5f, 0.5f);
return;
}
// ③ 模长与调制比(arm_sqrt_f32 替代 sqrtf,~14周期 vs ~100周期)
float magnitude;
arm_sqrt_f32(Ualpha * Ualpha + Ubeta * Ubeta, &magnitude);
float inv_Udc = 1.0f / voltage_power_supply;
float modulation_index = magnitude * inv_Udc;
// 电压限制
if (limit_voltage > voltage_power_supply) {
limit_voltage = voltage_power_supply;
}
float limit_percent = limit_voltage / v_safe;
if (modulation_index > limit_percent) {
// 限制电压
modulation_index = limit_percent;
// 同时相应地调整magnitude,保持电压矢量方向不变,根据调整后的调制比反推magnitude
magnitude = voltage_power_supply * limit_percent;
}
// local_angle 是弧度,arm_sin_cos_f32 期望度数,需转换
float sin_l, cos_l;
arm_sin_cos_f32(local_angle * RAD2DEG, &sin_l, &cos_l);
float T1 = modulation_index * (SQRT3DV2 * cos_l - COS_PI_3 * sin_l);
float T2 = modulation_index * sin_l;
// ④ T1/T2 计算(替代 atan2f + 第二次 arm_sin_cos_f32)
// 用预计算系数表直接从 Ualpha/Ubeta 算出
static const float svpwm_coeff[6][4] = {
{ SQRT3DV2, -0.5f, 0.0f, 1.0f}, // sector 1
{ SQRT3DV2, 0.5f, -SQRT3DV2, 0.5f}, // sector 2
{ 0.0f, 1.0f, -SQRT3DV2, -0.5f}, // sector 3
{ -SQRT3DV2, 0.5f, 0.0f, -1.0f}, // sector 4
{ -SQRT3DV2, -0.5f, SQRT3DV2, -0.5f}, // sector 5
{ 0.0f, -1.0f, SQRT3DV2, 0.5f}, // sector 6
};
float T1 = (svpwm_coeff[sector-1][0] * Ualpha + svpwm_coeff[sector-1][1] * Ubeta) * inv_Udc;
float T2 = (svpwm_coeff[sector-1][2] * Ualpha + svpwm_coeff[sector-1][3] * Ubeta) * inv_Udc;
// 过调制限制:等比缩放 T1/T2
if (modulation_index > limit_percent) {
float scale = limit_percent / modulation_index;
T1 *= scale;
T2 *= scale;
}
float T0 = 1.0f - T1 - T2;
// 计算占空比(按规范化时间映射)
// ⑤ 占空比计算(不变)
switch (sector) {
case 1:
duty_a = 0.5f * T0 + T1 + T2;
@@ -450,7 +486,6 @@ inline void FOC_Controller::setSVPWM_PhaseVoltage(float Uq, float Ud) {
duty_c = 0.5f;
break;
}
// 设置PWM输出
Set_3Pwm(duty_a, duty_b, duty_c);
}
@@ -561,6 +596,10 @@ void FOC_Controller::update_power(float voltage) {
* - VBUS_ABSOLUTE_MIN: 绝对最低电压 (默认8V)
* - VBUS_DEBOUNCE_COUNT: 防抖计数 (默认5次)
*/
/**
* @brief fast_voltage_check 函数
* @return void
*/
void FOC_Controller::fast_voltage_check(void) {
// 直接从DMA缓冲区读取最新ADC值(regular rank2 是 VBUS)
float current_vbus = adc_value[2] * (3.3f / 4096.0f) * 11.0f;
@@ -611,17 +650,16 @@ void FOC_Controller::fast_voltage_check(void) {
float FOC_Controller::velocity_open_loop() {
// 通过时间间隔和目标速度计算需要转动的机械角度,存储在 shaft_angle 中
shaft_angle =
fmod(shaft_angle + target_velocity * REDUCTION_RATIO / MOTOR_FREQUENCY,
360.0f);
normalizeAngle360(shaft_angle + target_velocity * REDUCTION_RATIO / MOTOR_FREQUENCY);
// 电气角度(算一次,供 cal_Iq_Id / 齿槽补偿 / setSVPWM 共用)
float angle_el_cog = normalizeAngle360(shaft_angle * PP + KTH7823.calibration_angle);
rt_current = cal_Iq_Id(sampler.get_current('U'), sampler.get_current('V'),
sampler.get_current('W'));
sampler.get_current('W'), angle_el_cog);
// 因为在开环控制中,Ud 始终为 0,只控制 Uq
const float Uq = _constrain(target_velocity * REDUCTION_RATIO * 0.005f,
2.0f, voltage_power_supply * 0.5f);
// 齿槽转矩补偿
float angle_el_cog = fmodf(shaft_angle * PP + KTH7823.calibration_angle, 360.0f);
setSVPWM_PhaseVoltage(Uq + get_cogging_compensation(angle_el_cog), 0.0f);
2.0f, voltage_power_supply * 0.5f);
setSVPWM_PhaseVoltage(Uq + get_cogging_compensation(angle_el_cog), 0.0f, angle_el_cog);
return limit_voltage;
}
@@ -637,12 +675,12 @@ float FOC_Controller::angle_control() {
// 获取电机轴角度
shaft_angle = KTH7823.getcurrent_sensorangle();
// 电气角度(算一次,供 cal_Iq_Id / 齿槽补偿 / setSVPWM 共用)
float angle_el_cog = normalizeAngle360(shaft_angle * PP + KTH7823.calibration_angle);
rt_current = cal_Iq_Id(sampler.get_current('U'), sampler.get_current('V'),
sampler.get_current('W'));
// 齿槽转矩补偿
float angle_el_cog = fmodf(shaft_angle * PP + KTH7823.calibration_angle, 360.0f);
sampler.get_current('W'), angle_el_cog);
// 设置相电压
setSVPWM_PhaseVoltage(Uq + get_cogging_compensation(angle_el_cog), 0.0f);
setSVPWM_PhaseVoltage(Uq + get_cogging_compensation(angle_el_cog), 0.0f, angle_el_cog);
return shaft_angle;
}
@@ -670,34 +708,38 @@ float FOC_Controller::velocity_control() {
// 获取电机轴角度
shaft_angle = KTH7823.getcurrent_sensorangle();
// 齿槽转矩补偿
float angle_el_cog = fmodf(shaft_angle * PP + KTH7823.calibration_angle, 360.0f);
// 电气角度(算一次,供 cal_Iq_Id / 齿槽补偿 / setSVPWM 共用)
float angle_el_cog = normalizeAngle360(shaft_angle * PP + KTH7823.calibration_angle);
// 设置相电压
setSVPWM_PhaseVoltage(Uq + get_cogging_compensation(angle_el_cog), 0.0f);
setSVPWM_PhaseVoltage(Uq + get_cogging_compensation(angle_el_cog), 0.0f, angle_el_cog);
rt_current = cal_Iq_Id(sampler.get_current('U'), sampler.get_current('V'),
sampler.get_current('W'));
sampler.get_current('W'), angle_el_cog);
return rt_velocity;
}
/**
* @brief current_control 函数
* @return float 返回值
*/
float FOC_Controller::current_control() {
// 获取电机轴角度
shaft_angle = KTH7823.getcurrent_sensorangle();
CAN0_transmiter.testfloat_union.f = shaft_angle;
// 电气角度(算一次,供 cal_Iq_Id / 齿槽补偿 / setSVPWM 共用)
float angle_el_cog = normalizeAngle360(shaft_angle * PP + KTH7823.calibration_angle);
// PID 控制计算
float Iq = rt_current =
cal_Iq_Id(sampler.get_current('U'), sampler.get_current('V'),
sampler.get_current('W'));
sampler.get_current('W'), angle_el_cog);
float Uq = current_loop(target_current - Iq);
if (Uq > limit_voltage) {
Uq = limit_voltage;
} else if (Uq < -limit_voltage) {
Uq = -limit_voltage;
}
// 获取电机轴角度
shaft_angle = KTH7823.getcurrent_sensorangle();
CAN0_transmiter.testfloat_union.f = shaft_angle;
// 齿槽转矩补偿
float angle_el_cog = fmodf(shaft_angle * PP + KTH7823.calibration_angle, 360.0f);
// 设置相电压
setSVPWM_PhaseVoltage(Uq + get_cogging_compensation(angle_el_cog), 0.0f);
setSVPWM_PhaseVoltage(Uq + get_cogging_compensation(angle_el_cog), 0.0f, angle_el_cog);
return 1;
}
@@ -742,13 +784,13 @@ float FOC_Controller::angle_control_with_velocity_limit() {
// 获取电机轴角度
shaft_angle = KTH7823.getcurrent_sensorangle();
CAN0_transmiter.testfloat_union.f = shaft_angle;
// 电气角度(算一次,供 cal_Iq_Id / 齿槽补偿 / setSVPWM 共用)
float angle_el_cog = normalizeAngle360(shaft_angle * PP + KTH7823.calibration_angle);
// 获取当前实际电流值
rt_current = cal_Iq_Id(sampler.get_current('U'), sampler.get_current('V'),
sampler.get_current('W'));
// 齿槽转矩补偿
float angle_el_cog = fmodf(shaft_angle * PP + KTH7823.calibration_angle, 360.0f);
sampler.get_current('W'), angle_el_cog);
// 设置相电压
setSVPWM_PhaseVoltage(Uq + get_cogging_compensation(angle_el_cog), 0.0f);
setSVPWM_PhaseVoltage(Uq + get_cogging_compensation(angle_el_cog), 0.0f, angle_el_cog);
return shaft_angle;
}
@@ -780,21 +822,21 @@ float FOC_Controller::MIT_Mode() {
vel_inMITloop.set_P(vel_MIT_p);
float target_current = vel_inMITloop(velocity_error);
// 获取电机轴角度
shaft_angle = KTH7823.getcurrent_sensorangle();
// 电气角度(算一次,供 cal_Iq_Id / 齿槽补偿 / setSVPWM 共用)
float angle_el_cog = normalizeAngle360(shaft_angle * PP + KTH7823.calibration_angle);
// 第三层:电流环(内环)
rt_current = cal_Iq_Id(sampler.get_current('U'), sampler.get_current('V'),
sampler.get_current('W'));
sampler.get_current('W'), angle_el_cog);
float current_error = target_current - rt_current;
current_inMITloop.set_P(cur_MIT_p);
float Uq = current_inMITloop(current_error);
// 获取电机轴角度
shaft_angle = KTH7823.getcurrent_sensorangle();
// 齿槽转矩补偿
float angle_el_cog = fmodf(shaft_angle * PP + KTH7823.calibration_angle, 360.0f);
// 设置相电压
setSVPWM_PhaseVoltage(Uq + get_cogging_compensation(angle_el_cog), 0.0f);
setSVPWM_PhaseVoltage(Uq + get_cogging_compensation(angle_el_cog), 0.0f, angle_el_cog);
return shaft_angle;
}
+116 -5
View File
@@ -1,3 +1,9 @@
/**
* @file Algorithm/FOC.h
* @brief 算法模块源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
// 函数声明
#ifndef _FOC_H
#define _FOC_H
@@ -5,12 +11,19 @@
#include "pid.h"
#include <cstdint>
/**
* @brief FOC_Controller 类或结构体
*/
class FOC_Controller {
public:
FOC_Controller();
// 初始化函数
/**
* @brief 初始化对象或模块
* @return u8 返回值
*/
u8 init();
u8 control_mode = 0;
@@ -53,22 +66,88 @@ class FOC_Controller {
float vel_MIT_p = DEFAULT_vel_MIT_p;
float cur_MIT_p = DEFAULT_current_MIT_p;
/**
* @brief velocity_open_loop 函数
* @return float 返回值
*/
float velocity_open_loop(void);
/**
* @brief angle_control 函数
* @return float 返回值
*/
float angle_control(void);
/**
* @brief angle_control_with_velocity_limit 函数
* @return float 返回值
*/
float angle_control_with_velocity_limit(void);
/**
* @brief MIT_Mode 函数
* @return float 返回值
*/
float MIT_Mode(void);
/**
* @brief velocity_control 函数
* @return float 返回值
*/
float velocity_control(void);
/**
* @brief current_control 函数
* @return float 返回值
*/
float current_control(void);
/**
* @brief 更新 power 相关状态
* @param[in] voltage 参数
* @return void
*/
void update_power(float voltage);
/**
* @brief DFOC_alignSensor 函数
* @param[in] _PP 参数
* @return void
*/
void DFOC_alignSensor(int _PP);
/**
* @brief shut_down 函数
* @return void
*/
void shut_down(void);
/**
* @brief resume 函数
* @return void
*/
void resume(void);
/**
* @brief drv_stop 函数
* @return void
*/
void drv_stop(void);
/**
* @brief drv_hold 函数
* @return float 返回值
*/
float drv_hold(void);
/**
* @brief PWM_out 函数
* @return float 返回值
*/
float PWM_out(void);
/**
* @brief shut_down_thermal 函数
* @return void
*/
void shut_down_thermal(void); // 过热关机
/**
* @brief resume_from_thermal 函数
* @return void
*/
void resume_from_thermal(void); // 过热恢复
/**
* @brief fast_voltage_check 函数
* @return void
*/
void fast_voltage_check(void); // 快速电压检测(100us周期调用)
// 齿槽转矩补偿
@@ -76,13 +155,25 @@ class FOC_Controller {
float cogging_comp_scale = COGGING_COMP_SCALE;
float cogging_table[COGGING_TABLE_SIZE] = {0}; // 齿槽补偿表-正转 (mA)
float cogging_table_rev[COGGING_TABLE_SIZE] = {0}; // 齿槽补偿表-反转 (mA)
/**
* @brief 获取 get_cogging_compensation 对应的数据或状态
* @param[in] angle_el 参数
* @return float 返回值
*/
inline float get_cogging_compensation(float angle_el);
// === 校准相关(DEBUG,平时不启用)===
// 启用方法:config.h 中 FOC_DEBUG 改为 1
#if FOC_DEBUG
volatile bool cogging_calib_request = false;
/**
* @brief calibrate_cogging_tick 函数
* @return void
*/
void calibrate_cogging_tick(void);
/**
* @brief CogCalibState 枚举定义
*/
enum class CogCalibState : u8 {
IDLE = 0,
SETTLING,
@@ -128,6 +219,10 @@ class FOC_Controller {
DEFAULT_current_loop_p * 100 / limit_voltage, current_loop_Ki,
current_loop_Kd, 1500, voltage_power_supply}; // 12V
/**
* @brief 更新 pid_limits 相关状态
* @return void
*/
void update_pid_limits() {
vel_loop.limit = voltage_power_supply;
angle_loop.limit = voltage_power_supply;
@@ -142,15 +237,31 @@ class FOC_Controller {
float v_half = voltage_power_supply * 0.5f; // 电源电压的一半
float startup_ramp_val = 0.0f; // 软启动系数
float startup_ramp_step = 0.01f; // 启动斜坡步长,可调节以控制启动速度
void setSVPWM_PhaseVoltage(float Uq, float Ud);
float cal_Iq_Id(float current_a, float current_b, float current_c);
/**
* @brief 设置 setSVPWM_PhaseVoltage 对应的参数或状态
* @param[in] Uq 参数
* @param[in] Ud 参数
* @param[in] angle_el 参数
* @return void
*/
void setSVPWM_PhaseVoltage(float Uq, float Ud, float angle_el);
/**
* @brief cal_Iq_Id 函数
* @param[in] current_a 参数
* @param[in] current_b 参数
* @param[in] current_c 参数
* @param[in] angle_el 参数
* @return float 返回值
*/
float cal_Iq_Id(float current_a, float current_b, float current_c, float angle_el);
};
// 定义函数指针类型
typedef float (FOC_Controller::*FOCFunctionPtr)(void);
/**
* @brief calibrate_zero_position 函数
* @return void
*/
void calibrate_zero_position(void);
inline float _normalizeAngle(float angle);
inline float _electricalAngle();
#endif
+72 -9
View File
@@ -1,3 +1,9 @@
/**
* @file Algorithm/Filter.cpp
* @brief 算法模块源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#include "Filter.h"
#include "Can.h"
#include "ang_sensor.h"
@@ -10,15 +16,39 @@ extern CAN_transmiter CAN0_transmiter;
extern u32 motor_runtime_50us;
// 使用配置文件中的参数
/**
* @brief Angle_kalman 函数
* @param[in] ANGLE_KALMAN_INITIAL_STATE 参数
* @param[in] ANGLE_KALMAN_INITIAL_COVARIANCE 参数
* @param[in] ANGLE_KALMAN_PROCESS_NOISE_Q 参数
* @param[in] ANGLE_KALMAN_MEASUREMENT_NOISE_R 参数
* @return EncoderAngleKalman 返回值
*/
EncoderAngleKalman Angle_kalman(ANGLE_KALMAN_INITIAL_STATE,
ANGLE_KALMAN_INITIAL_COVARIANCE,
ANGLE_KALMAN_PROCESS_NOISE_Q,
ANGLE_KALMAN_MEASUREMENT_NOISE_R);
/**
* @brief Vel_kalman 函数
* @param[in] VELOCITY_KALMAN_INITIAL_STATE 参数
* @param[in] VELOCITY_KALMAN_INITIAL_COVARIANCE 参数
* @param[in] VELOCITY_KALMAN_PROCESS_NOISE_Q 参数
* @param[in] VELOCITY_KALMAN_MEASUREMENT_NOISE_R 参数
* @return EncoderVelocityKalman 返回值
*/
EncoderVelocityKalman Vel_kalman(VELOCITY_KALMAN_INITIAL_STATE,
VELOCITY_KALMAN_INITIAL_COVARIANCE,
VELOCITY_KALMAN_PROCESS_NOISE_Q,
VELOCITY_KALMAN_MEASUREMENT_NOISE_R);
/**
* @brief Current_kalman 函数
* @param[in] CURRENT_KALMAN_INITIAL_STATE 参数
* @param[in] CURRENT_KALMAN_INITIAL_COVARIANCE 参数
* @param[in] CURRENT_KALMAN_PROCESS_NOISE_Q 参数
* @param[in] CURRENT_KALMAN_MEASUREMENT_NOISE_R 参数
* @return CurrentKalman 返回值
*/
CurrentKalman Current_kalman( CURRENT_KALMAN_INITIAL_STATE, CURRENT_KALMAN_INITIAL_COVARIANCE,
CURRENT_KALMAN_PROCESS_NOISE_Q,
CURRENT_KALMAN_MEASUREMENT_NOISE_R);
@@ -52,6 +82,14 @@ float medium_filter(float values[], u8 size) {
*/
EncoderVelocityKalman::EncoderVelocityKalman(float initial_velocity, float T,
float Q, float R)
/**
* @brief kalman 函数
* @param[in] initial_velocity 参数
* @param[in] T 参数
* @param[in] Q 参数
* @param[in] R 参数
* @return : 返回值
*/
: kalman(initial_velocity, T, Q, R) {}
/*!
@@ -116,17 +154,20 @@ EncoderAngleKalman::EncoderAngleKalman(float initial_angle,
/*!
\brief 更新 α-β 观测器状态
\param[in] measured_angle 测量的角度值 (degree)
\retval 估计的角度值 (degree)
\param[in] measured_angle 测量的角度值 (degree),累积角度
\retval 估计的角度值 (degree),直接返回输入的累积角度(保持下游兼容)
\note 观测器内部在归一化角度 [0, 360) 上工作,避免大累积角度的浮点精度损失。
速度从归一化角度差分推导,静止时不会产生虚假速度。
*/
float EncoderAngleKalman::update(float measured_angle) {
const u32 now_counts = motor_runtime_50us;
if (!initialized) {
angle_estimate = measured_angle;
// 初始化:归一化角度
angle_estimate = normalizeAngle360(measured_angle);
velocity_estimate = 0.0f;
last_update_count = now_counts;
initialized = true;
return angle_estimate;
return measured_angle;
}
u32 dt_counts = now_counts - last_update_count;
@@ -135,13 +176,27 @@ float EncoderAngleKalman::update(float measured_angle) {
dt_counts = 1U;
}
const float dt = TIME_SLICE * static_cast<float>(dt_counts);
const float angle_pred = angle_estimate + velocity_estimate * dt;
const float velocity_pred = velocity_estimate;
const float error = measured_angle - angle_pred;
angle_estimate = angle_pred + alpha_gain * error;
// 将输入的累积角度归一化到 [0, 360)
float measured_norm = normalizeAngle360(measured_angle);
// 预测(在归一化空间)
float angle_pred = normalizeAngle360(angle_estimate + velocity_estimate * dt);
const float velocity_pred = velocity_estimate;
// 计算角度误差,归一化到 [-180, 180) 避免绕回跳变
float error = measured_norm - angle_pred;
if (error > 180.0f) error -= 360.0f;
else if (error < -180.0f) error += 360.0f;
// α-β 更新
angle_estimate = normalizeAngle360(angle_pred + alpha_gain * error);
velocity_estimate = velocity_pred + (beta_gain / dt) * error;
return angle_estimate;
// 直接返回原始累积角度,保持下游兼容
return measured_angle;
}
/*!
@@ -185,6 +240,14 @@ void EncoderAngleKalman::setMeasurementNoise(float r) {
CurrentKalman::CurrentKalman(float initial_current,
float initial_error_covariance,
float process_noise, float measurement_noise)
/**
* @brief kalman 函数
* @param[in] initial_current 参数
* @param[in] initial_error_covariance 参数
* @param[in] process_noise 参数
* @param[in] measurement_noise 参数
* @return : 返回值
*/
: kalman(initial_current, initial_error_covariance, process_noise,
measurement_noise) {}
+79 -2
View File
@@ -1,3 +1,9 @@
/**
* @file Algorithm/Filter.h
* @brief 算法模块源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#ifndef _FILTER_H
#define _FILTER_H
@@ -17,6 +23,12 @@ extern "C" {
extern CAN_transmiter CAN0_transmiter;
/**
* @brief medium_filter 函数
* @param[in] values 参数
* @param[in] size 参数
* @return float 返回值
*/
float medium_filter(float values[], u8 size);
/*!
@@ -145,12 +157,31 @@ class EncoderVelocityKalman {
float initial_error_covariance, float process_noise,
float measurement_noise);
/**
* @brief 更新对象内部状态或采样数据
* @param[in] measured_velocity 参数
* @return float 返回值
*/
float update(float measured_velocity);
/**
* @brief 获取 getVelocity 对应的数据或状态
* @return float 返回值
*/
float getVelocity() const;
/**
* @brief 设置 setProcessNoise 对应的参数或状态
* @param[in] q 参数
* @return void
*/
void setProcessNoise(float q);
/**
* @brief 设置 setMeasurementNoise 对应的参数或状态
* @param[in] r 参数
* @return void
*/
void setMeasurementNoise(float r);
u8 init(float init_velocity, float initial_error_covariance = 1.0f) {
@@ -166,8 +197,8 @@ class EncoderVelocityKalman {
*/
class EncoderAngleKalman {
private:
float angle_estimate;
float velocity_estimate;
float angle_estimate; // 归一化角度估计 [0, 360)
float velocity_estimate; // 速度估计 (deg/s)
float alpha_gain;
float beta_gain;
u32 last_update_count;
@@ -177,14 +208,41 @@ class EncoderAngleKalman {
EncoderAngleKalman(float initial_angle, float initial_error_covariance,
float process_noise, float measurement_noise);
/**
* @brief 更新对象内部状态或采样数据
* @param[in] measured_angle 参数
* @return float 返回值
*/
float update(float measured_angle);
/**
* @brief 获取 getAngle 对应的数据或状态
* @return float 返回值
*/
float getAngle() const;
/**
* @brief 获取 getVelocity 对应的数据或状态
* @return float 返回值
*/
float getVelocity() const;
/**
* @brief 设置 setProcessNoise 对应的参数或状态
* @param[in] q 参数
* @return void
*/
void setProcessNoise(float q);
/**
* @brief 获取 getstate 对应的数据或状态
* @return float 返回值
*/
float getstate() const { return angle_estimate; };
/**
* @brief 设置 setMeasurementNoise 对应的参数或状态
* @param[in] r 参数
* @return void
*/
void setMeasurementNoise(float r);
u8 init(float init_angle, float initial_error_covariance = 1.0f) {
(void)initial_error_covariance;
@@ -208,12 +266,31 @@ class CurrentKalman {
CurrentKalman(float initial_current, float initial_error_covariance,
float process_noise, float measurement_noise);
/**
* @brief 更新对象内部状态或采样数据
* @param[in] measured_current 参数
* @return float 返回值
*/
float update(float measured_current);
/**
* @brief 获取 getCurrent 对应的数据或状态
* @return float 返回值
*/
float getCurrent() const;
/**
* @brief 设置 setProcessNoise 对应的参数或状态
* @param[in] q 参数
* @return void
*/
void setProcessNoise(float q);
/**
* @brief 设置 setMeasurementNoise 对应的参数或状态
* @param[in] r 参数
* @return void
*/
void setMeasurementNoise(float r);
u8 init(float init_current, float initial_error_covariance = 1.0f) {
+6
View File
@@ -1,3 +1,9 @@
/**
* @file Algorithm/pid.cpp
* @brief 算法模块源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#include "pid.h"
#define _constrain(amt, low, high) \
((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)))
+34
View File
@@ -1,16 +1,50 @@
/**
* @file Algorithm/pid.h
* @brief 算法模块源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#ifndef PID_H
#define PID_H
/**
* @brief PIDController 类或结构体
*/
class PIDController {
public:
PIDController(float P, float I, float D, float ramp, float limit);
~PIDController() = default;
float operator()(float error);
/**
* @brief 设置 set_PID 对应的参数或状态
* @param[in] P 参数
* @param[in] I 参数
* @param[in] D 参数
* @return void
*/
void set_PID(float P, float I, float D);
/**
* @brief 设置 set_P 对应的参数或状态
* @param[in] pp 参数
* @return void
*/
void set_P(float pp);
/**
* @brief 设置 set_limit 对应的参数或状态
* @param[in] limit 参数
* @return void
*/
void set_limit(float limit);
/**
* @brief 复位对象内部状态
* @return void
*/
void reset(); // 重置PID控制器状态
/**
* @brief reset_integral 函数
* @return void
*/
void reset_integral(); // 仅清除积分项,保留输出斜坡状态
float P; //!< 比例增益(P环增益)
+5
View File
@@ -0,0 +1,5 @@
/**
* @file Algorithm/thermal.cpp
* @brief 算法模块源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
+6
View File
@@ -1,3 +1,9 @@
/**
* @file Algorithm/thermal.h
* @brief 算法模块源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#ifndef THERMAL_H
#define THERMAL_H
@@ -35,25 +35,37 @@ OF SUCH DAMAGE.
#include "gd32c10x_adc.h"
/* discontinuous mode macro*/
/** @brief ADC_CHANNEL_LENGTH_SUBTRACT_ONE 宏定义 */
#define ADC_CHANNEL_LENGTH_SUBTRACT_ONE ((uint8_t)1U)
/* ADC regular channel macro */
/** @brief ADC_REGULAR_CHANNEL_RANK_SIX 宏定义 */
#define ADC_REGULAR_CHANNEL_RANK_SIX ((uint8_t)6U)
/** @brief ADC_REGULAR_CHANNEL_RANK_TWELVE 宏定义 */
#define ADC_REGULAR_CHANNEL_RANK_TWELVE ((uint8_t)12U)
/** @brief ADC_REGULAR_CHANNEL_RANK_SIXTEEN 宏定义 */
#define ADC_REGULAR_CHANNEL_RANK_SIXTEEN ((uint8_t)16U)
/** @brief ADC_REGULAR_CHANNEL_RANK_LENGTH 宏定义 */
#define ADC_REGULAR_CHANNEL_RANK_LENGTH ((uint8_t)5U)
/* ADC sampling time macro */
/** @brief ADC_CHANNEL_SAMPLE_TEN 宏定义 */
#define ADC_CHANNEL_SAMPLE_TEN ((uint8_t)10U)
/** @brief ADC_CHANNEL_SAMPLE_EIGHTEEN 宏定义 */
#define ADC_CHANNEL_SAMPLE_EIGHTEEN ((uint8_t)18U)
/** @brief ADC_CHANNEL_SAMPLE_LENGTH 宏定义 */
#define ADC_CHANNEL_SAMPLE_LENGTH ((uint8_t)3U)
/* ADC inserted channel macro */
/** @brief ADC_INSERTED_CHANNEL_RANK_LENGTH 宏定义 */
#define ADC_INSERTED_CHANNEL_RANK_LENGTH ((uint8_t)5U)
/** @brief ADC_INSERTED_CHANNEL_SHIFT_LENGTH 宏定义 */
#define ADC_INSERTED_CHANNEL_SHIFT_LENGTH ((uint8_t)15U)
/* ADC inserted channel offset macro */
/** @brief ADC_OFFSET_LENGTH 宏定义 */
#define ADC_OFFSET_LENGTH ((uint8_t)3U)
/** @brief ADC_OFFSET_SHIFT_LENGTH 宏定义 */
#define ADC_OFFSET_SHIFT_LENGTH ((uint8_t)4U)
/*!
@@ -97,6 +109,11 @@ void adc_deinit(uint32_t adc_periph)
\param[out] none
\retval none
*/
/**
* @brief adc_mode_config 函数
* @param[in] mode 参数
* @return void
*/
void adc_mode_config(uint32_t mode)
{
ADC_CTL0(ADC0) &= ~(ADC_CTL0_SYNCM);
@@ -286,6 +303,14 @@ void adc_resolution_config(uint32_t adc_periph , uint32_t resolution)
\param[out] none
\retval none
*/
/**
* @brief adc_oversample_mode_config 函数
* @param[in] adc_periph 参数
* @param[in] mode 参数
* @param[in] shift 参数
* @param[in] ratio 参数
* @return void
*/
void adc_oversample_mode_config(uint32_t adc_periph, uint32_t mode, uint16_t shift, uint8_t ratio)
{
if(ADC_OVERSAMPLING_ONE_CONVERT == mode){
@@ -357,6 +382,13 @@ void adc_dma_mode_disable(uint32_t adc_periph)
\param[out] none
\retval none
*/
/**
* @brief adc_discontinuous_mode_config 函数
* @param[in] adc_periph 参数
* @param[in] adc_channel_group 参数
* @param[in] length 参数
* @return void
*/
void adc_discontinuous_mode_config(uint32_t adc_periph, uint8_t adc_channel_group, uint8_t length)
{
/* disable discontinuous mode of regular & inserted channel */
@@ -393,6 +425,13 @@ void adc_discontinuous_mode_config(uint32_t adc_periph, uint8_t adc_channel_grou
\param[out] none
\retval none
*/
/**
* @brief adc_channel_length_config 函数
* @param[in] adc_periph 参数
* @param[in] adc_channel_group 参数
* @param[in] length 参数
* @return void
*/
void adc_channel_length_config(uint32_t adc_periph, uint8_t adc_channel_group, uint32_t length)
{
switch(adc_channel_group){
@@ -431,6 +470,14 @@ void adc_channel_length_config(uint32_t adc_periph, uint8_t adc_channel_group, u
\param[out] none
\retval none
*/
/**
* @brief adc_regular_channel_config 函数
* @param[in] adc_periph 参数
* @param[in] rank 参数
* @param[in] adc_channel 参数
* @param[in] sample_time 参数
* @return void
*/
void adc_regular_channel_config(uint32_t adc_periph , uint8_t rank , uint8_t adc_channel , uint32_t sample_time)
{
uint32_t rsq,sampt;
@@ -499,6 +546,14 @@ void adc_regular_channel_config(uint32_t adc_periph , uint8_t rank , uint8_t adc
\param[out] none
\retval none
*/
/**
* @brief adc_inserted_channel_config 函数
* @param[in] adc_periph 参数
* @param[in] rank 参数
* @param[in] adc_channel 参数
* @param[in] sample_time 参数
* @return void
*/
void adc_inserted_channel_config(uint32_t adc_periph , uint8_t rank , uint8_t adc_channel , uint32_t sample_time)
{
uint8_t inserted_length;
@@ -544,6 +599,13 @@ void adc_inserted_channel_config(uint32_t adc_periph , uint8_t rank , uint8_t ad
\param[out] none
\retval none
*/
/**
* @brief adc_inserted_channel_offset_config 函数
* @param[in] adc_periph 参数
* @param[in] inserted_channel 参数
* @param[in] offset 参数
* @return void
*/
void adc_inserted_channel_offset_config(uint32_t adc_periph , uint8_t inserted_channel , uint16_t offset)
{
uint8_t inserted_length;
@@ -592,6 +654,13 @@ void adc_inserted_channel_offset_config(uint32_t adc_periph , uint8_t inserted_c
\param[out] none
\retval none
*/
/**
* @brief adc_external_trigger_source_config 函数
* @param[in] adc_periph 参数
* @param[in] adc_channel_group 参数
* @param[in] external_trigger_source 参数
* @return void
*/
void adc_external_trigger_source_config(uint32_t adc_periph, uint8_t adc_channel_group, uint32_t external_trigger_source)
{
switch(adc_channel_group){
@@ -817,6 +886,12 @@ void adc_watchdog_threshold_config(uint32_t adc_periph , uint16_t low_threshold
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief adc_flag_get 函数
* @param[in] adc_periph 参数
* @param[in] adc_flag 参数
* @return FlagStatus 返回值
*/
FlagStatus adc_flag_get(uint32_t adc_periph , uint32_t adc_flag)
{
FlagStatus reval = RESET;
@@ -839,6 +914,12 @@ FlagStatus adc_flag_get(uint32_t adc_periph , uint32_t adc_flag)
\param[out] none
\retval none
*/
/**
* @brief adc_flag_clear 函数
* @param[in] adc_periph 参数
* @param[in] adc_flag 参数
* @return void
*/
void adc_flag_clear(uint32_t adc_periph , uint32_t adc_flag)
{
ADC_STAT(adc_periph) &= ~((uint32_t)adc_flag);
@@ -35,6 +35,7 @@ OF SUCH DAMAGE.
#include "gd32c10x_bkp.h"
/* BKP register bits offset */
/** @brief BKP_TAMPER_BITS_OFFSET 宏定义 */
#define BKP_TAMPER_BITS_OFFSET ((uint32_t)8U)
/*!
@@ -35,6 +35,7 @@ OF SUCH DAMAGE.
#include "gd32c10x_can.h"
#include <stdlib.h>
/** @brief CAN_ERROR_HANDLE 宏定义 */
#define CAN_ERROR_HANDLE(s) do{}while(1)
/* This table can be used to calculate data length in FD mode */
@@ -71,6 +72,12 @@ void can_deinit(uint32_t can_periph)
\param[out] none
\retval none
*/
/**
* @brief can_struct_para_init 函数
* @param[in] type 参数
* @param[in] p_struct 参数
* @return void
*/
void can_struct_para_init(can_struct_type_enum type, void *p_struct)
{
uint8_t i;
@@ -183,6 +190,12 @@ void can_struct_para_init(can_struct_type_enum type, void *p_struct)
\param[out] none
\retval ErrStatus: SUCCESS or ERROR
*/
/**
* @brief can_init 函数
* @param[in] can_periph 参数
* @param[in] can_parameter_init 参数
* @return ErrStatus 返回值
*/
ErrStatus can_init(uint32_t can_periph, can_parameter_struct *can_parameter_init)
{
uint32_t timeout = CAN_TIMEOUT;
@@ -296,6 +309,12 @@ ErrStatus can_init(uint32_t can_periph, can_parameter_struct *can_parameter_init
\param[out] none
\retval ErrStatus: SUCCESS or ERROR
*/
/**
* @brief can_fd_init 函数
* @param[in] can_periph 参数
* @param[in] can_fdframe_init 参数
* @return ErrStatus 返回值
*/
ErrStatus can_fd_init(uint32_t can_periph, can_fdframe_struct *can_fdframe_init)
{
uint32_t timeout = CAN_TIMEOUT;
@@ -388,6 +407,11 @@ ErrStatus can_fd_init(uint32_t can_periph, can_fdframe_struct *can_fdframe_init)
\param[out] none
\retval none
*/
/**
* @brief can_filter_init 函数
* @param[in] can_filter_parameter_init 参数
* @return void
*/
void can_filter_init(can_filter_parameter_struct *can_filter_parameter_init)
{
uint32_t val = 0U;
@@ -470,6 +494,14 @@ void can_filter_init(can_filter_parameter_struct *can_filter_parameter_init)
\param[out] none
\retval none
*/
/**
* @brief can_filter_mask_mode_init 函数
* @param[in] id 参数
* @param[in] mask 参数
* @param[in] format_fifo 参数
* @param[in] filter_number 参数
* @return void
*/
void can_filter_mask_mode_init(uint32_t id, uint32_t mask, can_format_fifo_enum format_fifo, uint16_t filter_number)
{
can_filter_parameter_struct can_filter;
@@ -556,6 +588,12 @@ void can_filter_mask_mode_init(uint32_t id, uint32_t mask, can_format_fifo_enum
\param[out] none
\retval ErrStatus: SUCCESS or ERROR
*/
/**
* @brief can_monitor_mode_set 函数
* @param[in] can_periph 参数
* @param[in] mode 参数
* @return ErrStatus 返回值
*/
ErrStatus can_monitor_mode_set(uint32_t can_periph, uint8_t mode)
{
ErrStatus reval = SUCCESS;
@@ -728,6 +766,12 @@ void can_time_trigger_mode_disable(uint32_t can_periph)
\param[out] none
\retval mailbox_number
*/
/**
* @brief can_message_transmit 函数
* @param[in] can_periph 参数
* @param[in] transmit_message 参数
* @return uint8_t 返回值
*/
uint8_t can_message_transmit(uint32_t can_periph, can_trasnmit_message_struct *transmit_message)
{
uint8_t mailbox_number = CAN_MAILBOX0;
@@ -975,6 +1019,13 @@ ErrStatus can_transmission_stop(uint32_t can_periph, uint8_t mailbox_number)
\arg rx_fi: 0 - 27
\retval none
*/
/**
* @brief can_message_receive 函数
* @param[in] can_periph 参数
* @param[in] fifo_number 参数
* @param[in] receive_message 参数
* @return void
*/
void can_message_receive(uint32_t can_periph, uint8_t fifo_number, can_receive_message_struct *receive_message)
{
uint32_t canfd_en = 0U;
@@ -1214,6 +1265,11 @@ ErrStatus can_wakeup(uint32_t can_periph)
\arg CAN_ERROR_CRC: CRC error
\arg CAN_ERROR_SOFTWARECFG: software configure
*/
/**
* @brief can_error_get 函数
* @param[in] can_periph 参数
* @return can_error_enum 返回值
*/
can_error_enum can_error_get(uint32_t can_periph)
{
can_error_enum error;
@@ -1278,6 +1334,12 @@ uint8_t can_transmit_error_number_get(uint32_t can_periph)
\param[out] none
\retval none
*/
/**
* @brief can_interrupt_enable 函数
* @param[in] can_periph 参数
* @param[in] interrupt 参数
* @return void
*/
void can_interrupt_enable(uint32_t can_periph, uint32_t interrupt)
{
CAN_INTEN(can_periph) |= interrupt;
@@ -1306,6 +1368,12 @@ void can_interrupt_enable(uint32_t can_periph, uint32_t interrupt)
\param[out] none
\retval none
*/
/**
* @brief can_interrupt_disable 函数
* @param[in] can_periph 参数
* @param[in] interrupt 参数
* @return void
*/
void can_interrupt_disable(uint32_t can_periph, uint32_t interrupt)
{
CAN_INTEN(can_periph) &= ~interrupt;
@@ -1354,6 +1422,12 @@ void can_interrupt_disable(uint32_t can_periph, uint32_t interrupt)
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief can_flag_get 函数
* @param[in] can_periph 参数
* @param[in] flag 参数
* @return FlagStatus 返回值
*/
FlagStatus can_flag_get(uint32_t can_periph, can_flag_enum flag)
{
FlagStatus retval;
@@ -1394,6 +1468,12 @@ FlagStatus can_flag_get(uint32_t can_periph, can_flag_enum flag)
\param[out] none
\retval none
*/
/**
* @brief can_flag_clear 函数
* @param[in] can_periph 参数
* @param[in] flag 参数
* @return void
*/
void can_flag_clear(uint32_t can_periph, can_flag_enum flag)
{
CAN_REG_VAL(can_periph, flag) |= BIT(CAN_BIT_POS(flag));
@@ -1424,6 +1504,12 @@ void can_flag_clear(uint32_t can_periph, can_flag_enum flag)
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief can_interrupt_flag_get 函数
* @param[in] can_periph 参数
* @param[in] flag 参数
* @return FlagStatus 返回值
*/
FlagStatus can_interrupt_flag_get(uint32_t can_periph, can_interrupt_flag_enum flag)
{
FlagStatus retval;
@@ -1469,6 +1555,12 @@ FlagStatus can_interrupt_flag_get(uint32_t can_periph, can_interrupt_flag_enum f
\param[out] none
\retval none
*/
/**
* @brief can_interrupt_flag_clear 函数
* @param[in] can_periph 参数
* @param[in] flag 参数
* @return void
*/
void can_interrupt_flag_clear(uint32_t can_periph, can_interrupt_flag_enum flag)
{
CAN_REG_VALS(can_periph, flag) |= BIT(CAN_BIT_POS0(flag));
@@ -34,7 +34,9 @@ OF SUCH DAMAGE.
#include "gd32c10x_crc.h"
/** @brief CRC_DATA_RESET_VALUE 宏定义 */
#define CRC_DATA_RESET_VALUE ((uint32_t)0xFFFFFFFFU)
/** @brief CRC_FDATA_RESET_VALUE 宏定义 */
#define CRC_FDATA_RESET_VALUE ((uint32_t)0x00000000U)
/*!
@@ -34,12 +34,17 @@ OF SUCH DAMAGE.
#include "gd32c10x_ctc.h"
/** @brief CTC_FLAG_MASK 宏定义 */
#define CTC_FLAG_MASK ((uint32_t)0x00000700U)
/* CTC register bit offset */
/** @brief CTC_TRIMVALUE_OFFSET 宏定义 */
#define CTC_TRIMVALUE_OFFSET ((uint32_t)8U)
/** @brief CTC_TRIM_VALUE_OFFSET 宏定义 */
#define CTC_TRIM_VALUE_OFFSET ((uint32_t)8U)
/** @brief CTC_REFCAP_OFFSET 宏定义 */
#define CTC_REFCAP_OFFSET ((uint32_t)16U)
/** @brief CTC_LIMIT_VALUE_OFFSET 宏定义 */
#define CTC_LIMIT_VALUE_OFFSET ((uint32_t)16U)
/*!
@@ -163,6 +168,11 @@ void ctc_refsource_signal_select(uint32_t refs)
\param[out] none
\retval none
*/
/**
* @brief ctc_refsource_prescaler_config 函数
* @param[in] prescaler 参数
* @return void
*/
void ctc_refsource_prescaler_config(uint32_t prescaler)
{
CTC_CTL1 &= (uint32_t)(~CTC_CTL1_REFPSC);
@@ -300,6 +310,11 @@ void ctc_interrupt_disable(uint32_t interrupt)
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief ctc_interrupt_flag_get 函数
* @param[in] interrupt 参数
* @return FlagStatus 返回值
*/
FlagStatus ctc_interrupt_flag_get(uint32_t interrupt)
{
uint32_t intflag = 0U, intenable = 0U;
@@ -337,6 +352,11 @@ FlagStatus ctc_interrupt_flag_get(uint32_t interrupt)
\param[out] none
\retval none
*/
/**
* @brief ctc_interrupt_flag_clear 函数
* @param[in] interrupt 参数
* @return void
*/
void ctc_interrupt_flag_clear(uint32_t interrupt)
{
if(RESET != (interrupt & CTC_FLAG_MASK)){
@@ -360,6 +380,11 @@ void ctc_interrupt_flag_clear(uint32_t interrupt)
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief ctc_flag_get 函数
* @param[in] flag 参数
* @return FlagStatus 返回值
*/
FlagStatus ctc_flag_get(uint32_t flag)
{
FlagStatus ret;
@@ -386,6 +411,11 @@ FlagStatus ctc_flag_get(uint32_t flag)
\param[out] none
\retval none
*/
/**
* @brief ctc_flag_clear 函数
* @param[in] flag 参数
* @return void
*/
void ctc_flag_clear(uint32_t flag)
{
if(RESET != (flag & CTC_FLAG_MASK)){
@@ -35,8 +35,11 @@ OF SUCH DAMAGE.
#include "gd32c10x_dac.h"
/* DAC register bit offset */
/** @brief OUT1_REG_OFFSET 宏定义 */
#define OUT1_REG_OFFSET ((uint32_t)0x00000010U)
/** @brief DH_12BIT_OFFSET 宏定义 */
#define DH_12BIT_OFFSET ((uint32_t)0x00000010U)
/** @brief DH_8BIT_OFFSET 宏定义 */
#define DH_8BIT_OFFSET ((uint32_t)0x00000008U)
/*!
@@ -203,6 +206,14 @@ uint16_t dac_output_value_get(uint32_t dac_periph, uint8_t dac_out)
\param[out] none
\retval none
*/
/**
* @brief dac_data_set 函数
* @param[in] dac_periph 参数
* @param[in] dac_out 参数
* @param[in] dac_align 参数
* @param[in] data 参数
* @return void
*/
void dac_data_set(uint32_t dac_periph, uint8_t dac_out, uint32_t dac_align, uint16_t data)
{
/* DAC_OUT0 data alignment */
@@ -299,6 +310,13 @@ void dac_trigger_disable(uint32_t dac_periph, uint8_t dac_out)
\param[out] none
\retval none
*/
/**
* @brief dac_trigger_source_config 函数
* @param[in] dac_periph 参数
* @param[in] dac_out 参数
* @param[in] triggersource 参数
* @return void
*/
void dac_trigger_source_config(uint32_t dac_periph, uint8_t dac_out, uint32_t triggersource)
{
if(DAC_OUT0 == dac_out){
@@ -380,6 +398,13 @@ void dac_wave_mode_config(uint32_t dac_periph, uint8_t dac_out, uint32_t wave_mo
\param[out] none
\retval none
*/
/**
* @brief dac_lfsr_noise_config 函数
* @param[in] dac_periph 参数
* @param[in] dac_out 参数
* @param[in] unmask_bits 参数
* @return void
*/
void dac_lfsr_noise_config(uint32_t dac_periph, uint8_t dac_out, uint32_t unmask_bits)
{
if(DAC_OUT0 == dac_out){
@@ -416,6 +441,13 @@ void dac_lfsr_noise_config(uint32_t dac_periph, uint8_t dac_out, uint32_t unmask
\param[out] none
\retval none
*/
/**
* @brief dac_triangle_noise_config 函数
* @param[in] dac_periph 参数
* @param[in] dac_out 参数
* @param[in] amplitude 参数
* @return void
*/
void dac_triangle_noise_config(uint32_t dac_periph, uint8_t dac_out, uint32_t amplitude)
{
if(DAC_OUT0 == dac_out){
@@ -514,6 +546,14 @@ void dac_concurrent_output_buffer_disable(uint32_t dac_periph)
\param[out] none
\retval none
*/
/**
* @brief dac_concurrent_data_set 函数
* @param[in] dac_periph 参数
* @param[in] dac_align 参数
* @param[in] data0 参数
* @param[in] data1 参数
* @return void
*/
void dac_concurrent_data_set(uint32_t dac_periph, uint32_t dac_align, uint16_t data0, uint16_t data1)
{
uint32_t data = 0U;
@@ -35,9 +35,16 @@ OF SUCH DAMAGE.
#include "gd32c10x_dma.h"
#include <stdio.h>
/** @brief DMA_WRONG_HANDLE 宏定义 */
#define DMA_WRONG_HANDLE while(1){}
/* check whether peripheral matches channels or not */
/**
* @brief dma_periph_and_channel_check 函数
* @param[in] dma_periph 参数
* @param[in] channelx 参数
* @return ErrStatus 返回值
*/
static ErrStatus dma_periph_and_channel_check(uint32_t dma_periph, dma_channel_enum channelx);
/*!
@@ -110,6 +117,13 @@ void dma_struct_para_init(dma_parameter_struct* init_struct)
\param[out] none
\retval none
*/
/**
* @brief dma_init 函数
* @param[in] dma_periph 参数
* @param[in] channelx 参数
* @param[in] init_struct 参数
* @return void
*/
void dma_init(uint32_t dma_periph, dma_channel_enum channelx, dma_parameter_struct* init_struct)
{
uint32_t ctl;
@@ -365,6 +379,13 @@ uint32_t dma_transfer_number_get(uint32_t dma_periph, dma_channel_enum channelx)
\param[out] none
\retval none
*/
/**
* @brief dma_priority_config 函数
* @param[in] dma_periph 参数
* @param[in] channelx 参数
* @param[in] priority 参数
* @return void
*/
void dma_priority_config(uint32_t dma_periph, dma_channel_enum channelx, uint32_t priority)
{
uint32_t ctl;
@@ -396,6 +417,13 @@ void dma_priority_config(uint32_t dma_periph, dma_channel_enum channelx, uint32_
\param[out] none
\retval none
*/
/**
* @brief dma_memory_width_config 函数
* @param[in] dma_periph 参数
* @param[in] channelx 参数
* @param[in] mwidth 参数
* @return void
*/
void dma_memory_width_config(uint32_t dma_periph, dma_channel_enum channelx, uint32_t mwidth)
{
uint32_t ctl;
@@ -427,6 +455,13 @@ void dma_memory_width_config(uint32_t dma_periph, dma_channel_enum channelx, uin
\param[out] none
\retval none
*/
/**
* @brief dma_periph_width_config 函数
* @param[in] dma_periph 参数
* @param[in] channelx 参数
* @param[in] pwidth 参数
* @return void
*/
void dma_periph_width_config(uint32_t dma_periph, dma_channel_enum channelx, uint32_t pwidth)
{
uint32_t ctl;
@@ -533,6 +568,13 @@ void dma_periph_increase_disable(uint32_t dma_periph, dma_channel_enum channelx)
\param[out] none
\retval none
*/
/**
* @brief dma_transfer_direction_config 函数
* @param[in] dma_periph 参数
* @param[in] channelx 参数
* @param[in] direction 参数
* @return void
*/
void dma_transfer_direction_config(uint32_t dma_periph, dma_channel_enum channelx, uint32_t direction)
{
if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){
@@ -561,6 +603,13 @@ void dma_transfer_direction_config(uint32_t dma_periph, dma_channel_enum channel
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief dma_flag_get 函数
* @param[in] dma_periph 参数
* @param[in] channelx 参数
* @param[in] flag 参数
* @return FlagStatus 返回值
*/
FlagStatus dma_flag_get(uint32_t dma_periph, dma_channel_enum channelx, uint32_t flag)
{
FlagStatus reval;
@@ -591,6 +640,13 @@ FlagStatus dma_flag_get(uint32_t dma_periph, dma_channel_enum channelx, uint32_t
\param[out] none
\retval none
*/
/**
* @brief dma_flag_clear 函数
* @param[in] dma_periph 参数
* @param[in] channelx 参数
* @param[in] flag 参数
* @return void
*/
void dma_flag_clear(uint32_t dma_periph, dma_channel_enum channelx, uint32_t flag)
{
DMA_INTC(dma_periph) |= DMA_FLAG_ADD(flag, channelx);
@@ -611,6 +667,13 @@ void dma_flag_clear(uint32_t dma_periph, dma_channel_enum channelx, uint32_t fla
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief dma_interrupt_flag_get 函数
* @param[in] dma_periph 参数
* @param[in] channelx 参数
* @param[in] flag 参数
* @return FlagStatus 返回值
*/
FlagStatus dma_interrupt_flag_get(uint32_t dma_periph, dma_channel_enum channelx, uint32_t flag)
{
uint32_t interrupt_enable = 0U, interrupt_flag = 0U;
@@ -661,6 +724,13 @@ FlagStatus dma_interrupt_flag_get(uint32_t dma_periph, dma_channel_enum channelx
\param[out] none
\retval none
*/
/**
* @brief dma_interrupt_flag_clear 函数
* @param[in] dma_periph 参数
* @param[in] channelx 参数
* @param[in] flag 参数
* @return void
*/
void dma_interrupt_flag_clear(uint32_t dma_periph, dma_channel_enum channelx, uint32_t flag)
{
DMA_INTC(dma_periph) |= DMA_FLAG_ADD(flag, channelx);
@@ -681,6 +751,13 @@ void dma_interrupt_flag_clear(uint32_t dma_periph, dma_channel_enum channelx, ui
\param[out] none
\retval none
*/
/**
* @brief dma_interrupt_enable 函数
* @param[in] dma_periph 参数
* @param[in] channelx 参数
* @param[in] source 参数
* @return void
*/
void dma_interrupt_enable(uint32_t dma_periph, dma_channel_enum channelx, uint32_t source)
{
if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){
@@ -705,6 +782,13 @@ void dma_interrupt_enable(uint32_t dma_periph, dma_channel_enum channelx, uint32
\param[out] none
\retval none
*/
/**
* @brief dma_interrupt_disable 函数
* @param[in] dma_periph 参数
* @param[in] channelx 参数
* @param[in] source 参数
* @return void
*/
void dma_interrupt_disable(uint32_t dma_periph, dma_channel_enum channelx, uint32_t source)
{
if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){
@@ -35,25 +35,41 @@ OF SUCH DAMAGE.
#include "gd32c10x_exmc.h"
/* EXMC bank0 register reset value */
/** @brief BANK0_SNCTL_RESET 宏定义 */
#define BANK0_SNCTL_RESET ((uint32_t)0x000030DBU)
/** @brief BANK0_SNTCFG_RESET 宏定义 */
#define BANK0_SNTCFG_RESET ((uint32_t)0x0FFFFFFFU)
/** @brief BANK0_SNWTCFG_RESET 宏定义 */
#define BANK0_SNWTCFG_RESET ((uint32_t)0x0FFFFFFFU)
/* EXMC register bit offset */
/** @brief SNCTL_NRMUX_OFFSET 宏定义 */
#define SNCTL_NRMUX_OFFSET ((uint32_t)1U)
/** @brief SNCTL_SBRSTEN_OFFSET 宏定义 */
#define SNCTL_SBRSTEN_OFFSET ((uint32_t)8U)
/** @brief SNCTL_WRAPEN_OFFSET 宏定义 */
#define SNCTL_WRAPEN_OFFSET ((uint32_t)10U)
/** @brief SNCTL_WREN_OFFSET 宏定义 */
#define SNCTL_WREN_OFFSET ((uint32_t)12U)
/** @brief SNCTL_NRWTEN_OFFSET 宏定义 */
#define SNCTL_NRWTEN_OFFSET ((uint32_t)13U)
/** @brief SNCTL_EXMODEN_OFFSET 宏定义 */
#define SNCTL_EXMODEN_OFFSET ((uint32_t)14U)
/** @brief SNCTL_ASYNCWAIT_OFFSET 宏定义 */
#define SNCTL_ASYNCWAIT_OFFSET ((uint32_t)15U)
/** @brief SNTCFG_AHLD_OFFSET 宏定义 */
#define SNTCFG_AHLD_OFFSET ((uint32_t)4U)
/** @brief SNTCFG_DSET_OFFSET 宏定义 */
#define SNTCFG_DSET_OFFSET ((uint32_t)8U)
/** @brief SNTCFG_BUSLAT_OFFSET 宏定义 */
#define SNTCFG_BUSLAT_OFFSET ((uint32_t)16U)
/** @brief SNWTCFG_WAHLD_OFFSET 宏定义 */
#define SNWTCFG_WAHLD_OFFSET ((uint32_t)4U)
/** @brief SNWTCFG_WDSET_OFFSET 宏定义 */
#define SNWTCFG_WDSET_OFFSET ((uint32_t)8U)
/** @brief SNWTCFG_WBUSLAT_OFFSET 宏定义 */
#define SNWTCFG_WBUSLAT_OFFSET ((uint32_t)16U)
/*!
@@ -130,6 +146,11 @@ void exmc_norsram_struct_para_init(exmc_norsram_parameter_struct* exmc_norsram_i
\param[out] none
\retval none
*/
/**
* @brief exmc_norsram_init 函数
* @param[in] exmc_norsram_init_struct 参数
* @return void
*/
void exmc_norsram_init(exmc_norsram_parameter_struct* exmc_norsram_init_struct)
{
uint32_t snctl = 0x00000000U, sntcfg = 0x00000000U, snwtcfg = 0x00000000U;
@@ -34,6 +34,7 @@ OF SUCH DAMAGE.
#include "gd32c10x_exti.h"
/** @brief EXTI_REG_RESET_VALUE 宏定义 */
#define EXTI_REG_RESET_VALUE ((uint32_t)0x00000000U)
/*!
@@ -69,6 +70,13 @@ void exti_deinit(void)
\param[out] none
\retval none
*/
/**
* @brief exti_init 函数
* @param[in] linex 参数
* @param[in] mode 参数
* @param[in] trig_type 参数
* @return void
*/
void exti_init(exti_line_enum linex, exti_mode_enum mode, exti_trig_type_enum trig_type)
{
/* reset the EXTI line x */
@@ -35,25 +35,45 @@ OF SUCH DAMAGE.
#include "gd32c10x_fmc.h"
/* FMC mask */
/** @brief LOW_8BITS_MASK 宏定义 */
#define LOW_8BITS_MASK ((uint32_t)0x000000FFU)
/** @brief HIGH_8BITS_MASK 宏定义 */
#define HIGH_8BITS_MASK ((uint32_t)0x0000FF00U)
/** @brief LOW_8BITS_MASK1 宏定义 */
#define LOW_8BITS_MASK1 ((uint32_t)0x00FF0000U)
/** @brief HIGH_8BITS_MASK1 宏定义 */
#define HIGH_8BITS_MASK1 ((uint32_t)0xFF000000U)
/** @brief LOW_16BITS_MASK 宏定义 */
#define LOW_16BITS_MASK ((uint32_t)0x0000FFFFU)
/** @brief HIGH_16BITS_MASK 宏定义 */
#define HIGH_16BITS_MASK ((uint32_t)0xFFFF0000U)
/* USER of option bytes mask */
/** @brief OB_USER_MASK 宏定义 */
#define OB_USER_MASK ((uint8_t)0xF8U)
/* OB_WP mask */
/** @brief OB_WP0_MASK 宏定义 */
#define OB_WP0_MASK ((uint32_t)0x000000FFU)
/** @brief OB_WP1_MASK 宏定义 */
#define OB_WP1_MASK ((uint32_t)0x0000FF00U)
/** @brief OB_WP2_MASK 宏定义 */
#define OB_WP2_MASK ((uint32_t)0x00FF0000U)
/** @brief OB_WP3_MASK 宏定义 */
#define OB_WP3_MASK ((uint32_t)0xFF000000U)
/* return the FMC state */
/**
* @brief fmc_state_get 函数
* @return fmc_state_enum 返回值
*/
static fmc_state_enum fmc_state_get(void);
/* check FMC ready or not */
/**
* @brief fmc_ready_wait 函数
* @param[in] timeout 参数
* @return fmc_state_enum 返回值
*/
static fmc_state_enum fmc_ready_wait(uint32_t timeout);
/* FMC main memory programming functions */
@@ -446,6 +466,11 @@ fmc_state_enum ob_erase(void)
\arg FMC_PGAERR: program alignment error
\arg FMC_TOERR: timeout error
*/
/**
* @brief ob_write_protection_enable 函数
* @param[in] ob_wp 参数
* @return fmc_state_enum 返回值
*/
fmc_state_enum ob_write_protection_enable(uint32_t ob_wp)
{
uint32_t i;
@@ -505,6 +530,11 @@ fmc_state_enum ob_write_protection_enable(uint32_t ob_wp)
\arg FMC_PGAERR: program alignment error
\arg FMC_TOERR: timeout error
*/
/**
* @brief ob_security_protection_config 函数
* @param[in] ob_spc 参数
* @return fmc_state_enum 返回值
*/
fmc_state_enum ob_security_protection_config(uint8_t ob_spc)
{
uint32_t i;
@@ -571,6 +601,13 @@ fmc_state_enum ob_security_protection_config(uint8_t ob_spc)
\arg FMC_PGAERR: program alignment error
\arg FMC_TOERR: timeout error
*/
/**
* @brief ob_user_write 函数
* @param[in] ob_fwdgt 参数
* @param[in] ob_deepsleep 参数
* @param[in] ob_stdby 参数
* @return fmc_state_enum 返回值
*/
fmc_state_enum ob_user_write(uint8_t ob_fwdgt, uint8_t ob_deepsleep, uint8_t ob_stdby)
{
uint32_t i;
@@ -700,6 +737,11 @@ uint16_t fmc_ecc_address_get(void)
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief fmc_ecc_flag_get 函数
* @param[in] flag 参数
* @return FlagStatus 返回值
*/
FlagStatus fmc_ecc_flag_get(uint32_t flag)
{
FlagStatus status = RESET;
@@ -725,6 +767,11 @@ FlagStatus fmc_ecc_flag_get(uint32_t flag)
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief fmc_ecc_flag_clear 函数
* @param[in] flag 参数
* @return void
*/
void fmc_ecc_flag_clear(uint32_t flag)
{
FMC_ECCCS |= flag;
@@ -81,6 +81,11 @@ void fwdgt_enable(void)
\param[out] none
\retval ErrStatus: ERROR or SUCCESS
*/
/**
* @brief fwdgt_prescaler_value_config 函数
* @param[in] prescaler_value 参数
* @return ErrStatus 返回值
*/
ErrStatus fwdgt_prescaler_value_config(uint16_t prescaler_value)
{
uint32_t timeout = FWDGT_PSC_TIMEOUT;
@@ -161,6 +166,12 @@ void fwdgt_counter_reload(void)
\param[out] none
\retval ErrStatus: ERROR or SUCCESS
*/
/**
* @brief fwdgt_config 函数
* @param[in] reload_value 参数
* @param[in] prescaler_value 参数
* @return ErrStatus 返回值
*/
ErrStatus fwdgt_config(uint16_t reload_value, uint8_t prescaler_value)
{
uint32_t timeout = FWDGT_PSC_TIMEOUT;
@@ -34,6 +34,7 @@ OF SUCH DAMAGE.
#include "gd32c10x_gpio.h"
/** @brief AFIO_EXTI_SOURCE_MASK 宏定义 */
#define AFIO_EXTI_SOURCE_MASK ((uint8_t)0x03U) /*!< AFIO exti source selection mask*/
#define AFIO_EXTI_SOURCE_FIELDS ((uint8_t)0x04U) /*!< select AFIO exti source registers */
#define LSB_16BIT_MASK ((uint16_t)0xFFFFU) /*!< LSB 16-bit mask */
@@ -120,6 +121,14 @@ void gpio_afio_deinit(void)
\param[out] none
\retval none
*/
/**
* @brief gpio_init 函数
* @param[in] gpio_periph 参数
* @param[in] mode 参数
* @param[in] speed 参数
* @param[in] pin 参数
* @return void
*/
void gpio_init(uint32_t gpio_periph, uint32_t mode, uint32_t speed, uint32_t pin)
{
uint16_t i;
@@ -352,6 +361,12 @@ uint16_t gpio_output_port_get(uint32_t gpio_periph)
\param[out] none
\retval none
*/
/**
* @brief gpio_pin_remap_config 函数
* @param[in] remap 参数
* @param[in] newvalue 参数
* @return void
*/
void gpio_pin_remap_config(uint32_t remap, ControlStatus newvalue)
{
uint32_t remap1 = 0U, remap2 = 0U, temp_reg = 0U, temp_mask = 0U;
@@ -409,6 +424,12 @@ void gpio_pin_remap_config(uint32_t remap, ControlStatus newvalue)
\param[out] none
\retval none
*/
/**
* @brief gpio_exti_source_select 函数
* @param[in] output_port 参数
* @param[in] output_pin 参数
* @return void
*/
void gpio_exti_source_select(uint8_t output_port, uint8_t output_pin)
{
uint32_t source = 0U;
@@ -449,6 +470,12 @@ void gpio_exti_source_select(uint8_t output_port, uint8_t output_pin)
\param[out] none
\retval none
*/
/**
* @brief gpio_event_output_config 函数
* @param[in] output_port 参数
* @param[in] output_pin 参数
* @return void
*/
void gpio_event_output_config(uint8_t output_port, uint8_t output_pin)
{
uint32_t reg = 0U;
@@ -35,6 +35,7 @@ OF SUCH DAMAGE.
#include "gd32c10x_i2c.h"
/* I2C register bit mask */
/** @brief I2CCLK_MAX 宏定义 */
#define I2CCLK_MAX ((uint32_t)0x0000003FU) /*!< i2cclk maximum value */
#define I2CCLK_MIN ((uint32_t)0x00000002U) /*!< i2cclk minimum value */
#define I2C_FLAG_MASK ((uint32_t)0x0000FFFFU) /*!< i2c flag mask */
@@ -42,6 +43,7 @@ OF SUCH DAMAGE.
#define I2C_ADDRESS2_MASK ((uint32_t)0x000000FEU) /*!< the second i2c address mask */
/* I2C register bit offset */
/** @brief STAT1_PECV_OFFSET 宏定义 */
#define STAT1_PECV_OFFSET ((uint32_t)0x00000008U) /*!< bit offset of PECV in I2C_STAT1 */
/*!
@@ -167,6 +169,14 @@ void i2c_clock_config(uint32_t i2c_periph, uint32_t clkspeed, uint32_t dutycyc)
\param[out] none
\retval none
*/
/**
* @brief i2c_mode_addr_config 函数
* @param[in] i2c_periph 参数
* @param[in] mode 参数
* @param[in] addformat 参数
* @param[in] addr 参数
* @return void
*/
void i2c_mode_addr_config(uint32_t i2c_periph, uint32_t mode, uint32_t addformat, uint32_t addr)
{
/* SMBus/I2C mode selected */
@@ -633,6 +643,12 @@ void i2c_sam_timeout_disable(uint32_t i2c_periph)
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief i2c_flag_get 函数
* @param[in] i2c_periph 参数
* @param[in] flag 参数
* @return FlagStatus 返回值
*/
FlagStatus i2c_flag_get(uint32_t i2c_periph, i2c_flag_enum flag)
{
FlagStatus status = RESET;
@@ -664,6 +680,12 @@ FlagStatus i2c_flag_get(uint32_t i2c_periph, i2c_flag_enum flag)
\param[out] none
\retval none
*/
/**
* @brief i2c_flag_clear 函数
* @param[in] i2c_periph 参数
* @param[in] flag 参数
* @return void
*/
void i2c_flag_clear(uint32_t i2c_periph, i2c_flag_enum flag)
{
if(I2C_FLAG_ADDSEND == flag){
@@ -690,6 +712,12 @@ void i2c_flag_clear(uint32_t i2c_periph, i2c_flag_enum flag)
\param[out] none
\retval none
*/
/**
* @brief i2c_interrupt_enable 函数
* @param[in] i2c_periph 参数
* @param[in] interrupt 参数
* @return void
*/
void i2c_interrupt_enable(uint32_t i2c_periph, i2c_interrupt_enum interrupt)
{
I2C_REG_VAL(i2c_periph, interrupt) |= BIT(I2C_BIT_POS(interrupt));
@@ -710,6 +738,12 @@ void i2c_interrupt_enable(uint32_t i2c_periph, i2c_interrupt_enum interrupt)
\param[out] none
\retval none
*/
/**
* @brief i2c_interrupt_disable 函数
* @param[in] i2c_periph 参数
* @param[in] interrupt 参数
* @return void
*/
void i2c_interrupt_disable(uint32_t i2c_periph, i2c_interrupt_enum interrupt)
{
I2C_REG_VAL(i2c_periph, interrupt) &= ~BIT(I2C_BIT_POS(interrupt));
@@ -741,6 +775,12 @@ void i2c_interrupt_disable(uint32_t i2c_periph, i2c_interrupt_enum interrupt)
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief i2c_interrupt_flag_get 函数
* @param[in] i2c_periph 参数
* @param[in] int_flag 参数
* @return FlagStatus 返回值
*/
FlagStatus i2c_interrupt_flag_get(uint32_t i2c_periph, i2c_interrupt_flag_enum int_flag)
{
uint32_t intenable = 0U, flagstatus = 0U, bufie;
@@ -789,6 +829,12 @@ FlagStatus i2c_interrupt_flag_get(uint32_t i2c_periph, i2c_interrupt_flag_enum i
\param[out] none
\retval none
*/
/**
* @brief i2c_interrupt_flag_clear 函数
* @param[in] i2c_periph 参数
* @param[in] int_flag 参数
* @return void
*/
void i2c_interrupt_flag_clear(uint32_t i2c_periph, i2c_interrupt_flag_enum int_flag)
{
if(I2C_INT_FLAG_ADDSEND == int_flag){
@@ -62,6 +62,11 @@ void pmu_deinit(void)
\param[out] none
\retval none
*/
/**
* @brief pmu_lvd_select 函数
* @param[in] lvdt_n 参数
* @return void
*/
void pmu_lvd_select(uint32_t lvdt_n)
{
/* disable LVD */
@@ -139,6 +144,12 @@ void pmu_to_sleepmode(uint8_t sleepmodecmd)
\param[out] none
\retval none
*/
/**
* @brief pmu_to_deepsleepmode 函数
* @param[in] ldo 参数
* @param[in] deepsleepmodecmd 参数
* @return void
*/
void pmu_to_deepsleepmode(uint32_t ldo,uint8_t deepsleepmodecmd)
{
static uint32_t reg_snap[4];
@@ -35,24 +35,34 @@ OF SUCH DAMAGE.
#include "gd32c10x_rcu.h"
/* define clock source */
/** @brief SEL_IRC8M 宏定义 */
#define SEL_IRC8M ((uint16_t)0U) /* IRC8M is selected as CK_SYS */
/** @brief SEL_HXTAL 宏定义 */
#define SEL_HXTAL ((uint16_t)1U) /* HXTAL is selected as CK_SYS */
/** @brief SEL_PLL 宏定义 */
#define SEL_PLL ((uint16_t)2U) /* PLL is selected as CK_SYS */
/* define startup timeout count */
/** @brief OSC_STARTUP_TIMEOUT 宏定义 */
#define OSC_STARTUP_TIMEOUT ((uint32_t)0x000FFFFFU)
/** @brief LXTAL_STARTUP_TIMEOUT 宏定义 */
#define LXTAL_STARTUP_TIMEOUT ((uint32_t)0x03FFFFFFU)
/* ADC clock prescaler offset */
/** @brief RCU_ADC_PSC_OFFSET 宏定义 */
#define RCU_ADC_PSC_OFFSET ((uint32_t)14U)
/* RCU IRC8M adjust value mask and offset*/
/** @brief RCU_IRC8M_ADJUST_MASK 宏定义 */
#define RCU_IRC8M_ADJUST_MASK ((uint8_t)0x1FU)
/** @brief RCU_IRC8M_ADJUST_OFFSET 宏定义 */
#define RCU_IRC8M_ADJUST_OFFSET ((uint32_t)3U)
/* RCU PLL1 clock multiplication factor offset */
/** @brief RCU_CFG1_PLL1MF_OFFSET 宏定义 */
#define RCU_CFG1_PLL1MF_OFFSET ((uint32_t)8U)
/* RCU PREDV1 division factor offset*/
/** @brief RCU_CFG1_PREDV1_OFFSET 宏定义 */
#define RCU_CFG1_PREDV1_OFFSET ((uint32_t)4U)
/*!
@@ -115,6 +125,11 @@ void rcu_deinit(void)
\param[out] none
\retval none
*/
/**
* @brief rcu_periph_clock_enable 函数
* @param[in] periph 参数
* @return void
*/
void rcu_periph_clock_enable(rcu_periph_enum periph)
{
RCU_REG_VAL(periph) |= BIT(RCU_BIT_POS(periph));
@@ -146,6 +161,11 @@ void rcu_periph_clock_enable(rcu_periph_enum periph)
\param[out] none
\retval none
*/
/**
* @brief rcu_periph_clock_disable 函数
* @param[in] periph 参数
* @return void
*/
void rcu_periph_clock_disable(rcu_periph_enum periph)
{
RCU_REG_VAL(periph) &= ~BIT(RCU_BIT_POS(periph));
@@ -201,6 +221,11 @@ void rcu_periph_clock_sleep_disable(rcu_periph_sleep_enum periph)
\param[out] none
\retval none
*/
/**
* @brief rcu_periph_reset_enable 函数
* @param[in] periph_reset 参数
* @return void
*/
void rcu_periph_reset_enable(rcu_periph_reset_enum periph_reset)
{
RCU_REG_VAL(periph_reset) |= BIT(RCU_BIT_POS(periph_reset));
@@ -228,6 +253,11 @@ void rcu_periph_reset_enable(rcu_periph_reset_enum periph_reset)
\param[out] none
\retval none
*/
/**
* @brief rcu_periph_reset_disable 函数
* @param[in] periph_reset 参数
* @return void
*/
void rcu_periph_reset_disable(rcu_periph_reset_enum periph_reset)
{
RCU_REG_VAL(periph_reset) &= ~BIT(RCU_BIT_POS(periph_reset));
@@ -371,6 +401,11 @@ void rcu_apb2_clock_config(uint32_t ck_apb2)
\param[out] none
\retval none
*/
/**
* @brief rcu_ckout0_config 函数
* @param[in] ckout0_src 参数
* @return void
*/
void rcu_ckout0_config(uint32_t ckout0_src)
{
uint32_t reg;
@@ -520,6 +555,11 @@ void rcu_pll2_config(uint32_t pll_mul)
\param[out] none
\retval none
*/
/**
* @brief rcu_adc_clock_config 函数
* @param[in] adc_psc 参数
* @return void
*/
void rcu_adc_clock_config(uint32_t adc_psc)
{
uint32_t reg0,reg1;
@@ -577,6 +617,11 @@ void rcu_adc_clock_config(uint32_t adc_psc)
\param[out] none
\retval none
*/
/**
* @brief rcu_usb_clock_config 函数
* @param[in] usb_psc 参数
* @return void
*/
void rcu_usb_clock_config(uint32_t usb_psc)
{
uint32_t reg;
@@ -688,6 +733,11 @@ void rcu_ck48m_clock_config(uint32_t ck48m_clock_source)
\param[out] none
\retval none
*/
/**
* @brief rcu_flag_get 函数
* @param[in] flag 参数
* @return FlagStatus 返回值
*/
FlagStatus rcu_flag_get(rcu_flag_enum flag)
{
FlagStatus rcu_flag = RESET;
@@ -729,6 +779,11 @@ void rcu_all_reset_flag_clear(void)
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief rcu_interrupt_flag_get 函数
* @param[in] int_flag 参数
* @return FlagStatus 返回值
*/
FlagStatus rcu_interrupt_flag_get(rcu_int_flag_enum int_flag)
{
FlagStatus rcu_int_flag = RESET;
@@ -759,6 +814,11 @@ FlagStatus rcu_interrupt_flag_get(rcu_int_flag_enum int_flag)
\param[out] none
\retval none
*/
/**
* @brief rcu_interrupt_flag_clear 函数
* @param[in] int_flag_clear 参数
* @return void
*/
void rcu_interrupt_flag_clear(rcu_int_flag_clear_enum int_flag_clear)
{
RCU_REG_VAL(int_flag_clear) |= BIT(RCU_BIT_POS(int_flag_clear));
@@ -779,6 +839,11 @@ void rcu_interrupt_flag_clear(rcu_int_flag_clear_enum int_flag_clear)
\param[out] none
\retval none
*/
/**
* @brief rcu_interrupt_enable 函数
* @param[in] stab_int 参数
* @return void
*/
void rcu_interrupt_enable(rcu_int_enum stab_int)
{
RCU_REG_VAL(stab_int) |= BIT(RCU_BIT_POS(stab_int));
@@ -799,6 +864,11 @@ void rcu_interrupt_enable(rcu_int_enum stab_int)
\param[out] none
\retval none
*/
/**
* @brief rcu_interrupt_disable 函数
* @param[in] stab_int 参数
* @return void
*/
void rcu_interrupt_disable(rcu_int_enum stab_int)
{
RCU_REG_VAL(stab_int) &= ~BIT(RCU_BIT_POS(stab_int));
@@ -841,6 +911,11 @@ void rcu_lxtal_drive_capability_config(uint32_t lxtal_dricap)
\param[out] none
\retval ErrStatus: SUCCESS or ERROR
*/
/**
* @brief rcu_osci_stab_wait 函数
* @param[in] osci 参数
* @return ErrStatus 返回值
*/
ErrStatus rcu_osci_stab_wait(rcu_osci_type_enum osci)
{
uint32_t stb_cnt = 0U;
@@ -974,6 +1049,11 @@ ErrStatus rcu_osci_stab_wait(rcu_osci_type_enum osci)
\param[out] none
\retval none
*/
/**
* @brief rcu_osci_on 函数
* @param[in] osci 参数
* @return void
*/
void rcu_osci_on(rcu_osci_type_enum osci)
{
RCU_REG_VAL(osci) |= BIT(RCU_BIT_POS(osci));
@@ -994,6 +1074,11 @@ void rcu_osci_on(rcu_osci_type_enum osci)
\param[out] none
\retval none
*/
/**
* @brief rcu_osci_off 函数
* @param[in] osci 参数
* @return void
*/
void rcu_osci_off(rcu_osci_type_enum osci)
{
RCU_REG_VAL(osci) &= ~BIT(RCU_BIT_POS(osci));
@@ -35,10 +35,13 @@ OF SUCH DAMAGE.
#include "gd32c10x_rtc.h"
/* RTC register high / low bits mask */
/** @brief RTC_HIGH_BITS_MASK 宏定义 */
#define RTC_HIGH_BITS_MASK ((uint32_t)0x000F0000U) /* RTC high bits mask */
/** @brief RTC_LOW_BITS_MASK 宏定义 */
#define RTC_LOW_BITS_MASK ((uint32_t)0x0000FFFFU) /* RTC low bits mask */
/* RTC register high bits offset */
/** @brief RTC_HIGH_BITS_OFFSET 宏定义 */
#define RTC_HIGH_BITS_OFFSET ((uint32_t)16U)
/*!
@@ -34,21 +34,31 @@ OF SUCH DAMAGE.
#include "gd32c10x_spi.h"
/** @brief SPI_ERROR_HANDLE 宏定义 */
#define SPI_ERROR_HANDLE(s) do{}while(1)
/* SPI/I2S parameter initialization mask */
/** @brief SPI_INIT_MASK 宏定义 */
#define SPI_INIT_MASK ((uint32_t)0x00003040U) /* SPI parameter initialization mask */
/** @brief I2S_INIT_MASK 宏定义 */
#define I2S_INIT_MASK ((uint32_t)0x0000F047U) /* I2S parameter initialization mask */
/* I2S clock source selection, multiplication and division mask */
/** @brief I2S1_CLOCK_SEL 宏定义 */
#define I2S1_CLOCK_SEL ((uint32_t)0x00020000U) /* I2S1 clock source selection */
/** @brief I2S2_CLOCK_SEL 宏定义 */
#define I2S2_CLOCK_SEL ((uint32_t)0x00040000U) /* I2S2 clock source selection */
/** @brief I2S_CLOCK_MUL_MASK 宏定义 */
#define I2S_CLOCK_MUL_MASK ((uint32_t)0x0000F000U) /* I2S clock multiplication mask */
/** @brief I2S_CLOCK_DIV_MASK 宏定义 */
#define I2S_CLOCK_DIV_MASK ((uint32_t)0x000000F0U) /* I2S clock division mask */
/* default value and offset */
/** @brief SPI_I2SPSC_DEFAULT_VALUE 宏定义 */
#define SPI_I2SPSC_DEFAULT_VALUE ((uint32_t)0x00000002U) /* default value of SPI_I2SPSC register */
/** @brief RCU_CFG1_PREDV1_OFFSET 宏定义 */
#define RCU_CFG1_PREDV1_OFFSET 4U /* PREDV1 offset in RCU_CFG1 */
/** @brief RCU_CFG1_PLL2MF_OFFSET 宏定义 */
#define RCU_CFG1_PLL2MF_OFFSET 12U /* PLL2MF offset in RCU_CFG1 */
/*!
@@ -115,6 +125,12 @@ void spi_struct_para_init(spi_parameter_struct* spi_struct)
\param[out] none
\retval none
*/
/**
* @brief spi_init 函数
* @param[in] spi_periph 参数
* @param[in] spi_struct 参数
* @return void
*/
void spi_init(uint32_t spi_periph, spi_parameter_struct* spi_struct)
{
uint32_t reg = 0U;
@@ -187,6 +203,14 @@ void spi_disable(uint32_t spi_periph)
\param[out] none
\retval none
*/
/**
* @brief i2s_init 函数
* @param[in] spi_periph 参数
* @param[in] mode 参数
* @param[in] standard 参数
* @param[in] ckpl 参数
* @return void
*/
void i2s_init(uint32_t spi_periph, uint32_t mode, uint32_t standard, uint32_t ckpl)
{
uint32_t reg = 0U;
@@ -233,6 +257,14 @@ void i2s_init(uint32_t spi_periph, uint32_t mode, uint32_t standard, uint32_t ck
\param[out] none
\retval none
*/
/**
* @brief i2s_psc_config 函数
* @param[in] spi_periph 参数
* @param[in] audiosample 参数
* @param[in] frameformat 参数
* @param[in] mckout 参数
* @return void
*/
void i2s_psc_config(uint32_t spi_periph, uint32_t audiosample, uint32_t frameformat, uint32_t mckout)
{
uint32_t i2sdiv = 2U, i2sof = 0U;
@@ -752,6 +784,12 @@ void spi_i2s_interrupt_disable(uint32_t spi_periph, uint8_t interrupt)
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief spi_i2s_interrupt_flag_get 函数
* @param[in] spi_periph 参数
* @param[in] interrupt 参数
* @return FlagStatus 返回值
*/
FlagStatus spi_i2s_interrupt_flag_get(uint32_t spi_periph, uint8_t interrupt)
{
FlagStatus status = RESET;
@@ -829,6 +867,12 @@ FlagStatus spi_i2s_interrupt_flag_get(uint32_t spi_periph, uint8_t interrupt)
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief spi_i2s_flag_get 函数
* @param[in] spi_periph 参数
* @param[in] flag 参数
* @return FlagStatus 返回值
*/
FlagStatus spi_i2s_flag_get(uint32_t spi_periph, uint32_t flag)
{
FlagStatus status = RESET;
@@ -35,6 +35,7 @@ OF SUCH DAMAGE.
#include "gd32c10x_timer.h"
/* TIMER init parameter mask */
/** @brief ALIGNEDMODE_MASK 宏定义 */
#define ALIGNEDMODE_MASK ((uint32_t)0x00000060U) /*!< TIMER init parameter aligne dmode mask */
#define COUNTERDIRECTION_MASK ((uint32_t)0x00000010U) /*!< TIMER init parameter counter direction mask */
#define CLOCKDIVISION_MASK ((uint32_t)0x00000300U) /*!< TIMER init parameter clock division value mask */
@@ -154,6 +155,12 @@ void timer_struct_para_init(timer_parameter_struct* initpara)
\param[out] none
\retval none
*/
/**
* @brief timer_init 函数
* @param[in] timer_periph 参数
* @param[in] initpara 参数
* @return void
*/
void timer_init(uint32_t timer_periph, timer_parameter_struct* initpara)
{
/* configure the counter prescaler value */
@@ -431,6 +438,12 @@ void timer_update_source_config(uint32_t timer_periph, uint32_t update)
\param[out] none
\retval none
*/
/**
* @brief timer_dma_enable 函数
* @param[in] timer_periph 参数
* @param[in] dma 参数
* @return void
*/
void timer_dma_enable(uint32_t timer_periph, uint16_t dma)
{
TIMER_DMAINTEN(timer_periph) |= (uint32_t) dma;
@@ -451,6 +464,12 @@ void timer_dma_enable(uint32_t timer_periph, uint16_t dma)
\param[out] none
\retval none
*/
/**
* @brief timer_dma_disable 函数
* @param[in] timer_periph 参数
* @param[in] dma 参数
* @return void
*/
void timer_dma_disable(uint32_t timer_periph, uint16_t dma)
{
TIMER_DMAINTEN(timer_periph) &= (~(uint32_t)(dma));
@@ -507,6 +526,13 @@ void timer_channel_dma_request_source_select(uint32_t timer_periph, uint32_t dma
\param[out] none
\retval none
*/
/**
* @brief timer_dma_transfer_config 函数
* @param[in] timer_periph 参数
* @param[in] dma_baseaddr 参数
* @param[in] dma_lenth 参数
* @return void
*/
void timer_dma_transfer_config(uint32_t timer_periph, uint32_t dma_baseaddr, uint32_t dma_lenth)
{
TIMER_DMACFG(timer_periph) &= (~(uint32_t)(TIMER_DMACFG_DMATA | TIMER_DMACFG_DMATC));
@@ -529,6 +555,12 @@ void timer_dma_transfer_config(uint32_t timer_periph, uint32_t dma_baseaddr, uin
\param[out] none
\retval none
*/
/**
* @brief timer_event_software_generate 函数
* @param[in] timer_periph 参数
* @param[in] event 参数
* @return void
*/
void timer_event_software_generate(uint32_t timer_periph, uint16_t event)
{
TIMER_SWEVG(timer_periph) |= (uint32_t)event;
@@ -566,6 +598,12 @@ void timer_break_struct_para_init(timer_break_parameter_struct* breakpara)
\param[out] none
\retval none
*/
/**
* @brief timer_break_config 函数
* @param[in] timer_periph 参数
* @param[in] breakpara 参数
* @return void
*/
void timer_break_config(uint32_t timer_periph, timer_break_parameter_struct* breakpara)
{
TIMER_CCHP(timer_periph) = (uint32_t)(((uint32_t)(breakpara->runoffstate)) |
@@ -710,6 +748,13 @@ void timer_channel_output_struct_para_init(timer_oc_parameter_struct* ocpara)
\param[out] none
\retval none
*/
/**
* @brief timer_channel_output_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] ocpara 参数
* @return void
*/
void timer_channel_output_config(uint32_t timer_periph, uint16_t channel, timer_oc_parameter_struct* ocpara)
{
switch(channel){
@@ -852,6 +897,13 @@ void timer_channel_output_config(uint32_t timer_periph, uint16_t channel, timer_
\param[out] none
\retval none
*/
/**
* @brief timer_channel_output_mode_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] ocmode 参数
* @return void
*/
void timer_channel_output_mode_config(uint32_t timer_periph, uint16_t channel, uint16_t ocmode)
{
switch(channel){
@@ -893,6 +945,13 @@ void timer_channel_output_mode_config(uint32_t timer_periph, uint16_t channel, u
\param[out] none
\retval none
*/
/**
* @brief timer_channel_output_pulse_value_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] pulse 参数
* @return void
*/
void timer_channel_output_pulse_value_config(uint32_t timer_periph, uint16_t channel, uint32_t pulse)
{
switch(channel){
@@ -933,6 +992,13 @@ void timer_channel_output_pulse_value_config(uint32_t timer_periph, uint16_t cha
\param[out] none
\retval none
*/
/**
* @brief timer_channel_output_shadow_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] ocshadow 参数
* @return void
*/
void timer_channel_output_shadow_config(uint32_t timer_periph, uint16_t channel, uint16_t ocshadow)
{
switch(channel){
@@ -977,6 +1043,13 @@ void timer_channel_output_shadow_config(uint32_t timer_periph, uint16_t channel,
\param[out] none
\retval none
*/
/**
* @brief timer_channel_output_fast_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] ocfast 参数
* @return void
*/
void timer_channel_output_fast_config(uint32_t timer_periph, uint16_t channel, uint16_t ocfast)
{
switch(channel){
@@ -1021,6 +1094,13 @@ void timer_channel_output_fast_config(uint32_t timer_periph, uint16_t channel, u
\param[out] none
\retval none
*/
/**
* @brief timer_channel_output_clear_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] occlear 参数
* @return void
*/
void timer_channel_output_clear_config(uint32_t timer_periph, uint16_t channel, uint16_t occlear)
{
switch(channel){
@@ -1065,6 +1145,13 @@ void timer_channel_output_clear_config(uint32_t timer_periph, uint16_t channel,
\param[out] none
\retval none
*/
/**
* @brief timer_channel_output_polarity_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] ocpolarity 参数
* @return void
*/
void timer_channel_output_polarity_config(uint32_t timer_periph, uint16_t channel, uint16_t ocpolarity)
{
switch(channel){
@@ -1108,6 +1195,13 @@ void timer_channel_output_polarity_config(uint32_t timer_periph, uint16_t channe
\param[out] none
\retval none
*/
/**
* @brief timer_channel_complementary_output_polarity_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] ocnpolarity 参数
* @return void
*/
void timer_channel_complementary_output_polarity_config(uint32_t timer_periph, uint16_t channel, uint16_t ocnpolarity)
{
switch(channel){
@@ -1147,6 +1241,13 @@ void timer_channel_complementary_output_polarity_config(uint32_t timer_periph, u
\param[out] none
\retval none
*/
/**
* @brief timer_channel_output_state_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] state 参数
* @return void
*/
void timer_channel_output_state_config(uint32_t timer_periph, uint16_t channel, uint32_t state)
{
switch(channel){
@@ -1190,6 +1291,13 @@ void timer_channel_output_state_config(uint32_t timer_periph, uint16_t channel,
\param[out] none
\retval none
*/
/**
* @brief timer_channel_complementary_output_state_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] ocnstate 参数
* @return void
*/
void timer_channel_complementary_output_state_config(uint32_t timer_periph, uint16_t channel, uint16_t ocnstate)
{
switch(channel){
@@ -1248,6 +1356,13 @@ void timer_channel_input_struct_para_init(timer_ic_parameter_struct* icpara)
\param[out] none
\retval none
*/
/**
* @brief timer_input_capture_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] icpara 参数
* @return void
*/
void timer_input_capture_config(uint32_t timer_periph, uint16_t channel, timer_ic_parameter_struct* icpara)
{
switch(channel){
@@ -1353,6 +1468,13 @@ void timer_input_capture_config(uint32_t timer_periph, uint16_t channel, timer_i
\param[out] none
\retval none
*/
/**
* @brief timer_channel_input_capture_prescaler_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] prescaler 参数
* @return void
*/
void timer_channel_input_capture_prescaler_config(uint32_t timer_periph, uint16_t channel, uint16_t prescaler)
{
switch(channel){
@@ -1436,6 +1558,13 @@ uint32_t timer_channel_capture_value_register_read(uint32_t timer_periph, uint16
\param[out] none
\retval none
*/
/**
* @brief timer_input_pwm_capture_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] icpwm 参数
* @return void
*/
void timer_input_pwm_capture_config(uint32_t timer_periph, uint16_t channel, timer_ic_parameter_struct* icpwm)
{
uint16_t icpolarity = 0x0U;
@@ -1570,6 +1699,12 @@ void timer_hall_mode_config(uint32_t timer_periph, uint32_t hallmode)
\param[out] none
\retval none
*/
/**
* @brief timer_input_trigger_source_select 函数
* @param[in] timer_periph 参数
* @param[in] intrigger 参数
* @return void
*/
void timer_input_trigger_source_select(uint32_t timer_periph, uint32_t intrigger)
{
TIMER_SMCFG(timer_periph) &= (~(uint32_t)TIMER_SMCFG_TRGS);
@@ -1592,6 +1727,12 @@ void timer_input_trigger_source_select(uint32_t timer_periph, uint32_t intrigger
\param[out] none
\retval none
*/
/**
* @brief timer_master_output_trigger_source_select 函数
* @param[in] timer_periph 参数
* @param[in] outrigger 参数
* @return void
*/
void timer_master_output_trigger_source_select(uint32_t timer_periph, uint32_t outrigger)
{
TIMER_CTL1(timer_periph) &= (~(uint32_t)TIMER_CTL1_MMC);
@@ -1615,6 +1756,12 @@ void timer_master_output_trigger_source_select(uint32_t timer_periph, uint32_t o
\retval none
*/
/**
* @brief timer_slave_mode_select 函数
* @param[in] timer_periph 参数
* @param[in] slavemode 参数
* @return void
*/
void timer_slave_mode_select(uint32_t timer_periph, uint32_t slavemode)
{
TIMER_SMCFG(timer_periph) &= (~(uint32_t)TIMER_SMCFG_SMC);
@@ -1659,6 +1806,14 @@ void timer_master_slave_mode_config(uint32_t timer_periph, uint32_t masterslave)
\param[out] none
\retval none
*/
/**
* @brief timer_external_trigger_config 函数
* @param[in] timer_periph 参数
* @param[in] extprescaler 参数
* @param[in] extpolarity 参数
* @param[in] extfilter 参数
* @return void
*/
void timer_external_trigger_config(uint32_t timer_periph, uint32_t extprescaler, uint32_t extpolarity, uint32_t extfilter)
{
TIMER_SMCFG(timer_periph) &= (~(uint32_t)(TIMER_SMCFG_ETP | TIMER_SMCFG_ETPSC | TIMER_SMCFG_ETFC));
@@ -1685,6 +1840,14 @@ void timer_external_trigger_config(uint32_t timer_periph, uint32_t extprescaler,
\param[out] none
\retval none
*/
/**
* @brief timer_quadrature_decoder_mode_config 函数
* @param[in] timer_periph 参数
* @param[in] decomode 参数
* @param[in] ic0polarity 参数
* @param[in] ic1polarity 参数
* @return void
*/
void timer_quadrature_decoder_mode_config(uint32_t timer_periph, uint32_t decomode, uint16_t ic0polarity, uint16_t ic1polarity)
{
/* configure the quadrature decoder mode */
@@ -1745,6 +1908,14 @@ void timer_internal_trigger_as_external_clock_config(uint32_t timer_periph, uint
\param[out] none
\retval none
*/
/**
* @brief timer_external_trigger_as_external_clock_config 函数
* @param[in] timer_periph 参数
* @param[in] extrigger 参数
* @param[in] extpolarity 参数
* @param[in] extfilter 参数
* @return void
*/
void timer_external_trigger_as_external_clock_config(uint32_t timer_periph, uint32_t extrigger, uint16_t extpolarity, uint32_t extfilter)
{
if(TIMER_SMCFG_TRGSEL_CI1FE1 == extrigger){
@@ -1807,6 +1978,14 @@ void timer_external_trigger_as_external_clock_config(uint32_t timer_periph, uint
\param[out] none
\retval none
*/
/**
* @brief timer_external_clock_mode0_config 函数
* @param[in] timer_periph 参数
* @param[in] extprescaler 参数
* @param[in] extpolarity 参数
* @param[in] extfilter 参数
* @return void
*/
void timer_external_clock_mode0_config(uint32_t timer_periph, uint32_t extprescaler, uint32_t extpolarity, uint32_t extfilter)
{
/* configure TIMER external trigger input */
@@ -1834,6 +2013,14 @@ void timer_external_clock_mode0_config(uint32_t timer_periph, uint32_t extpresca
\param[out] none
\retval none
*/
/**
* @brief timer_external_clock_mode1_config 函数
* @param[in] timer_periph 参数
* @param[in] extprescaler 参数
* @param[in] extpolarity 参数
* @param[in] extfilter 参数
* @return void
*/
void timer_external_clock_mode1_config(uint32_t timer_periph, uint32_t extprescaler, uint32_t extpolarity, uint32_t extfilter)
{
/* configure TIMER external trigger input */
@@ -1910,6 +2097,12 @@ void timer_output_value_selection_config(uint32_t timer_periph, uint16_t outsel)
\param[out] none
\retval none
*/
/**
* @brief timer_interrupt_enable 函数
* @param[in] timer_periph 参数
* @param[in] interrupt 参数
* @return void
*/
void timer_interrupt_enable(uint32_t timer_periph, uint32_t interrupt)
{
TIMER_DMAINTEN(timer_periph) |= (uint32_t) interrupt;
@@ -1931,6 +2124,12 @@ void timer_interrupt_enable(uint32_t timer_periph, uint32_t interrupt)
\param[out] none
\retval none
*/
/**
* @brief timer_interrupt_disable 函数
* @param[in] timer_periph 参数
* @param[in] interrupt 参数
* @return void
*/
void timer_interrupt_disable(uint32_t timer_periph, uint32_t interrupt)
{
TIMER_DMAINTEN(timer_periph) &= (~(uint32_t)interrupt);
@@ -1952,6 +2151,12 @@ void timer_interrupt_disable(uint32_t timer_periph, uint32_t interrupt)
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief timer_interrupt_flag_get 函数
* @param[in] timer_periph 参数
* @param[in] interrupt 参数
* @return FlagStatus 返回值
*/
FlagStatus timer_interrupt_flag_get(uint32_t timer_periph, uint32_t interrupt)
{
uint32_t val;
@@ -1981,6 +2186,12 @@ FlagStatus timer_interrupt_flag_get(uint32_t timer_periph, uint32_t interrupt)
\param[out] none
\retval none
*/
/**
* @brief timer_interrupt_flag_clear 函数
* @param[in] timer_periph 参数
* @param[in] interrupt 参数
* @return void
*/
void timer_interrupt_flag_clear(uint32_t timer_periph, uint32_t interrupt)
{
TIMER_INTF(timer_periph) = (~(uint32_t)interrupt);
@@ -2006,6 +2217,12 @@ void timer_interrupt_flag_clear(uint32_t timer_periph, uint32_t interrupt)
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief timer_flag_get 函数
* @param[in] timer_periph 参数
* @param[in] flag 参数
* @return FlagStatus 返回值
*/
FlagStatus timer_flag_get(uint32_t timer_periph, uint32_t flag)
{
FlagStatus ret;
@@ -2037,6 +2254,12 @@ FlagStatus timer_flag_get(uint32_t timer_periph, uint32_t flag)
\param[out] none
\retval none
*/
/**
* @brief timer_flag_clear 函数
* @param[in] timer_periph 参数
* @param[in] flag 参数
* @return void
*/
void timer_flag_clear(uint32_t timer_periph, uint32_t flag)
{
TIMER_INTF(timer_periph) = (~(uint32_t)flag);
@@ -35,8 +35,11 @@ OF SUCH DAMAGE.
#include "gd32c10x_usart.h"
/* USART register bit offset */
/** @brief GP_GUAT_OFFSET 宏定义 */
#define GP_GUAT_OFFSET ((uint32_t)8U) /* bit offset of GUAT in USART_GP */
/** @brief CTL3_SCRTNUM_OFFSET 宏定义 */
#define CTL3_SCRTNUM_OFFSET ((uint32_t)1U) /* bit offset of SCRTNUM in USART_CTL3 */
/** @brief RT_BL_OFFSET 宏定义 */
#define RT_BL_OFFSET ((uint32_t)24U) /* bit offset of BL in USART_RT */
/*!
@@ -261,6 +264,12 @@ void usart_data_first_config(uint32_t usart_periph, uint32_t msbf)
\param[out] none
\retval none
*/
/**
* @brief usart_invert_config 函数
* @param[in] usart_periph 参数
* @param[in] invertpara 参数
* @return void
*/
void usart_invert_config(uint32_t usart_periph, usart_invert_enum invertpara)
{
/* inverted or not the specified signal */
@@ -514,6 +523,14 @@ void usart_synchronous_clock_disable(uint32_t usart_periph)
\param[out] none
\retval none
*/
/**
* @brief usart_synchronous_clock_config 函数
* @param[in] usart_periph 参数
* @param[in] clen 参数
* @param[in] cph 参数
* @param[in] cpl 参数
* @return void
*/
void usart_synchronous_clock_config(uint32_t usart_periph, uint32_t clen, uint32_t cph, uint32_t cpl)
{
USART_CTL1(usart_periph) &= ~(USART_CTL1_CLEN | USART_CTL1_CPH | USART_CTL1_CPL);
@@ -755,6 +772,12 @@ void usart_hardware_flow_coherence_config(uint32_t usart_periph, uint32_t hcm)
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief usart_flag_get 函数
* @param[in] usart_periph 参数
* @param[in] flag 参数
* @return FlagStatus 返回值
*/
FlagStatus usart_flag_get(uint32_t usart_periph, usart_flag_enum flag)
{
FlagStatus ret;
@@ -782,6 +805,12 @@ FlagStatus usart_flag_get(uint32_t usart_periph, usart_flag_enum flag)
\param[out] none
\retval none
*/
/**
* @brief usart_flag_clear 函数
* @param[in] usart_periph 参数
* @param[in] flag 参数
* @return void
*/
void usart_flag_clear(uint32_t usart_periph, usart_flag_enum flag)
{
if(USART_FLAG_EPERR == flag) {
@@ -809,6 +838,12 @@ void usart_flag_clear(uint32_t usart_periph, usart_flag_enum flag)
\param[out] none
\retval none
*/
/**
* @brief usart_interrupt_enable 函数
* @param[in] usart_periph 参数
* @param[in] interrupt 参数
* @return void
*/
void usart_interrupt_enable(uint32_t usart_periph, usart_interrupt_enum interrupt)
{
USART_REG_VAL(usart_periph, interrupt) |= BIT(USART_BIT_POS(interrupt));
@@ -832,6 +867,12 @@ void usart_interrupt_enable(uint32_t usart_periph, usart_interrupt_enum interrup
\param[out] none
\retval none
*/
/**
* @brief usart_interrupt_disable 函数
* @param[in] usart_periph 参数
* @param[in] interrupt 参数
* @return void
*/
void usart_interrupt_disable(uint32_t usart_periph, usart_interrupt_enum interrupt)
{
USART_REG_VAL(usart_periph, interrupt) &= ~BIT(USART_BIT_POS(interrupt));
@@ -858,6 +899,12 @@ void usart_interrupt_disable(uint32_t usart_periph, usart_interrupt_enum interru
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief usart_interrupt_flag_get 函数
* @param[in] usart_periph 参数
* @param[in] int_flag 参数
* @return FlagStatus 返回值
*/
FlagStatus usart_interrupt_flag_get(uint32_t usart_periph, usart_interrupt_flag_enum int_flag)
{
uint32_t intenable = 0U, flagstatus = 0U;
@@ -889,6 +936,12 @@ FlagStatus usart_interrupt_flag_get(uint32_t usart_periph, usart_interrupt_flag_
\param[out] none
\retval none
*/
/**
* @brief usart_interrupt_flag_clear 函数
* @param[in] usart_periph 参数
* @param[in] int_flag 参数
* @return void
*/
void usart_interrupt_flag_clear(uint32_t usart_periph, usart_interrupt_flag_enum int_flag)
{
USART_REG_VAL2(usart_periph, int_flag) = ~BIT(USART_BIT_POS2(int_flag));
@@ -81,6 +81,13 @@ void wwdgt_counter_update(uint16_t counter_value)
\param[out] none
\retval none
*/
/**
* @brief wwdgt_config 函数
* @param[in] counter 参数
* @param[in] window 参数
* @param[in] prescaler 参数
* @return void
*/
void wwdgt_config(uint16_t counter, uint16_t window, uint32_t prescaler)
{
WWDGT_CTL = (uint32_t)(CTL_CNT(counter));
@@ -1,3 +1,9 @@
/**
* @file RTE/Device/GD32C103CB/regions_GD32C103CB.h
* @brief GD32 RTE 外设库或运行时配置源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#ifndef REGIONS_GD32C103CB_H
#define REGIONS_GD32C103CB_H
@@ -42,6 +42,7 @@
#define __SYS_OSC_CLK (__IRC8M) /* main oscillator frequency */
/* Vector Table base offset */
/** @brief APP_BASE 宏定义 */
#define APP_BASE ((uint32_t)0x08012000U) /*!< main FLASH base address */
#define VECT_TAB_OFFSET (uint32_t)APP_BASE-FLASH_BASE /* This value must be a multiple of 0x200. */
@@ -62,6 +63,7 @@
/* The following is to prevent Vcore fluctuations caused by frequency switching.
It is strongly recommended to include it to avoid issues caused by self-removal. */
/** @brief RCU_MODIFY_4 宏定义 */
#define RCU_MODIFY_4(__delay) do{ \
volatile uint32_t i, reg; \
if(0 != __delay){ \
@@ -103,49 +105,101 @@
} \
}while(0)
/** @brief SEL_IRC8M 宏定义 */
#define SEL_IRC8M 0x00U
/** @brief SEL_HXTAL 宏定义 */
#define SEL_HXTAL 0x01U
/** @brief SEL_PLL 宏定义 */
#define SEL_PLL 0x02U
/* set the system clock frequency and declare the system clock configuration function */
#ifdef __SYSTEM_CLOCK_IRC8M
uint32_t SystemCoreClock = __SYSTEM_CLOCK_IRC8M;
/**
* @brief system_clock_8m_irc8m 函数
* @return void
*/
static void system_clock_8m_irc8m(void);
#elif defined (__SYSTEM_CLOCK_48M_PLL_IRC8M)
uint32_t SystemCoreClock = __SYSTEM_CLOCK_48M_PLL_IRC8M;
/**
* @brief system_clock_48m_irc8m 函数
* @return void
*/
static void system_clock_48m_irc8m(void);
#elif defined (__SYSTEM_CLOCK_72M_PLL_IRC8M)
uint32_t SystemCoreClock = __SYSTEM_CLOCK_72M_PLL_IRC8M;
/**
* @brief system_clock_72m_irc8m 函数
* @return void
*/
static void system_clock_72m_irc8m(void);
#elif defined (__SYSTEM_CLOCK_108M_PLL_IRC8M)
uint32_t SystemCoreClock = __SYSTEM_CLOCK_108M_PLL_IRC8M;
/**
* @brief system_clock_108m_irc8m 函数
* @return void
*/
static void system_clock_108m_irc8m(void);
#elif defined (__SYSTEM_CLOCK_120M_PLL_IRC8M)
uint32_t SystemCoreClock = __SYSTEM_CLOCK_120M_PLL_IRC8M;
/**
* @brief system_clock_120m_irc8m 函数
* @return void
*/
static void system_clock_120m_irc8m(void);
#elif defined (__SYSTEM_CLOCK_HXTAL)
uint32_t SystemCoreClock = __SYSTEM_CLOCK_HXTAL;
/**
* @brief system_clock_hxtal 函数
* @return void
*/
static void system_clock_hxtal(void);
#elif defined (__SYSTEM_CLOCK_48M_PLL_HXTAL)
uint32_t SystemCoreClock = __SYSTEM_CLOCK_48M_PLL_HXTAL;
/**
* @brief system_clock_48m_hxtal 函数
* @return void
*/
static void system_clock_48m_hxtal(void);
#elif defined (__SYSTEM_CLOCK_72M_PLL_HXTAL)
uint32_t SystemCoreClock = __SYSTEM_CLOCK_72M_PLL_HXTAL;
/**
* @brief system_clock_72m_hxtal 函数
* @return void
*/
static void system_clock_72m_hxtal(void);
#elif defined (__SYSTEM_CLOCK_108M_PLL_HXTAL)
uint32_t SystemCoreClock = __SYSTEM_CLOCK_108M_PLL_HXTAL;
/**
* @brief system_clock_108m_hxtal 函数
* @return void
*/
static void system_clock_108m_hxtal(void);
#elif defined (__SYSTEM_CLOCK_120M_PLL_HXTAL)
uint32_t SystemCoreClock = __SYSTEM_CLOCK_120M_PLL_HXTAL;
/**
* @brief system_clock_120m_hxtal 函数
* @return void
*/
static void system_clock_120m_hxtal(void);
#endif /* __SYSTEM_CLOCK_IRC8M */
/* configure the system clock */
/**
* @brief system_clock_config 函数
* @return void
*/
static void system_clock_config(void);
/* software delay to prevent the impact of Vcore fluctuations.
It is strongly recommended to include it to avoid issues caused by self-removal. */
/**
* @brief _soft_delay_ 函数
* @param[in] time 参数
* @return void
*/
static void _soft_delay_(uint32_t time)
{
__IO uint32_t i;
@@ -1,3 +1,9 @@
/**
* @file RTE/_Debug_GD32C103CB/RTE_Components.h
* @brief GD32 RTE 外设库或运行时配置源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
/*
* CSOLUTION generated file: DO NOT EDIT!
* Generated by: csolution version 2.13.0+p3-g40b6564e
@@ -13,43 +19,62 @@
/*
* Define the Device Header File:
*/
/** @brief CMSIS_device_header 宏定义 */
#define CMSIS_device_header "gd32c10x.h"
/* GigaDevice::Device:GD32C10x_StdPeripherals:ADC@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_ADC 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_ADC
/* GigaDevice::Device:GD32C10x_StdPeripherals:BKP@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_BKP 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_BKP
/* GigaDevice::Device:GD32C10x_StdPeripherals:CAN@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_CAN 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_CAN
/* GigaDevice::Device:GD32C10x_StdPeripherals:CRC@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_CRC 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_CRC
/* GigaDevice::Device:GD32C10x_StdPeripherals:DBG@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_DBG 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_DBG
/* GigaDevice::Device:GD32C10x_StdPeripherals:DMA@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_DMA 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_DMA
/* GigaDevice::Device:GD32C10x_StdPeripherals:EXTI@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_EXTI 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_EXTI
/* GigaDevice::Device:GD32C10x_StdPeripherals:FMC@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_FMC 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_FMC
/* GigaDevice::Device:GD32C10x_StdPeripherals:FWDGT@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_FWDGT 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_FWDGT
/* GigaDevice::Device:GD32C10x_StdPeripherals:GPIO@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_GPIO 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_GPIO
/* GigaDevice::Device:GD32C10x_StdPeripherals:MISC@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_MISC 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_MISC
/* GigaDevice::Device:GD32C10x_StdPeripherals:PMU@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_PMU 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_PMU
/* GigaDevice::Device:GD32C10x_StdPeripherals:RCU@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_RCU 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_RCU
/* GigaDevice::Device:GD32C10x_StdPeripherals:RTC@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_RTC 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_RTC
/* GigaDevice::Device:GD32C10x_StdPeripherals:SPI_I2S@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_SPI 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_SPI
/* GigaDevice::Device:GD32C10x_StdPeripherals:TIMER@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_TIMER 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_TIMER
/* GigaDevice::Device:GD32C10x_StdPeripherals:USART@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_USART 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_USART
/* GigaDevice::Device:GD32C10x_StdPeripherals:WWDGT@1.0.0 */
/** @brief RTE_DEVICE_STDPERIPHERALS_WWDGT 宏定义 */
#define RTE_DEVICE_STDPERIPHERALS_WWDGT
+59 -27
View File
@@ -1,3 +1,9 @@
/**
* @file device/ADC.cpp
* @brief 底层设备驱动与外设封装源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#include "adc.h"
#include "Can.h"
#include "FOC.h"
@@ -10,9 +16,13 @@
#include <cstring>
#include <gd32c10x_dma.h>
/** @brief ADC_SCALE 常量定义 */
constexpr float ADC_SCALE = 3.3f / 4096.0f;
/** @brief TEMP_FACTOR 常量定义 */
constexpr float TEMP_FACTOR = 1000.0f / 4.3f;
/** @brief VCC_FACTOR 常量定义 */
constexpr float VCC_FACTOR = 11.0f;
/** @brief CURRENT_FACTOR 常量定义 */
constexpr float CURRENT_FACTOR =
1.0f / 50.0f * 100.0f; // 50倍放大,100倍电流采样电阻, 单位mA
extern CAN_transmiter CAN0_transmiter;
@@ -22,6 +32,11 @@ u16 adc_value[3] = {0}; // regular DMA: MCU温度 / DRV温度 / VBUS
static volatile u16 adc_current_value[3] = {0}; // injected 同步采样: U / V / W
static volatile u8 adc_current_frame_ready = 0;
/**
* @brief 将电流 ADC 原始值换算为毫安值
* @param[in] raw_adc 参数
* @return float 返回值
*/
static inline float current_adc_to_ma(u16 raw_adc) {
return (raw_adc * ADC_SCALE + CURRENT_OFFSET) * CURRENT_FACTOR;
}
@@ -155,12 +170,7 @@ u8 sampler::init() {
* 温度值,单位为摄氏度,范围应在-40到145之间,如果读取失败则返回0.0f
*/
float sampler::get_mcu_temp() {
tempora_sample = medium_filter(mcu_temp_samples, ADC_FILTER_SIZE);
// 检查温度读数是否在有效范围内
if (tempora_sample < MIN_TEMP or tempora_sample > MAX_TEMP) {
return ERROR_ADC_VAL;
}
return tempora_sample;
return cached_mcu_temp;
}
/**
@@ -171,12 +181,7 @@ float sampler::get_mcu_temp() {
* 如果计算结果超出有效范围(-40到255摄氏度),则重新采样计算。
*/
float sampler::get_drv_temp() {
tempora_sample = medium_filter(drv_temp_samples, ADC_FILTER_SIZE);
// 检查温度读数是否在有效范围内
if (tempora_sample < MIN_TEMP || tempora_sample > MAX_TEMP) {
return ERROR_ADC_VAL;
}
return tempora_sample;
return cached_drv_temp;
}
/**
@@ -221,13 +226,7 @@ float sampler::get_current(char type) {
* 如果计算结果超出有效范围(-40到255伏特),则重新采样计算。
*/
float sampler::get_vbus_voltage() {
tempora_sample = medium_filter(vbus_samples, ADC_FILTER_SIZE);
// 检查电压读数是否在有效范围内
const u8 mid = ADC_FILTER_SIZE / 2;
if (vbus_samples[mid] > MAX_VCC or vbus_samples[mid] < MIN_VCC) {
return ERROR_ADC_VAL;
}
return tempora_sample;
return cached_vbus;
}
/**
@@ -237,21 +236,39 @@ float sampler::get_vbus_voltage() {
* 如果计算结果超出有效范围(-40到255摄氏度),则重新采样计算。
*/
void sampler::update_mcu_temp() {
memmove(mcu_temp_samples, mcu_temp_samples + 1,
(ADC_FILTER_SIZE - 1) * sizeof(float));
mcu_temp_samples[ADC_FILTER_SIZE - 1] =
// 环形缓冲区写入,替代 memmove
mcu_temp_samples[mcu_temp_head] =
(1.43f - adc_value[0] * ADC_SCALE) * TEMP_FACTOR + 35.0f;
mcu_temp_head++;
if (mcu_temp_head >= ADC_FILTER_SIZE) mcu_temp_head = 0;
// 更新缓存:中值滤波
tempora_sample = medium_filter(mcu_temp_samples, ADC_FILTER_SIZE);
if (tempora_sample < MIN_TEMP || tempora_sample > MAX_TEMP) {
cached_mcu_temp = ERROR_ADC_VAL;
} else {
cached_mcu_temp = tempora_sample;
}
}
/**
* @brief 更新MCU温度
*/
void sampler::update_drv_temp() {
memmove(drv_temp_samples, drv_temp_samples + 1,
(ADC_FILTER_SIZE - 1) * sizeof(float));
// 环形缓冲区写入,替代 memmove
float R_now = (float)adc_value[1] / (4096 - (float)adc_value[1]) * 4700;
drv_temp_samples[ADC_FILTER_SIZE - 1] =
drv_temp_samples[drv_temp_head] =
1.0f / (0.00335f + 0.00025f * log(R_now / 10000.0f)) - 273.15f;
drv_temp_head++;
if (drv_temp_head >= ADC_FILTER_SIZE) drv_temp_head = 0;
// 更新缓存:中值滤波
tempora_sample = medium_filter(drv_temp_samples, ADC_FILTER_SIZE);
if (tempora_sample < MIN_TEMP || tempora_sample > MAX_TEMP) {
cached_drv_temp = ERROR_ADC_VAL;
} else {
cached_drv_temp = tempora_sample;
}
}
/**
@@ -278,10 +295,25 @@ void sampler::update_current() {
* @brief 更新供电电压
*/
void sampler::update_vbus_voltage() {
memmove(vbus_samples, vbus_samples + 1, (ADC_FILTER_SIZE - 1) * sizeof(float));
vbus_samples[ADC_FILTER_SIZE - 1] = adc_value[2] * ADC_SCALE * VCC_FACTOR;
// 环形缓冲区写入,替代 memmove
vbus_samples[temp_vbus_head] = adc_value[2] * ADC_SCALE * VCC_FACTOR;
temp_vbus_head++;
if (temp_vbus_head >= ADC_FILTER_SIZE) temp_vbus_head = 0;
// 更新缓存:中值滤波 + 范围检查
tempora_sample = medium_filter(vbus_samples, ADC_FILTER_SIZE);
const u8 mid = ADC_FILTER_SIZE / 2;
if (vbus_samples[mid] > MAX_VCC || vbus_samples[mid] < MIN_VCC) {
cached_vbus = ERROR_ADC_VAL;
} else {
cached_vbus = tempora_sample;
}
}
/**
* @brief ADC0_1_IRQHandler 中断处理函数
* @return void
*/
extern "C" void ADC0_1_IRQHandler(void) {
if (adc_interrupt_flag_get(ADC0, ADC_INT_FLAG_EOIC) != RESET) {
/* 丢弃 rank0 dummy,真实样本使用 rank1/2/3,对应 U/V/W 同一 PWM 时刻 */
+108
View File
@@ -1,3 +1,9 @@
/**
* @file device/Can.cpp
* @brief 底层设备驱动与外设封装源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#include "Can.h"
#include "FOC.h"
#include "Filter.h"
@@ -20,11 +26,14 @@
// CAN 调试宏定义
#if CAN_DEBUG
/** @brief CAN_DEBUG_PRINT 宏定义 */
#define CAN_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)
#else
/** @brief CAN_DEBUG_PRINT 宏定义 */
#define CAN_DEBUG_PRINT(fmt, ...) ((void)0)
#endif
/** @brief CANX 常量定义 */
constexpr u16 CANX = CAN0;
extern FOC_Controller FOC;
extern sampler sampler;
@@ -43,7 +52,9 @@ static volatile bool can_rx_dma_busy = false;
static can_receive_message_struct can_rx_dma_message;
// CAN接收/发送队列结构
/** @brief CAN_RX_QUEUE_SIZE 宏定义 */
#define CAN_RX_QUEUE_SIZE 32
/** @brief CAN_TX_QUEUE_SIZE 宏定义 */
#define CAN_TX_QUEUE_SIZE 32
typedef struct {
@@ -233,6 +244,10 @@ bool CAN_transmiter::dequeue_rx_message(can_receive_message_struct &message) {
// 静默模式相关函数实现
// 使用 systick 获取系统时间(ms)
/**
* @brief 获取系统毫秒计数
* @return extern u32 返回值
*/
extern u32 get_systick_ms(void);
/*!
@@ -523,6 +538,10 @@ void canfd_loopback_test(void) {
uint8_t transmit_mailbox = 0;
std::mt19937 gen;
/**
* @brief dis 函数
* @return std::uniform_int_distribution<int> 返回值
*/
std::uniform_int_distribution<int> dis(0, 255);
can_struct_para_init(CAN_FD_FRAME_STRUCT, &transmit_message);
@@ -581,7 +600,17 @@ void can_loopback_test(void) {
uint32_t timeout = 0xFF;
uint8_t transmit_mailbox = 0;
/**
* @brief gen 函数
* @param[in] rand 参数
* @return std::mt19937 返回值
*/
std::mt19937 gen(rand()); // 使用随机设备生成的种子
/**
* @brief dis 函数
* @param[in] xff 参数
* @return std::uniform_int_distribution<int> 返回值
*/
std::uniform_int_distribution<int> dis(0, 0xff);
can_struct_para_init(CAN_TX_MESSAGE_STRUCT, &transmit_message);
@@ -671,19 +700,38 @@ u8 CAN_transmiter::init() {
return 0;
}
/**
* @brief CAN_EnterCritical 函数
* @return uint32_t 返回值
*/
static uint32_t CAN_EnterCritical(void) {
uint32_t primask = __get_PRIMASK();
__disable_irq();
return primask;
}
/**
* @brief CAN_ExitCritical 函数
* @param[in] primask 参数
* @return void
*/
static void CAN_ExitCritical(uint32_t primask) { __set_PRIMASK(primask); }
/**
* @brief CANFD_DlcToLength 函数
* @param[in] dlc 参数
* @return u8 返回值
*/
static u8 CANFD_DlcToLength(u8 dlc) {
return (dlc <= 8U) ? dlc
: ((dlc <= 15U) ? CANFD_DLC_LENGTH_TABLE[dlc - 9U] : 0U);
}
/**
* @brief CANFD_NormalizeLength 函数
* @param[in] length 参数
* @return u8 返回值
*/
static u8 CANFD_NormalizeLength(u8 length) {
if (length <= 8U)
return length;
@@ -695,8 +743,18 @@ static u8 CANFD_NormalizeLength(u8 length) {
return 0U;
}
/**
* @brief CANFD_WordCount 函数
* @param[in] length 参数
* @return u8 返回值
*/
static u8 CANFD_WordCount(u8 length) { return (length + 3U) / 4U; }
/**
* @brief CAN_RX_QueuePushFromIsr 函数
* @param[in] message 参数
* @return void
*/
static void CAN_RX_QueuePushFromIsr(const can_receive_message_struct &message) {
if (rx_queue_count < CAN_RX_QUEUE_SIZE) {
rx_queue[rx_queue_tail].id = message.rx_efid;
@@ -716,16 +774,29 @@ static void CAN_RX_QueuePushFromIsr(const can_receive_message_struct &message) {
static void CAN_RX_ReleaseFifo0(void) { CAN_RFIFO0(CAN0) |= CAN_RFIFO0_RFD0; }
/**
* @brief CAN_RX_Fifo0PendingCount 函数
* @return u8 返回值
*/
static u8 CAN_RX_Fifo0PendingCount(void) {
return can_receive_message_length_get(CAN0, CAN_FIFO0);
}
/**
* @brief CAN_TX_HasEmptyMailbox 函数
* @return bool 返回值
*/
static bool CAN_TX_HasEmptyMailbox(void) {
return (can_flag_get(CAN0, CAN_FLAG_TME0) != RESET) ||
(can_flag_get(CAN0, CAN_FLAG_TME1) != RESET) ||
(can_flag_get(CAN0, CAN_FLAG_TME2) != RESET);
}
/**
* @brief CAN_RX_ReadMetadata 函数
* @param[in] message 参数
* @return void
*/
static void CAN_RX_ReadMetadata(can_receive_message_struct *message) {
uint8_t dlc;
uint32_t rfifomi = CAN_RFIFOMI(CAN0, CAN_FIFO0);
@@ -752,6 +823,11 @@ static void CAN_RX_ReadMetadata(can_receive_message_struct *message) {
}
}
/**
* @brief CAN_RX_StartPayloadDma 函数
* @param[in] metadata 参数
* @return void
*/
static void CAN_RX_StartPayloadDma(const can_receive_message_struct &metadata) {
can_rx_dma_message = metadata;
if (can_rx_dma_message.rx_dlen > 64) {
@@ -775,6 +851,10 @@ static void CAN_RX_StartPayloadDma(const can_receive_message_struct &metadata) {
dma_channel_enable(DMA0, DMA_CH4);
}
/**
* @brief CAN_RX_PumpFifo0 函数
* @return void
*/
static void CAN_RX_PumpFifo0(void) {
while (!can_rx_dma_busy) {
if (CAN_RX_Fifo0PendingCount() == 0U) {
@@ -794,6 +874,11 @@ static void CAN_RX_PumpFifo0(void) {
}
}
/**
* @brief CAN_RX_QueuePop 函数
* @param[in] item 参数
* @return u8 返回值
*/
static u8 CAN_RX_QueuePop(can_rx_queue_item_t *item) {
u8 popped = 0U;
uint32_t primask = CAN_EnterCritical();
@@ -810,6 +895,11 @@ static u8 CAN_RX_QueuePop(can_rx_queue_item_t *item) {
return popped;
}
/**
* @brief CAN_TX_QueuePush 函数
* @param[in] message 参数
* @return u8 返回值
*/
static u8 CAN_TX_QueuePush(const can_trasnmit_message_struct &message) {
u8 queued = 0U;
uint32_t primask = CAN_EnterCritical();
@@ -831,6 +921,11 @@ static u8 CAN_TX_QueuePush(const can_trasnmit_message_struct &message) {
return 0U;
}
/**
* @brief CAN_TX_QueuePeek 函数
* @param[in] message 参数
* @return u8 返回值
*/
static u8 CAN_TX_QueuePeek(can_trasnmit_message_struct *message) {
u8 has_message = 0U;
uint32_t primask = CAN_EnterCritical();
@@ -842,6 +937,11 @@ static u8 CAN_TX_QueuePeek(can_trasnmit_message_struct *message) {
return has_message;
}
/**
* @brief CAN_TX_QueuePop 函数
* @param[in] message 参数
* @return u8 返回值
*/
static u8 CAN_TX_QueuePop(can_trasnmit_message_struct *message) {
u8 popped = 0U;
uint32_t primask = CAN_EnterCritical();
@@ -856,6 +956,10 @@ static u8 CAN_TX_QueuePop(can_trasnmit_message_struct *message) {
return popped;
}
/**
* @brief CAN_TX_DisableTmeIfQueueEmpty 函数
* @return void
*/
static void CAN_TX_DisableTmeIfQueueEmpty(void) {
uint32_t primask = CAN_EnterCritical();
if (tx_queue_count == 0U) {
@@ -864,6 +968,10 @@ static void CAN_TX_DisableTmeIfQueueEmpty(void) {
CAN_ExitCritical(primask);
}
/**
* @brief CAN_TX_ServiceQueue 函数
* @return void
*/
static void CAN_TX_ServiceQueue(void) {
can_trasnmit_message_struct queued_message;
while (CAN_TX_HasEmptyMailbox()) {
+193
View File
@@ -1,3 +1,9 @@
/**
* @file device/Can.h
* @brief 底层设备驱动与外设封装源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#ifndef _CAN_H
#define _CAN_H
@@ -11,18 +17,35 @@ extern "C" {
#include "config.h"
// 定义一个联合体类型用于 float 和 byte 数组之间的转换
/**
* @brief 匿名联合体 联合体定义
*/
typedef union {
float f;
u8 b[4];
} float_union_t;
// 添加辅助函数用于将 u16 类型数据打包到 u8 数组中
/**
* @brief pack_u16_to_bytes 函数
* @param[in] buffer 参数
* @param[in] offset 参数
* @param[in] value 参数
* @return void
*/
static inline void pack_u16_to_bytes(u8 *buffer, u16 offset, u16 value) {
buffer[offset] = (u8)(value & 0xFF);
buffer[offset + 1] = (u8)((value >> 8) & 0xFF);
}
// 添加辅助函数用于将 float 类型数据打包到 u8 数组中
/**
* @brief pack_float_to_bytes 函数
* @param[in] buffer 参数
* @param[in] offset 参数
* @param[in] float_union 参数
* @return void
*/
static inline void pack_float_to_bytes(u8 *buffer, u16 offset,
float_union_t &float_union) {
buffer[offset] = float_union.b[0];
@@ -32,18 +55,36 @@ static inline void pack_float_to_bytes(u8 *buffer, u16 offset,
}
// 添加辅助函数用于从 u8 数组中解包 short 类型数据
/**
* @brief unpack_bytes_to_short 函数
* @param[in] buffer 参数
* @param[in] offset 参数
* @return short 返回值
*/
static inline short unpack_bytes_to_short(u8 *buffer, u16 offset) {
short value = (short)(buffer[offset] | (buffer[offset + 1] << 8));
return value;
}
// 添加辅助函数用于从 u8 数组中解包 u16 类型数据
/**
* @brief unpack_bytes_to_u16 函数
* @param[in] buffer 参数
* @param[in] offset 参数
* @return u16 返回值
*/
static inline u16 unpack_bytes_to_u16(u8 *buffer, u16 offset) {
u16 value = (u16)(buffer[offset] | (buffer[offset + 1] << 8));
return value;
}
// 添加辅助函数用于从 u8 数组中解包 float 类型数据
/**
* @brief unpack_bytes_to_float 函数
* @param[in] buffer 参数
* @param[in] offset 参数
* @return float_union_t 返回值
*/
static inline float_union_t unpack_bytes_to_float(u8 *buffer, u16 offset) {
float_union_t float_union;
float_union.b[0] = buffer[offset];
@@ -53,17 +94,61 @@ static inline float_union_t unpack_bytes_to_float(u8 *buffer, u16 offset) {
return float_union;
}
/**
* @brief 初始化 CAN 引脚
* @return u8 返回值
*/
u8 can_gpio_init(void); // CAN 引脚初始化
/**
* @brief 配置 CAN 外设
* @return void
*/
void can_config(void); // CAN 初始化
/**
* @brief 配置 CAN FD 外设
* @return void
*/
void canfd_config(void); // CANFD 初始化
/**
* @brief 初始化 CAN DMA 通道
* @return void
*/
void can_dma_init(void); // CAN DMA 初始化
/**
* @brief CAN0 发送中断处理函数
* @return void
*/
void CAN0_TX_IRQHandler(void); // CAN 发送中断处理函数
/**
* @brief CAN0 接收中断处理函数
* @return void
*/
void CAN0_RX0_IRQHandler(void); // CAN 接收中断处理函数
/**
* @brief DMA0 通道 4 中断处理函数
* @return void
*/
void DMA0_Channel4_IRQHandler(void); // DMA 通道 4 中断处理函数 (CAN 接收)
/**
* @brief DMA0 通道 5 中断处理函数
* @return void
*/
void DMA0_Channel5_IRQHandler(void); // DMA 通道 5 中断处理函数 (CAN 发送)
/**
* @brief jumpToBOOT 函数
* @return void
*/
void jumpToBOOT();
/**
* @brief can_loopback_init 函数
* @return void
*/
void can_loopback_init(void);
/**
* @brief can_loopback_test 函数
* @return void
*/
void can_loopback_test(void);
/*!
@@ -114,21 +199,64 @@ class CAN_transmiter {
volatile uint8_t rx_buffer_head = 0;
volatile uint8_t rx_buffer_tail = 0;
/**
* @brief 更新对象内部状态或采样数据
* @return void
*/
void update(); // 更新数据
/**
* @brief CAN_Receive 函数
* @return u8 返回值
*/
u8 CAN_Receive(); // CAN 接收
/**
* @brief CANFD_Receive 函数
* @return u8 返回值
*/
u8 CANFD_Receive(); // CANFD 接收
/**
* @brief is_rx_buffer_full 函数
* @return bool 返回值
*/
bool is_rx_buffer_full();
/**
* @brief is_rx_buffer_empty 函数
* @return bool 返回值
*/
bool is_rx_buffer_empty();
/**
* @brief dequeue_rx_message 函数
* @param[in] message 参数
* @return bool 返回值
*/
bool dequeue_rx_message(can_receive_message_struct& message);
/**
* @brief check_silent_mode 函数
* @return void
*/
void check_silent_mode(); // 检查静默模式是否结束
public:
// 节点 ID 相关辅助函数 (使用高 16 位存储节点 ID)
/**
* @brief build_can_id 函数
* @param[in] base_id 参数
* @return u32 返回值
*/
u32 build_can_id(u32 base_id); // 根据节点 ID 构建 CAN ID,格式:[节点 ID(16 位)][基础 ID(16 位)]
/**
* @brief is_message_for_me 函数
* @param[in] received_id 参数
* @return bool 返回值
*/
bool is_message_for_me(u32 received_id); // 判断消息是否发给本节点
public:
// 添加构造函数声明
/**
* @brief 初始化对象或模块
* @return u8 返回值
*/
u8 init(void);
can_receive_message_struct receive_message; // 接收消息结构体
@@ -138,23 +266,88 @@ class CAN_transmiter {
bool MagStatus = 0; // 磁状态码
bool ThermalStatus = 0; // 热能状态码
/**
* @brief communication_check 函数
* @return void
*/
void communication_check(); // 通信检查
/**
* @brief CAN_Sleep 函数
* @return u8 返回值
*/
u8 CAN_Sleep(); // CAN 进入睡眠
/**
* @brief CAN_Wakeup 函数
* @return u8 返回值
*/
u8 CAN_Wakeup(); // CAN 唤醒
/**
* @brief CAN_AsyncSend 函数
* @param[in] ID 参数
* @param[in] length 参数
* @param[in] data 参数
* @return u8 返回值
*/
u8 CAN_AsyncSend(u32 ID, u8 length, u8 *data); // CAN 异步发送 (使用 DMA)
/**
* @brief CANFD_AsyncSend 函数
* @param[in] ID 参数
* @param[in] length 参数
* @param[in] data 参数
* @return u8 返回值
*/
u8 CANFD_AsyncSend(u32 ID, u8 length, u8 *data); // CANFD 异步发送 (使用 DMA)
/**
* @brief CAN_all_Send 函数
* @return u8 返回值
*/
u8 CAN_all_Send(); // CAN 发送
/**
* @brief CANFD_all_Send 函数
* @return u8 返回值
*/
u8 CANFD_all_Send(); // CANFD 发送
/**
* @brief enter_silent_mode 函数
* @return void
*/
void enter_silent_mode(); // 进入静默模式(停发 10 秒)
/**
* @brief is_in_silent_mode 函数
* @return bool 返回值
*/
bool is_in_silent_mode(); // 检查是否在静默模式中
// 节点 ID 管理接口
/**
* @brief 获取 get_node_id 对应的数据或状态
* @return u16 返回值
*/
u16 get_node_id(); // 获取当前节点 ID
/**
* @brief 设置 set_node_id 对应的参数或状态
* @param[in] new_id 参数
* @return void
*/
void set_node_id(u16 new_id); // 设置节点 ID
/**
* @brief load_node_id_from_flash 函数
* @return u8 返回值
*/
u8 load_node_id_from_flash(); // 从 Flash 加载节点 ID
/**
* @brief save_node_id_to_flash 函数
* @param[in] new_id 参数
* @return u8 返回值
*/
u8 save_node_id_to_flash(u16 new_id); // 保存节点 ID 到 Flash
// 中断处理函数需要访问的公共接口
/**
* @brief enqueue_rx_message_from_isr 函数
* @param[in] message 参数
* @return void
*/
void enqueue_rx_message_from_isr(const can_receive_message_struct& message) {
if (!is_rx_buffer_full()) {
rx_message_buffer[rx_buffer_head] = message;
+6
View File
@@ -1,3 +1,9 @@
/**
* @file device/Timer.cpp
* @brief 底层设备驱动与外设封装源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#include "Timer.h"
#include "Can.h"
#include "FOC.h"
+39
View File
@@ -1,3 +1,9 @@
/**
* @file device/Timer.h
* @brief 底层设备驱动与外设封装源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#ifndef _TIMER_H
#define _TIMER_H
@@ -7,13 +13,46 @@ extern "C" {
#include <cstdint>
/**
* @brief User_timer_init 函数
* @return void
*/
void User_timer_init(void);
/**
* @brief Set_Pwm 函数
* @param[in] channel 参数
* @param[in] duty_cycle 参数
* @return void
*/
void Set_Pwm(u16 channel, float duty_cycle);
/**
* @brief Set_3Pwm 函数
* @param[in] duty_cycle0 参数
* @param[in] duty_cycle1 参数
* @param[in] duty_cycle2 参数
* @return void
*/
void Set_3Pwm(float duty_cycle0, float duty_cycle1,float duty_cycle2);
/**
* @brief TIMER2 中断处理函数
* @return void
*/
void TIMER2_IRQHandler(void);
/**
* @brief timer1_pwm_config 函数
* @return void
*/
void timer1_pwm_config(void);
/**
* @brief timer1_gpio_config 函数
* @return void
*/
void timer1_gpio_config(void);
/**
* @brief TIMER1 中断处理函数
* @return void
*/
void TIMER1_IRQHandler(void); // 添加TIMER1中断处理函数声明
#ifdef __cplusplus
+56
View File
@@ -1,3 +1,9 @@
/**
* @file device/adc.h
* @brief 底层设备驱动与外设封装源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#ifndef _ADC_H
#define _ADC_H
@@ -7,6 +13,9 @@ extern "C" {
#include "config.h"
/**
* @brief sampler 类或结构体
*/
class sampler {
private:
float vbus_samples[ADC_FILTER_SIZE];
@@ -16,22 +25,69 @@ class sampler {
float mcu_temp_samples[ADC_FILTER_SIZE];
float drv_temp_samples[ADC_FILTER_SIZE];
u8 current_sample_head;
u8 temp_vbus_head; // 环形缓冲区 head
u8 mcu_temp_head;
u8 drv_temp_head;
float tempora_sample;
float cached_mcu_temp; // getter 缓存
float cached_drv_temp;
float cached_vbus;
public:
/**
* @brief 初始化对象或模块
* @return u8 返回值
*/
u8 init(void);
/**
* @brief 更新 mcu_temp 相关状态
* @return void
*/
void update_mcu_temp(void);
/**
* @brief 更新 drv_temp 相关状态
* @return void
*/
void update_drv_temp(void);
/**
* @brief 更新 vbus_voltage 相关状态
* @return void
*/
void update_vbus_voltage(void);
/**
* @brief 更新 current 相关状态
* @return void
*/
void update_current(void);
/**
* @brief 获取 get_mcu_temp 对应的数据或状态
* @return float 返回值
*/
float get_mcu_temp(void);
/**
* @brief 获取 get_drv_temp 对应的数据或状态
* @return float 返回值
*/
float get_drv_temp(void);
/**
* @brief 获取 get_vbus_voltage 对应的数据或状态
* @return float 返回值
*/
float get_vbus_voltage(void);
/**
* @brief 获取 get_current 对应的数据或状态
* @param[in] char 参数
* @return float 返回值
*/
float get_current(char);
};
/**
* @brief ADC0_1_IRQHandler 中断处理函数
* @return void
*/
void ADC0_1_IRQHandler(void);
#ifdef __cplusplus
+12
View File
@@ -1,3 +1,9 @@
/**
* @file device/ang_sensor.cpp
* @brief 底层设备驱动与外设封装源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#include "ang_sensor.h"
#include "Can.h"
#include "Filter.h"
@@ -12,14 +18,20 @@
// ANG_SENS 调试宏定义
#if ANG_SENS_DEBUG
/** @brief ANG_SENS_DEBUG_PRINT 宏定义 */
#define ANG_SENS_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)
#else
/** @brief ANG_SENS_DEBUG_PRINT 宏定义 */
#define ANG_SENS_DEBUG_PRINT(fmt, ...) ((void)0)
#endif
/** @brief ANG_SPI_CS_ENABLE 宏定义 */
#define ANG_SPI_CS_ENABLE() gpio_bit_reset(GPIOA, GPIO_PIN_15)
/** @brief ANG_SPI_CS_DISABLE 宏定义 */
#define ANG_SPI_CS_DISABLE() gpio_bit_set(GPIOA, GPIO_PIN_15)
/** @brief DRV_SPI_CS_ENABLE 宏定义 */
#define DRV_SPI_CS_ENABLE() gpio_bit_reset(GPIOB, GPIO_PIN_14)
/** @brief DRV_SPI_CS_DISABLE 宏定义 */
#define DRV_SPI_CS_DISABLE() gpio_bit_set(GPIOB, GPIO_PIN_14)
// DMA 传输完成标志
+70 -1
View File
@@ -1,3 +1,9 @@
/**
* @file device/ang_sensor.h
* @brief 底层设备驱动与外设封装源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#ifndef _angsensor_H
#define _angsensor_H
#ifdef __cplusplus
@@ -7,22 +13,76 @@ extern "C" {
#include <cstring>
#include "config.h"
/**
* @brief spi_rw_half_word 函数
* @param[in] spi_periph 参数
* @param[in] i_HalfWord 参数
* @return u16 返回值
*/
u16 spi_rw_half_word(u32 spi_periph, const u16 i_HalfWord);
/**
* @brief spi_rw_half_word_dma 函数
* @param[in] spi_periph 参数
* @param[in] tx_data 参数
* @param[in] rx_data 参数
* @return int 返回值
*/
int spi_rw_half_word_dma(uint32_t spi_periph, uint16_t tx_data,
uint16_t *rx_data);
/**
* @brief angle_sensor 类或结构体
*/
class angle_sensor {
public:
float calibration_angle = ANGLESENS_CALIBRATION_ANGLE;
/**
* @brief 初始化对象或模块
* @return u8 返回值
*/
u8 init(void);
/**
* @brief 读取 read_sensorAngle 相关数据
* @return float 返回值
*/
float read_sensorAngle(void);
/**
* @brief 更新对象内部状态或采样数据
* @return float 返回值
*/
float update(void);
/**
* @brief 复位对象内部状态
* @return void
*/
void reset(void);
/**
* @brief 获取 getAngle 对应的数据或状态
* @return float 返回值
*/
float getAngle(void) const;
/**
* @brief 获取 getRawAngle 对应的数据或状态
* @return float 返回值
*/
float getRawAngle(void) const;
/**
* @brief 获取 getcurrent_sensorangle 对应的数据或状态
* @return float 返回值
*/
float getcurrent_sensorangle(void) const;
/**
* @brief angle_set 函数
* @param[in] angle 参数
* @return u8 返回值
*/
u8 angle_set(float angle);
/**
* @brief 设置 set_calibration 对应的参数或状态
* @param[in] angle 参数
* @return u8 返回值
*/
u8 set_calibration(float angle);
protected:
@@ -34,7 +94,16 @@ class angle_sensor {
float m_lastcumulativeAngle;
float velocity[VEL_FILTER_SIZE] = {0.0f};
};
/**
* @brief 快速角度归一化到 [0, 360)
* 用 while 减法替代 fmodf,在角度变化量很小时(电机控制场景)
* 通常只需 0~1 次减法,远快于 fmodf 的 ~30-50 周期开销。
*/
inline float normalizeAngle360(float angle) {
while (angle >= 360.0f) angle -= 360.0f;
while (angle < 0.0f) angle += 360.0f;
return angle;
}
#ifdef __cplusplus
}
#endif
+6
View File
@@ -1,3 +1,9 @@
/**
* @file device/motor.cpp
* @brief 底层设备驱动与外设封装源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#include "motor.h"
#include "Timer.h"
#include "gd32c10x_eval.h"
+25
View File
@@ -1,14 +1,39 @@
/**
* @file device/motor.h
* @brief 底层设备驱动与外设封装源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#ifndef _MOTOR_H
#define _MOTOR_H
// 定义电机驱动使能引脚
/** @brief MOTOR_EN_GPIO_PORT 宏定义 */
#define MOTOR_EN_GPIO_PORT GPIOC
/** @brief MOTOR_EN_GPIO_PIN 宏定义 */
#define MOTOR_EN_GPIO_PIN GPIO_PIN_13
/** @brief RCU_MOTOR_EN_GPIO 宏定义 */
#define RCU_MOTOR_EN_GPIO RCU_GPIOC
/**
* @brief 初始化电机驱动输出
* @return void
*/
void motor_init(void);
/**
* @brief 复位电机驱动
* @return void
*/
void motor_reset(void);
/**
* @brief 唤醒电机驱动
* @return void
*/
void motor_resume(void);
/**
* @brief 使电机驱动进入休眠
* @return void
*/
void motor_sleep(void);
#endif
+26 -1
View File
@@ -1,3 +1,9 @@
/**
* @file main.cpp
* @brief 应用程序主流程源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#include "main.h"
#include "Can.h"
#include "FOC.h"
@@ -12,8 +18,10 @@
// MAIN 调试宏定义
#if MAIN_DEBUG
/** @brief MAIN_DEBUG_PRINT 宏定义 */
#define MAIN_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)
#else
/** @brief MAIN_DEBUG_PRINT 宏定义 */
#define MAIN_DEBUG_PRINT(fmt, ...) ((void)0)
#endif
@@ -45,6 +53,10 @@ static FOCFunctionPtr control_functions[] = {
&FOC_Controller::velocity_open_loop, // 6: 速度开环控制
&FOC_Controller::PWM_out, // 0: 占空比置
};
/**
* @brief 应用程序入口函数
* @return int 返回值
*/
int main(void) {
u8 init_status = hardware_init();
@@ -73,6 +85,10 @@ int main(void) {
return 0;
}
/**
* @brief 初始化应用层使用的硬件与软件模块
* @return u8 返回值
*/
u8 hardware_init(void) {
__enable_irq();
systick_config(); // 系统时钟初始化
@@ -96,6 +112,11 @@ u8 hardware_init(void) {
return init_status;
}
/**
* @brief 根据任务标志调度周期性业务任务
* @param[in] currentTasks 参数
* @return void
*/
void do_task(u32 currentTasks) {
busy_task_enter(); // DWT: 记录忙碌起始周期
cnt_test++;
@@ -115,7 +136,11 @@ void do_task(u32 currentTasks) {
motor_runtime_50us++;
// 快速电压检测(每100us执行一次,响应时间 < 200us)
FOC.fast_voltage_check();
static u8 vcheck_div = 0;
if (++vcheck_div >= 2u) {
vcheck_div = 0;
FOC.fast_voltage_check();
}
// 静态变量用于跟踪上一次的控制模式
static int last_control_mode = -1;
+9
View File
@@ -37,7 +37,16 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <cstdint>
/**
* @brief 根据任务标志调度周期性业务任务
* @param[in] currentTasks 参数
* @return void
*/
void do_task(u32 currentTasks);
/**
* @brief 初始化应用层使用的硬件与软件模块
* @return u8 返回值
*/
u8 hardware_init(void);
#endif /* MAIN_H */
+175 -1
View File
@@ -1,3 +1,9 @@
/**
* @file sys/config.h
* @brief 系统服务与平台支持源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#ifndef __CONFIG_H
#define __CONFIG_H
#include "gd32c10x_eval.h"
@@ -6,41 +12,71 @@
// 如果使用 CMSIS DSP 库,需要定义 ARM_MATH_CM4
#define ARM_MATH_CM4
/** @brief EEP_DEBUG 宏定义 */
#define EEP_DEBUG 0
/** @brief OTA_DEBUG 宏定义 */
#define OTA_DEBUG 0
/** @brief SLEEP_DEBUG 宏定义 */
#define SLEEP_DEBUG 0
/** @brief ANG_SENS_DEBUG 宏定义 */
#define ANG_SENS_DEBUG 0
/** @brief CAN_DEBUG 宏定义 */
#define CAN_DEBUG 0
/** @brief MAIN_DEBUG 宏定义 */
#define MAIN_DEBUG 0
/** @brief FOC_DEBUG 宏定义 */
#define FOC_DEBUG 0
// 版本号定义 - 可根据实际项目进行调整
/** @brief SOFTWARE_VERSION_MAJOR 常量定义 */
constexpr u16 SOFTWARE_VERSION_MAJOR = 26;
/** @brief SOFTWARE_VERSION_MINOR 常量定义 */
constexpr u16 SOFTWARE_VERSION_MINOR = 5;
/** @brief SOFTWARE_VERSION_PATCH 常量定义 */
constexpr u16 SOFTWARE_VERSION_PATCH = 19;
/** @brief SOFTWARE_VERSION_BUILD 常量定义 */
constexpr u16 SOFTWARE_VERSION_BUILD = 2;
/** @brief HARDWARE_VERSION_MAJOR 常量定义 */
constexpr u16 HARDWARE_VERSION_MAJOR = 25;
/** @brief HARDWARE_VERSION_MINOR 常量定义 */
constexpr u16 HARDWARE_VERSION_MINOR = 12;
/** @brief HARDWARE_VERSION_PATCH 常量定义 */
constexpr u16 HARDWARE_VERSION_PATCH = 01;
/** @brief HARDWARE_VERSION_BUILD 常量定义 */
constexpr u16 HARDWARE_VERSION_BUILD = 0;
/** @brief BOOT_VERSION_MAJOR 常量定义 */
constexpr u16 BOOT_VERSION_MAJOR = 26;
/** @brief BOOT_VERSION_MINOR 常量定义 */
constexpr u16 BOOT_VERSION_MINOR = 1;
/** @brief BOOT_VERSION_PATCH 常量定义 */
constexpr u16 BOOT_VERSION_PATCH = 12;
/** @brief BOOT_VERSION_BUILD 常量定义 */
constexpr u16 BOOT_VERSION_BUILD = 0;
// Flash 分区配置
/** @brief BOOTLOADER_SIZE 常量定义 */
constexpr u32 BOOTLOADER_SIZE = 0x6000; // 24KB
/** @brief BOOTLOADER_START_ADDR 常量定义 */
constexpr u32 BOOTLOADER_START_ADDR = 0x08000000; // BOOT 起始地址
/** @brief APPLATEST_START_ADDR 常量定义 */
constexpr u32 APPLATEST_START_ADDR = 0x08012000; // APP 起始地址
/** @brief APPBACK_START_ADDR 常量定义 */
constexpr u32 APPBACK_START_ADDR = 0x08006000; // APPBACK 起始地址
/** @brief APP_MAX_SIZE 常量定义 */
constexpr u32 APP_MAX_SIZE = 0xC000; // 48KB
/** @brief FMC_PAGE_SIZE 常量定义 */
constexpr u32 FMC_PAGE_SIZE = 0x400; // 1KB
/** @brief SLEEP_CONFIG_START 常量定义 */
constexpr u32 SLEEP_CONFIG_START = 0x0801E400; // 睡眠配置起始地址
/** @brief SLEEP_CONFIG_END 常量定义 */
constexpr u32 SLEEP_CONFIG_END = 0x0801E800; // 睡眠配置结束地址
/** @brief FLASH_EMPTY 常量定义 */
constexpr u32 FLASH_EMPTY = 0xFFFFFFFF; // 空数据
/** @brief SLEEP_ENABLE 常量定义 */
constexpr u32 SLEEP_ENABLE = 0x11111111; // 睡眠使能
/** @brief SLEEP_DISABLE 常量定义 */
constexpr u32 SLEEP_DISABLE = 0x00000000; // 睡眠禁止
// 节点 ID 配置 (用于多电机 CAN 总线隔离)
@@ -52,12 +88,19 @@ constexpr u32 SLEEP_DISABLE = 0x00000000; // 睡眠禁止
// - 采用双重备份机制 (主备份 + 备用备份)
// - 使用魔数 (NODE_ID_MAGIC) 验证数据有效性,防止位翻转导致错读
// - 使用写入计数器区分最新数据
/** @brief NODE_ID_PAGE_ADDR 常量定义 */
constexpr u32 NODE_ID_PAGE_ADDR = 0x0801E800; // 节点 ID 存储页 (1KB,独立区域)
/** @brief NODE_ID_PRIMARY_ADDR 常量定义 */
constexpr u32 NODE_ID_PRIMARY_ADDR = 0x0801E800; // 主存储地址
/** @brief NODE_ID_BACKUP_ADDR 常量定义 */
constexpr u32 NODE_ID_BACKUP_ADDR = 0x0801E840; // 备份存储地址 (偏移64字节)
/** @brief NODE_ID_MAGIC 常量定义 */
constexpr u32 NODE_ID_MAGIC = 0x4E4F4445; // 魔数 'NODE' 用于验证数据有效性
/** @brief DEFAULT_NODE_ID 常量定义 */
constexpr u16 DEFAULT_NODE_ID = 1; // 默认节点 ID
/** @brief BROADCAST_NODE_ID 常量定义 */
constexpr u16 BROADCAST_NODE_ID = 0x1FFF; // 广播 ID (所有节点响应)
/** @brief MAX_NODE_ID 常量定义 */
constexpr u16 MAX_NODE_ID = 0x1FFE; // 最大有效节点 ID (0~0x1FFE)
// 节点 ID 存储结构 (存储在Flash中的格式)
@@ -66,174 +109,296 @@ constexpr u16 MAX_NODE_ID = 0x1FFE; // 最大有效节点 ID (0~0x1FFE)
// 地址偏移 0x06: 保留 (u16,填充为0xFFFF)
// 地址偏移 0x08: 写入计数器 (u32,用于区分最新数据)
// 地址偏移 0x0C: CRC32 校验 (u32)
/** @brief NODE_ID_STRUCT_SIZE 常量定义 */
constexpr u8 NODE_ID_STRUCT_SIZE = 0x10; // 结构体大小 16 字节
/** @brief NODE_ID_MAGIC_OFFSET 常量定义 */
constexpr u8 NODE_ID_MAGIC_OFFSET = 0x00; // 魔数偏移
/** @brief NODE_ID_VALUE_OFFSET 常量定义 */
constexpr u8 NODE_ID_VALUE_OFFSET = 0x04; // 节点ID值偏移
/** @brief NODE_ID_COUNTER_OFFSET 常量定义 */
constexpr u8 NODE_ID_COUNTER_OFFSET = 0x08; // 写入计数器偏移
/** @brief NODE_ID_CRC_OFFSET 常量定义 */
constexpr u8 NODE_ID_CRC_OFFSET = 0x0C; // CRC偏移
// BOOT 相关
/** @brief OTA_CONFIG_NUM 常量定义 */
constexpr u32 OTA_CONFIG_NUM = 6;
/** @brief n_APP_LATEST_AVAL_ADDR 常量定义 */
constexpr u32 n_APP_LATEST_AVAL_ADDR = 0x0801E000; // 最新 APP 可用地址
/** @brief n_APP_BACKUP_AVAL_ADDR 常量定义 */
constexpr u32 n_APP_BACKUP_AVAL_ADDR = 0x0801E004; // 备份 APP 可用地址
/** @brief n_APP_LATEST_EN_ADDR 常量定义 */
constexpr u32 n_APP_LATEST_EN_ADDR = 0x0801E008; // 最新 APP 激活
/** @brief n_APP_BACKUP_EN_ADDR 常量定义 */
constexpr u32 n_APP_BACKUP_EN_ADDR = 0x0801E00C; // 备份 APP 激活
/** @brief n_APP_LATEST_CHECK_ADDR 常量定义 */
constexpr u32 n_APP_LATEST_CHECK_ADDR = 0x0801E010; // 最新 APP 校验
/** @brief n_APP_BACKUP_CHECK_ADDR 常量定义 */
constexpr u32 n_APP_BACKUP_CHECK_ADDR = 0x0801E014; // 备份 APP 校验
/** @brief OTA_NOT_AVAL 常量定义 */
constexpr u32 OTA_NOT_AVAL = 0xFFFFFFFF;
/** @brief OTA_AVAL 常量定义 */
constexpr u32 OTA_AVAL = 0x00000000; // 全零表示可用
// 参数配置
/** @brief PP 常量定义 */
constexpr u8 PP = 11;
/** @brief DIR 常量定义 */
constexpr float DIR = 1.0f; // 默认方向:-1.0f 反转,1.0f 正转
/** @brief REDUCTION_RATIO 常量定义 */
constexpr u16 REDUCTION_RATIO = 25;
/** @brief CURRENT_OFFSET 常量定义 */
constexpr float CURRENT_OFFSET = -3.31f / 2.0f; // 当前电流传感器的零点偏移
/** @brief HOLD_PWM_DUTY 常量定义 */
constexpr float HOLD_PWM_DUTY = 0.1f;
/** @brief ANGLESENS_OFFSET 常量定义 */
constexpr u16 ANGLESENS_OFFSET = 0;
/** @brief ANGLESENS_CALIBRATION_ANGLE 常量定义 */
constexpr float ANGLESENS_CALIBRATION_ANGLE = 83.0f;
/** @brief KE_FACTOR 常量定义 */
constexpr float KE_FACTOR = 0.0f;
// 角度/速度 α-β 观测器参数
/** @brief ANGLE_KALMAN_INITIAL_STATE 常量定义 */
constexpr float ANGLE_KALMAN_INITIAL_STATE = 0.0f;
/** @brief ANGLE_KALMAN_INITIAL_COVARIANCE 常量定义 */
constexpr float ANGLE_KALMAN_INITIAL_COVARIANCE = 0.0f;
/** @brief ANGLE_KALMAN_PROCESS_NOISE_Q 常量定义 */
constexpr float ANGLE_KALMAN_PROCESS_NOISE_Q = 0.0f;
/** @brief ANGLE_KALMAN_MEASUREMENT_NOISE_R 常量定义 */
constexpr float ANGLE_KALMAN_MEASUREMENT_NOISE_R = 0.0f;
/** @brief ANGLE_OBSERVER_ALPHA 常量定义 */
constexpr float ANGLE_OBSERVER_ALPHA = 0.75f; // 角度校正增益,越大越跟测量
/** @brief ANGLE_OBSERVER_BETA 常量定义 */
constexpr float ANGLE_OBSERVER_BETA = 0.002f; // 速度校正增益,原0.001微调至0.002
// 旧速度 Kalman 参数保留用于接口兼容;主速度输出现在直接来自 α-β 观测器
/** @brief VELOCITY_KALMAN_INITIAL_STATE 常量定义 */
constexpr float VELOCITY_KALMAN_INITIAL_STATE = 0.0f;
/** @brief VELOCITY_KALMAN_INITIAL_COVARIANCE 常量定义 */
constexpr float VELOCITY_KALMAN_INITIAL_COVARIANCE = 1e-3f;
/** @brief VELOCITY_KALMAN_PROCESS_NOISE_Q 常量定义 */
constexpr float VELOCITY_KALMAN_PROCESS_NOISE_Q =
5e-4f; // 略增大,减少拖尾
/** @brief VELOCITY_KALMAN_MEASUREMENT_NOISE_R 常量定义 */
constexpr float VELOCITY_KALMAN_MEASUREMENT_NOISE_R =
0.05f; // 明显小于旧值,避免压得太死
// 电流卡尔曼滤波器参数
/** @brief CURRENT_KALMAN_INITIAL_STATE 常量定义 */
constexpr float CURRENT_KALMAN_INITIAL_STATE = 0.0f;
/** @brief CURRENT_KALMAN_INITIAL_COVARIANCE 常量定义 */
constexpr float CURRENT_KALMAN_INITIAL_COVARIANCE = 100.0f; // 增大初始协方差
/** @brief CURRENT_KALMAN_PROCESS_NOISE_Q 常量定义 */
constexpr float CURRENT_KALMAN_PROCESS_NOISE_Q = 10.0f; // 降低过程噪声
/** @brief CURRENT_KALMAN_MEASUREMENT_NOISE_R 常量定义 */
constexpr float CURRENT_KALMAN_MEASUREMENT_NOISE_R = 5e-5f; // 增大测量噪声
// PID 配置
/** @brief DEFAULT_current_loop_p 常量定义 */
constexpr float DEFAULT_current_loop_p = 0.1f / 100 * 12; // 电流 P
/** @brief current_loop_Ki 常量定义 */
constexpr float current_loop_Ki = 0.55f; // 电流 P
/** @brief current_loop_Kd 常量定义 */
constexpr float current_loop_Kd = 3e-4f; // 电流 P
/** @brief DEFAULT_vel_loop_p 常量定义 */
constexpr float DEFAULT_vel_loop_p = 0.018f / 100 * 12; // 速度 P
/** @brief vel_loop_Ku 常量定义 */
constexpr float vel_loop_Ku = 3.600000e-03 * 0.7 * 100 / 12;
/** @brief vel_loop_Tu 常量定义 */
constexpr float vel_loop_Tu = 17.0f * 1e-3f;
/** @brief vel_loop_Ki 常量定义 */
constexpr float vel_loop_Ki = 1.2 * vel_loop_Ku / vel_loop_Tu;
/** @brief vel_loop_Kd 常量定义 */
constexpr float vel_loop_Kd = 0.075 * vel_loop_Ku * vel_loop_Tu * 2;
/** @brief DEFAULT_vel_angloop_p 常量定义 */
constexpr float DEFAULT_vel_angloop_p = 0.4f / 100; // 速度 速度 - 角度 P
/** @brief vel_angloop_Ki 常量定义 */
constexpr float vel_angloop_Ki = 5.0f; // 速度 速度 - 角度 I
/** @brief vel_angloop_Kd 常量定义 */
constexpr float vel_angloop_Kd = 5e-05f; // 速度 速度 - 角度 D
/** @brief DEFAULT_angle_angloop_p 常量定义 */
constexpr float DEFAULT_angle_angloop_p =
150.0f / 100 * 12; // 角度 速度 - 角度 P
/** @brief ang_angloop_Ki 常量定义 */
constexpr float ang_angloop_Ki = 0.00f; // 角度 速度 - 角度 I
/** @brief ang_angloop_Kd 常量定义 */
constexpr float ang_angloop_Kd = 8e-04f; // 角度 速度 - 角度 D
/** @brief DEFAULT_angle_loop_p 常量定义 */
constexpr float DEFAULT_angle_loop_p = 60.0f / 100 * 12; // 角度 P
/** @brief DEFAULT_angle_MIT_p 常量定义 */
constexpr float DEFAULT_angle_MIT_p = 100.0f / 100 * 12; // 角度 MIT P
/** @brief angle_MIT_Ki 常量定义 */
constexpr float angle_MIT_Ki = 0.0f;
/** @brief angle_MIT_Kd 常量定义 */
constexpr float angle_MIT_Kd = 8e-04f;
/** @brief DEFAULT_vel_MIT_p 常量定义 */
constexpr float DEFAULT_vel_MIT_p = 5.0f / 100; // 速度 MIT P
/** @brief vel_MIT_Ki 常量定义 */
constexpr float vel_MIT_Ki = 15.0f;
/** @brief vel_MIT_Kd 常量定义 */
constexpr float vel_MIT_Kd = 1e-04f;
/** @brief DEFAULT_current_MIT_p 常量定义 */
constexpr float DEFAULT_current_MIT_p = 0.2f / 100 * 12; // 电流 MIT P
/** @brief current_MIT_Ki 常量定义 */
constexpr float current_MIT_Ki = 0.1f;
/** @brief current_MIT_Kd 常量定义 */
constexpr float current_MIT_Kd = 3e-4f;
// 常量定义
/** @brief SIZE_FLOAT 常量定义 */
constexpr u8 SIZE_FLOAT = sizeof(float);
/** @brief SIZE_U32 常量定义 */
constexpr u8 SIZE_U32 = sizeof(uint32_t);
/** @brief ADC_MAX 常量定义 */
constexpr float ADC_MAX = 65536.0f;
/** @brief PI 常量定义 */
constexpr float PI = 3.14159265358979323846f;
/** @brief INV_PI_3 常量定义 */
constexpr float INV_PI_3 = 3.0f / PI;
/** @brief PI_3 常量定义 */
constexpr float PI_3 = PI / 3.0f;
/** @brief _1_SQRT3 常量定义 */
constexpr float _1_SQRT3 = 0.57735026919f; // 1/sqrt(3)
/** @brief _3PI_2 常量定义 */
constexpr float _3PI_2 = 4.71238898038f;
/** @brief SQRT3 常量定义 */
constexpr float SQRT3 = 1.7320508075688772f;
/** @brief SQRT3DV2 常量定义 */
constexpr float SQRT3DV2 = 0.8660254037844386f; // sqrt(3)/2
/** @brief COS_PI_3 常量定义 */
constexpr float COS_PI_3 = 0.5f;
/** @brief ANGLE_FACTOR 常量定义 */
constexpr float ANGLE_FACTOR = 25.0f / 180.0f * PI;
/** @brief DEG2RAD 常量定义 */
constexpr float DEG2RAD = 1.0f / 180.0f * PI;
/** @brief RAD2DEG 常量定义 */
constexpr float RAD2DEG = 180.0f / PI; // 修正 RAD2DEG 定义,应该是 180/π
/** @brief DEFAULT_VALUE 常量定义 */
constexpr u8 DEFAULT_VALUE = 0;
/** @brief CONFIG_SAVED_NUM 常量定义 */
constexpr u8 CONFIG_SAVED_NUM = 6;
// 三角函数快速计算 LUT
/** @brief LUT_SIZE 常量定义 */
constexpr u16 LUT_SIZE = 1024;
/** @brief LUT_MASK 常量定义 */
constexpr u16 LUT_MASK = (LUT_SIZE - 1);
/** @brief LUT_SCALE 常量定义 */
constexpr u16 LUT_SCALE = (LUT_SIZE / (2.0f * PI));
// CAN 相关
// 注意:以下为 CAN 基础 ID(只保留低 16 位),实际发送/接收时会自动叠加节点 ID
// 到高 16 位 格式:[节点 ID(16 位)][基础 ID(16 位)] 例如:节点 ID=1,发送命令
// ID = (1 << 16) | CANFD_CMD_ID = 0x00010200
/** @brief DEV_CAN0_ID 常量定义 */
constexpr u16 DEV_CAN0_ID = 0x0000;
/** @brief DEV_CAN0_MASK 常量定义 */
constexpr u16 DEV_CAN0_MASK = 0x0000;
/** @brief DEV_CAN_LOOPBACK_ID 常量定义 */
constexpr u16 DEV_CAN_LOOPBACK_ID = 0x0000;
// 反馈基础 ID
/** @brief CANFD_STATUS_ID 常量定义 */
constexpr u16 CANFD_STATUS_ID = 0x0100; // 状态反馈基础 ID
/** @brief CANFD_CONFIG_ID 常量定义 */
constexpr u16 CANFD_CONFIG_ID = 0x0101; // 配置信息基础 ID
/** @brief CANFD_VERSION_ID 常量定义 */
constexpr u16 CANFD_VERSION_ID = 0x00FF; // 版本信息基础 ID
// 命令基础 ID
/** @brief CANFD_CMD_ID 常量定义 */
constexpr u16 CANFD_CMD_ID = 0x0200; // 控制命令基础 ID
/** @brief CANFD_RESET_ID 常量定义 */
constexpr u16 CANFD_RESET_ID = 0x0301; // 重置命令基础 ID
// 节点 ID 管理基础 ID
/** @brief CANFD_SET_NODE_ID 常量定义 */
constexpr u16 CANFD_SET_NODE_ID = 0x0400; // 设置节点 ID 基础 ID
/** @brief CANFD_GET_NODE_ID 常量定义 */
constexpr u16 CANFD_GET_NODE_ID = 0x0401; // 查询节点 ID 基础 ID
// OTA 相关基础 ID 不受到node ID影响
/** @brief CANFD_BOOT_ID 常量定义 */
constexpr u16 CANFD_BOOT_ID = 0x0000; // BOOT 模式基础 ID (进入 BOOT 使用此 ID)
/** @brief CANFD_OTA_REQ_ID 常量定义 */
constexpr u16 CANFD_OTA_REQ_ID = 0x0100; // OTA 请求基础 ID
/** @brief CANFD_OTA_DATA_ID 常量定义 */
constexpr u16 CANFD_OTA_DATA_ID = 0x0101; // OTA 数据基础 ID
/** @brief CANFD_OTA_ACK_ID 常量定义 */
constexpr u16 CANFD_OTA_ACK_ID = 0x0102; // OTA 确认基础 ID
/** @brief CANFD_OTA_WAIT_ID 常量定义 */
constexpr u16 CANFD_OTA_WAIT_ID = 0x0103; // OTA 等待基础 ID
// ADC
/** @brief ADC_FILTER_SIZE 常量定义 */
constexpr u8 ADC_FILTER_SIZE = 6;
/** @brief BLOCK_SIZE 常量定义 */
constexpr u8 BLOCK_SIZE = ADC_FILTER_SIZE * SIZE_FLOAT;
/** @brief ERROR_ADC_VAL 常量定义 */
constexpr float ERROR_ADC_VAL = 255.0f;
/** @brief MAX_TEMP 常量定义 */
constexpr float MAX_TEMP = 150.0f;
/** @brief MIN_TEMP 常量定义 */
constexpr float MIN_TEMP = -40.0f;
/** @brief MAX_CURRENT 常量定义 */
constexpr float MAX_CURRENT = 40.0f;
/** @brief MIN_CURRENT 常量定义 */
constexpr float MIN_CURRENT = -40.0f;
/** @brief MAX_VCC 常量定义 */
constexpr float MAX_VCC = 65.0f;
/** @brief MIN_VCC 常量定义 */
constexpr float MIN_VCC = -0.1f;
// ang_sensor
/** @brief VEL_FILTER_SIZE 常量定义 */
constexpr u16 VEL_FILTER_SIZE = 4;
/** @brief DEFAULT_COMMAND 常量定义 */
constexpr u16 DEFAULT_COMMAND = 0x0000;
/** @brief FAULT_RECEIVE 常量定义 */
constexpr u16 FAULT_RECEIVE = 0xFFFF;
/** @brief ANGLE_WRAP_THRESHOLD 常量定义 */
constexpr float ANGLE_WRAP_THRESHOLD = 300.0f;
/** @brief ANGLE_WRAP_VALUE 常量定义 */
constexpr float ANGLE_WRAP_VALUE = 360.0f;
/** @brief RAD_FACTOR 常量定义 */
constexpr float RAD_FACTOR = 1.0f / ADC_MAX * 2.0f * PI;
/** @brief ANGLESENS_FACTOR 常量定义 */
constexpr float ANGLESENS_FACTOR = 1.0f / ADC_MAX * 360.0f;
// TIMER2-任务调度
/** @brief TIMER2_PRESCALER 常量定义 */
constexpr int TIMER2_PRESCALER = 119; // 120MHz / 120 = 1MHz
/** @brief TIMER2_PERIOD 常量定义 */
constexpr int TIMER2_PERIOD = 49; // 1 / 1MHz * 50 = 50us
/** @brief MOTOR_PERIOD 常量定义 */
constexpr int MOTOR_PERIOD = 1; // 控制每50us执行一次,无分频
/** @brief TIME_SLICE 常量定义 */
constexpr float TIME_SLICE =
(TIMER2_PERIOD + 1) * (TIMER2_PRESCALER + 1) / 120000000.0f; // 周期
/** @brief TIMER2_FREQUENCY 常量定义 */
constexpr float TIMER2_FREQUENCY = 1 / TIME_SLICE; // 频率
/** @brief MOTOR_FREQUENCY 常量定义 */
constexpr float MOTOR_FREQUENCY = 1 / TIME_SLICE / MOTOR_PERIOD; // 频率
// TIMER1-PWM
/** @brief TIMER1_PRESCALER 常量定义 */
constexpr int TIMER1_PRESCALER = 0; // 不分频,计数器时钟为 120MHz
/** @brief TIMER1_PERIOD 常量定义 */
constexpr int TIMER1_PERIOD = 2999; // 120MHz / (0+1) / (2999+1) = 40kHz计数, 中心对齐实际PWM 20kHz
/** @brief TIMER1_DEFAULT_PULSE 常量定义 */
constexpr int TIMER1_DEFAULT_PULSE = 0;
/** @brief TIMER1_CH3_COMPARE_VALUE 常量定义 */
constexpr int TIMER1_CH3_COMPARE_VALUE =
(TIMER1_PERIOD + 1) * 0.41 - 1; // PWM 周期 41% 位置触发ADC采样
// 齿槽转矩补偿
/** @brief COGGING_TABLE_SIZE 常量定义 */
constexpr u16 COGGING_TABLE_SIZE = 128; // 每电周期采样点数
/** @brief COGGING_COMP_SCALE 常量定义 */
constexpr float COGGING_COMP_SCALE = 0.005f; // 补偿换算系数 V/mA,40mA × 0.005 = 0.2V
// 电压检测参数(基于跌幅检测,不依赖固定额定电压)
@@ -244,9 +409,18 @@ constexpr float COGGING_COMP_SCALE = 0.005f; // 补偿换算系数 V/mA,40mA
// 慢速管理层(power_manage,~10ms周期):
// - 执行Flash保存
// - 状态恢复判断(电压恢复到基准电压的90%以上)
/** @brief VBUS_DROP_THRESHOLD 常量定义 */
constexpr float VBUS_DROP_THRESHOLD = 5.0f; // 电压跌幅阈值 (V)
/** @brief VBUS_ABSOLUTE_MIN 常量定义 */
constexpr float VBUS_ABSOLUTE_MIN = 12.0f; // 绝对最低电压 (V)
/** @brief VBUS_DEBOUNCE_COUNT 常量定义 */
constexpr u32 VBUS_DEBOUNCE_COUNT = 5; // 快速检测:防抖计数 (5次×100us = 500us)
/** @brief VBUS_RECOVERY_RATIO 常量定义 */
constexpr float VBUS_RECOVERY_RATIO = 0.9f; // 恢复比例(基准电压的90%)
#endif
#endif
+17
View File
@@ -1,3 +1,9 @@
/**
* @file sys/flash.cpp
* @brief 系统服务与平台支持源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#include "flash.h"
#include "FOC.h"
#include "ang_sensor.h"
@@ -12,15 +18,19 @@
// EEP 调试宏定义
#if EEP_DEBUG
/** @brief EEP_DEBUG_PRINT 宏定义 */
#define EEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)
#else
/** @brief EEP_DEBUG_PRINT 宏定义 */
#define EEP_DEBUG_PRINT(fmt, ...) ((void)0)
#endif
// OTA 调试宏定义
#if OTA_DEBUG
/** @brief OTA_DEBUG_PRINT 宏定义 */
#define OTA_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)
#else
/** @brief OTA_DEBUG_PRINT 宏定义 */
#define OTA_DEBUG_PRINT(fmt, ...) ((void)0)
#endif
@@ -29,6 +39,12 @@ extern angle_sensor KTH7823;
extern CAN_transmiter CAN0_transmiter;
extern FOC_Controller FOC; // FOC 控制
/**
* @brief 写入 write_ADDRESS 相关数据
* @param[in] address 参数
* @param[in] data 参数
* @return fmc_state_enum 返回值
*/
fmc_state_enum write_ADDRESS(u32 address, u32 data) {
fmc_unlock();
fmc_flag_clear(FMC_FLAG_PGERR | FMC_FLAG_PGAERR | FMC_FLAG_WPERR);
@@ -665,6 +681,7 @@ FlashEepromStatus FlashEEPROM::writeNodeId(u16 node_id) {
}
// 写入并校验,最多3次
/** @brief MAX_WRITE_RETRY 宏定义 */
#define MAX_WRITE_RETRY 3
for (u8 retry = 0; retry < MAX_WRITE_RETRY; retry++) {
// 写入主存储区
+92
View File
@@ -1,3 +1,9 @@
/**
* @file sys/flash.h
* @brief 系统服务与平台支持源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#ifndef __FLASH_H
#define __FLASH_H
@@ -5,9 +11,13 @@
#include <cstdint>
// 修改后 - 强制4字节对齐
/** @brief ALIGN_4BYTE 宏定义 */
#define ALIGN_4BYTE(addr) ((addr) & 0xFFFFFFFC) // 4字节对齐
// EEPROM操作状态
/**
* @brief 匿名枚举 枚举定义
*/
typedef enum {
FLASH_EEPROM_OK = 0, // 操作成功
FLASH_EEPROM_WRITE_ERROR, // 写入错误
@@ -20,6 +30,9 @@ typedef enum {
} FlashEepromStatus;
// Flash EEPROM类
/**
* @brief FlashEEPROM 类或结构体
*/
class FlashEEPROM {
public:
// EEPROM emulation constants
@@ -49,39 +62,118 @@ class FlashEEPROM {
FlashEEPROM();
// 初始化Flash EEPROM模拟
/**
* @brief 初始化对象或模块
* @return u8 返回值
*/
u8 init();
// 从Flash EEPROM中读取数据
/**
* @brief 读取数据
* @param[in] virtualAddr 参数
* @param[in] data 参数
* @return FlashEepromStatus 返回值
*/
FlashEepromStatus read(u8 virtualAddr, u16 *data) const;
// 向Flash EEPROM写入数据
/**
* @brief 写入数据
* @param[in] virtualAddr 参数
* @param[in] data 参数
* @return FlashEepromStatus 返回值
*/
FlashEepromStatus write(u8 virtualAddr, u16 data);
// Float数据读相关函数
/**
* @brief 从 Flash EEPROM 读取浮点数据
* @param[in] virtualAddr 参数
* @param[in] data 参数
* @return FlashEepromStatus 返回值
*/
FlashEepromStatus readFloat(u8 virtualAddr, float *data) const;
// Float数据存储相关函数
/**
* @brief 向 Flash EEPROM 写入浮点数据
* @param[in] virtualAddr 参数
* @param[in] data 参数
* @return FlashEepromStatus 返回值
*/
FlashEepromStatus writeFloat(u8 virtualAddr, float data);
// 格式化Flash EEPROM页面
/**
* @brief 格式化存储区域
* @return FlashEepromStatus 返回值
*/
FlashEepromStatus format();
/**
* @brief 保存系统配置参数
* @param[in] saved 参数
* @return FlashEepromStatus 返回值
*/
FlashEepromStatus save_system_config(bool saved);
/**
* @brief 读取已保存的系统配置参数
* @return u8 返回值
*/
u8 read_saved_system_config(void);
/**
* @brief 读取保存的角度值
* @return float 返回值
*/
float read_angle();
// 节点 ID 独立读写函数(使用魔数+双重备份+计数器机制)
// 从 Flash 读取节点 ID(带魔数验证和双重备份回退)
/**
* @brief 读取节点 ID 配置
* @param[in] node_id 参数
* @return FlashEepromStatus 返回值
*/
FlashEepromStatus readNodeId(u16 *node_id) const;
// 保存节点 ID 到 Flash(写入主备份和备用备份)
/**
* @brief 写入节点 ID 配置
* @param[in] node_id 参数
* @return FlashEepromStatus 返回值
*/
FlashEepromStatus writeNodeId(u16 node_id);
// 擦除节点 ID 存储区(恢复默认值)
/**
* @brief 擦除节点 ID 配置
* @return FlashEepromStatus 返回值
*/
FlashEepromStatus eraseNodeId();
private:
/**
* @brief 写入 writeCRC 相关数据
* @param[in] CRC_NUM 参数
* @param[in] saved 参数
* @return FlashEepromStatus 返回值
*/
FlashEepromStatus writeCRC(u32 CRC_NUM, bool saved);
};
/**
* @brief flash_eeprom_example_main 函数
* @return void
*/
void flash_eeprom_example_main(void);
u8 OTA_SET(u32 addr, u32 data);
/**
* @brief move_app_data 函数
* @return fmc_state_enum 返回值
*/
fmc_state_enum move_app_data(void);
/**
* @brief 写入 write_ADDRESS 相关数据
* @param[in] address 参数
* @param[in] data 参数
* @return fmc_state_enum 返回值
*/
fmc_state_enum write_ADDRESS(u32 address, u32 data);
#endif /* __FLASH_H */
+8
View File
@@ -1,3 +1,9 @@
/**
* @file sys/health.cpp
* @brief 系统服务与平台支持源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#include "health.h"
#include "config.h"
#include "Can.h"
@@ -12,8 +18,10 @@ extern FOC_Controller FOC;
extern FlashEEPROM flashEEP;
ThermalController thermalController; // 热量控制器初始化
/** @brief max 宏定义 */
#define max(a, b, c) \
((a) > (b) ? ((a) > (c) ? (a) : (c)) : ((b) > (c) ? (b) : (c)))
/** @brief PROTECT_TIME 常量定义 */
constexpr u16 PROTECT_TIME = 6000; // 过热保护时间,单位*10ms
// 电压管理状态机
+33
View File
@@ -1,22 +1,39 @@
/**
* @file sys/health.h
* @brief 系统服务与平台支持源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#ifndef _HEALTH_H
#define _HEALTH_H
#include <cstdint>
typedef int32_t q16_16_t; // Q16.16格式
// 定点数运算宏
/** @brief Q16_16_ONE 宏定义 */
#define Q16_16_ONE 65536 // 1.0 in Q16.16
/** @brief FLOAT_TO_Q16_16 宏定义 */
#define FLOAT_TO_Q16_16(x) ((q16_16_t)((x) * Q16_16_ONE))
/** @brief Q16_16_TO_FLOAT 宏定义 */
#define Q16_16_TO_FLOAT(x) ((float)(x) / Q16_16_ONE)
/** @brief Q16_16_MUL 宏定义 */
#define Q16_16_MUL(a, b) ((q16_16_t)(((int64_t)(a) * (b)) >> 16))
/** @brief Q16_16_SQUARE 宏定义 */
#define Q16_16_SQUARE(x) Q16_16_MUL((x), (x))
// 电压监测状态机状态
/**
* @brief VoltageState 枚举定义
*/
enum class VoltageState : uint8_t {
NORMAL, // 正常运行
VOLTAGE_DROP, // 电压跌落检测中(防抖等待)
SHUTDOWN_SAVE // 已关机,等待保存
};
/**
* @brief ThermalController 类或结构体
*/
class ThermalController {
private:
u8 temperature;
@@ -34,14 +51,30 @@ class ThermalController {
ThermalController()
: thermalRate(FLOAT_TO_Q16_16(0.995f)),
recoveryRate(FLOAT_TO_Q16_16(0.33f)) {}
/**
* @brief 更新对象内部状态或采样数据
* @return u32 返回值
*/
u32 update();
/**
* @brief 复位对象内部状态
* @return void
*/
void reset() {
thermal_value = 0;
remainingTime10Ms = 0;
}
};
/**
* @brief angsens_MG_check 函数
* @return void
*/
void angsens_MG_check(void);
/**
* @brief power_manage 函数
* @return void
*/
void power_manage(void);
#endif
+66
View File
@@ -1,3 +1,9 @@
/**
* @file sys/initial.cpp
* @brief 系统服务与平台支持源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#include "initial.h"
#include "Can.h"
#include "config.h"
@@ -13,15 +19,19 @@
// OTA 调试宏定义
#if OTA_DEBUG
/** @brief OTA_DEBUG_PRINT 宏定义 */
#define OTA_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)
#else
/** @brief OTA_DEBUG_PRINT 宏定义 */
#define OTA_DEBUG_PRINT(fmt, ...) ((void)0)
#endif
// EEP 调试宏定义
#if EEP_DEBUG
/** @brief EEP_DEBUG_PRINT 宏定义 */
#define EEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)
#else
/** @brief EEP_DEBUG_PRINT 宏定义 */
#define EEP_DEBUG_PRINT(fmt, ...) ((void)0)
#endif
@@ -38,18 +48,38 @@ VersionManager::VersionManager() {
BOOT_VERSION_BUILD);
}
/**
* @brief 获取 getSoftwareVersion 对应的数据或状态
* @return VersionManager::VersionInfo 返回值
*/
VersionManager::VersionInfo VersionManager::getSoftwareVersion() const {
return softwareVersion;
}
/**
* @brief 获取 getHardwareVersion 对应的数据或状态
* @return VersionManager::VersionInfo 返回值
*/
VersionManager::VersionInfo VersionManager::getHardwareVersion() const {
return hardwareVersion;
}
/**
* @brief 获取 getBootVersion 对应的数据或状态
* @return VersionManager::VersionInfo 返回值
*/
VersionManager::VersionInfo VersionManager::getBootVersion() const {
return bootVersion;
}
/**
* @brief 设置 setSoftwareVersion 对应的参数或状态
* @param[in] major 参数
* @param[in] minor 参数
* @param[in] patch 参数
* @param[in] build 参数
* @return void
*/
void VersionManager::setSoftwareVersion(u16 major, u16 minor, u16 patch,
u16 build) {
softwareVersion.major = major;
@@ -58,6 +88,14 @@ void VersionManager::setSoftwareVersion(u16 major, u16 minor, u16 patch,
softwareVersion.build = build;
}
/**
* @brief 设置 setHardwareVersion 对应的参数或状态
* @param[in] major 参数
* @param[in] minor 参数
* @param[in] patch 参数
* @param[in] build 参数
* @return void
*/
void VersionManager::setHardwareVersion(u16 major, u16 minor, u16 patch,
u16 build) {
hardwareVersion.major = major;
@@ -66,6 +104,14 @@ void VersionManager::setHardwareVersion(u16 major, u16 minor, u16 patch,
hardwareVersion.build = build;
}
/**
* @brief 设置 setBootVersion 对应的参数或状态
* @param[in] major 参数
* @param[in] minor 参数
* @param[in] patch 参数
* @param[in] build 参数
* @return void
*/
void VersionManager::setBootVersion(u16 major, u16 minor, u16 patch,
u16 build) {
bootVersion.major = major;
@@ -86,6 +132,10 @@ char *VersionManager::versionToString(const VersionInfo &version, char *buffer,
return buffer;
}
/**
* @brief sendVersionInfoViaCan 函数
* @return void
*/
void VersionManager::sendVersionInfoViaCan() const {
// 准备发送版本信息 (ID: CANFD_VERSION_ID)
// 只使用必要的字节数(24 字节)来传输三个版本的信息(每个版本 6 字节)
@@ -128,6 +178,10 @@ void VersionManager::sendVersionInfoViaCan() const {
CAN0_transmiter.build_can_id(CANFD_VERSION_ID), 24, versionData);
}
/**
* @brief printVersions 函数
* @return void
*/
void VersionManager::printVersions() const {
char versionStr[32];
@@ -143,6 +197,10 @@ void VersionManager::printVersions() const {
}
/* retarget the C library printf function to the USART */
/**
* @brief 初始化 USART0 调试串口
* @return u8 返回值
*/
u8 USART0_init() {
gd_eval_com_init(EVAL_COM0);
return 1;
@@ -170,6 +228,10 @@ int fputc(int ch, FILE *f) throw() {
return ch;
}
/**
* @brief 初始化未使用引脚状态
* @return void
*/
void unused_pin_init() {
rcu_periph_clock_enable(RCU_GPIOA); // 使能 GPIOA 时钟
rcu_periph_clock_enable(RCU_GPIOB); // 使能 GPIOB 时钟
@@ -227,6 +289,10 @@ u16 get_reset_cause(void) {
return cause;
}
/**
* @brief 初始化 OTA 与 A/B 分区状态
* @return void
*/
void OTA_initial(void) {
#if OTA_DEBUG
u32 temp_val[6];
+87
View File
@@ -1,3 +1,9 @@
/**
* @file sys/initial.h
* @brief 系统服务与平台支持源文件
* @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。
*/
#ifndef _INITIAL_H
#define _INITIAL_H
@@ -11,6 +17,9 @@ extern "C" {
#include <cstdio>
// 任务标志定义
/**
* @brief 匿名枚举 枚举定义
*/
typedef enum {
TASK_MOTOR_CONTROL = 0,
TASK_CURRENT_UPDATE,
@@ -25,14 +34,45 @@ typedef enum {
TASK_COUNT
} SystemTask;
/**
* @brief rcu_config 函数
* @return void
*/
void rcu_config(void);
static volatile uint32_t timer_delay_count = 0; // volatile 很重要!
/**
* @brief fputc 函数
* @param[in] ch 参数
* @param[in] f 参数
* @return int 返回值
*/
int fputc(int ch, FILE *f); // 声明fputc函数以重载标准库实现
/**
* @brief 初始化 USART0 调试串口
* @return u8 返回值
*/
u8 USART0_init(void);
/**
* @brief 初始化独立看门狗
* @param[in] time 参数
* @return u8 返回值
*/
u8 watchdog_init(u32 time);
/**
* @brief 获取复位原因
* @return u16 返回值
*/
u16 get_reset_cause(void);
/**
* @brief 初始化未使用引脚状态
* @return void
*/
void unused_pin_init();
/**
* @brief 初始化 OTA 与 A/B 分区状态
* @return void
*/
void OTA_initial(void);
// 任务管理结构
@@ -41,6 +81,9 @@ typedef struct {
} TaskScheduler;
// 版本管理类
/**
* @brief VersionManager 类或结构体
*/
class VersionManager {
public:
// 版本信息结构体
@@ -55,21 +98,57 @@ class VersionManager {
VersionManager();
// 获取软件版本
/**
* @brief 获取 getSoftwareVersion 对应的数据或状态
* @return VersionInfo 返回值
*/
VersionInfo getSoftwareVersion() const;
// 获取硬件版本
/**
* @brief 获取 getHardwareVersion 对应的数据或状态
* @return VersionInfo 返回值
*/
VersionInfo getHardwareVersion() const;
// 获取BOOT版本
/**
* @brief 获取 getBootVersion 对应的数据或状态
* @return VersionInfo 返回值
*/
VersionInfo getBootVersion() const;
// 设置软件版本
/**
* @brief 设置 setSoftwareVersion 对应的参数或状态
* @param[in] major 参数
* @param[in] minor 参数
* @param[in] patch 参数
* @param[in] build 参数
* @return void
*/
void setSoftwareVersion(u16 major, u16 minor, u16 patch, u16 build);
// 设置硬件版本
/**
* @brief 设置 setHardwareVersion 对应的参数或状态
* @param[in] major 参数
* @param[in] minor 参数
* @param[in] patch 参数
* @param[in] build 参数
* @return void
*/
void setHardwareVersion(u16 major, u16 minor, u16 patch, u16 build);
// 设置BOOT版本
/**
* @brief 设置 setBootVersion 对应的参数或状态
* @param[in] major 参数
* @param[in] minor 参数
* @param[in] patch 参数
* @param[in] build 参数
* @return void
*/
void setBootVersion(u16 major, u16 minor, u16 patch, u16 build);
// 将版本信息转换为字符串
@@ -77,9 +156,17 @@ class VersionManager {
size_t bufSize) const;
// 打印所有版本信息
/**
* @brief printVersions 函数
* @return void
*/
void printVersions() const;
// 通过CAN发送版本信息
/**
* @brief sendVersionInfoViaCan 函数
* @return void
*/
void sendVersionInfoViaCan() const;
private:
+6
View File
@@ -43,8 +43,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// SLEEP 调试宏定义
#if SLEEP_DEBUG
/** @brief SLEEP_DEBUG_PRINT 宏定义 */
#define SLEEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)
#else
/** @brief SLEEP_DEBUG_PRINT 宏定义 */
#define SLEEP_DEBUG_PRINT(fmt, ...) ((void)0)
#endif
@@ -208,6 +210,10 @@ void busy_task_exit(void) {
}
}
/**
* @brief 获取 CPU 使用率
* @return uint8_t 返回值
*/
uint8_t get_cpu_usage(void) { return cpu_usage; }
/*!
+51
View File
@@ -41,28 +41,79 @@ extern "C" {
#include <cstdint>
/* configure systick */
/**
* @brief 配置 SysTick 定时器
* @return void
*/
void systick_config(void);
/* get system tick time in milliseconds */
/**
* @brief 获取系统毫秒计数
* @return uint32_t 返回值
*/
uint32_t get_systick_ms(void);
/* delay a time in milliseconds */
/**
* @brief 毫秒级阻塞延时
* @param[in] count 参数
* @return void
*/
void delay_1ms(uint32_t count);
/* delay a time in seconds */
/**
* @brief 秒级阻塞延时
* @param[in] count 参数
* @return void
*/
void delay_1s(uint32_t count);
/* delay decrement */
/**
* @brief 递减延时计数器
* @return void
*/
void delay_decrement(void);
/* 空闲任务计数(兼容接口,DWT 版本无需操作) */
/**
* @brief 记录空闲任务计数
* @return void
*/
void idle_task_count(void);
/* do_task 入口调用,记录忙碌起始周期 */
/**
* @brief 记录忙碌任务开始周期
* @return void
*/
void busy_task_enter(void);
/* do_task 出口调用,累加忙碌周期 */
/**
* @brief 记录忙碌任务结束并累加周期
* @return void
*/
void busy_task_exit(void);
/* 获取CPU使用率 */
/**
* @brief 获取 CPU 使用率
* @return uint8_t 返回值
*/
uint8_t get_cpu_usage(void);
/* 系统软复位 */
/**
* @brief 执行系统软复位
* @return void
*/
void system_soft_reset(void);
/* 准备进入低功耗模式 */
/**
* @brief 准备进入应用低功耗模式
* @param[in] save_data 参数
* @return void
*/
void app_prepare_deep_sleep(bool save_data);
/* 中断唤醒 */
/**
* @brief EXTI5_9 中断处理函数
* @return void
*/
void EXTI5_9_IRQHandler(void);
#ifdef __cplusplus
@@ -0,0 +1,30 @@
file,sha256_16,total_lines,nonblank_code_lines,comment_lines_approx
Algorithm/FOC.cpp,bf24c35a8386ebef,842,507,241
Algorithm/FOC.h,90d7f21da9e4d751,268,121,121
Algorithm/Filter.cpp,90d298a82e3bc14d,283,97,94
Algorithm/Filter.h,80cadefec99079e3,304,115,105
Algorithm/pid.cpp,52d182f02a4359b7,103,46,44
Algorithm/pid.h,e6333f5571fdfefb,64,25,33
Algorithm/thermal.cpp,c7fc8d63d064ab62,5,0,5
Algorithm/thermal.h,5499445022c02c37,13,3,5
device/ADC.cpp,6e847c602dd61aed,330,193,96
device/Can.cpp,b4484d3cfdf023d2,1513,938,357
device/Can.h,1f807194e6745e2a,364,125,206
device/Timer.cpp,3d006216c96dd4f6,319,173,87
device/Timer.h,dfc4a4e688be439b,62,17,38
device/adc.h,a541fdcbd7f8dae4,97,38,49
device/ang_sensor.cpp,b2d8799eb1fb4851,310,175,96
device/ang_sensor.h,0d0da02eb2f85172,102,36,59
device/motor.cpp,69a1c4b5ef126a03,58,28,24
device/motor.h,74d08896b2e68e2d,39,10,25
main.cpp,24cc061dbaad56fc,205,145,36
main.h,57a31fca9ed82289,52,6,13
sys/config.h,7dfdd00046239393,434,179,220
sys/flash.cpp,705d6caf8fc8309c,1030,665,257
sys/flash.h,8cbfcfe7014cd773,179,57,107
sys/health.cpp,eeb413b91f26ff47,149,98,37
sys/health.h,395415726314f996,80,37,34
sys/initial.cpp,4dffaa8ab1614908,351,212,95
sys/initial.h,3631974693d368cb,182,61,100
sys/systick.cpp,1b82db28eb3681d6,298,143,66
sys/systick.h,95cbb9678989e9a4,123,22,67
1 file sha256_16 total_lines nonblank_code_lines comment_lines_approx
2 Algorithm/FOC.cpp bf24c35a8386ebef 842 507 241
3 Algorithm/FOC.h 90d7f21da9e4d751 268 121 121
4 Algorithm/Filter.cpp 90d298a82e3bc14d 283 97 94
5 Algorithm/Filter.h 80cadefec99079e3 304 115 105
6 Algorithm/pid.cpp 52d182f02a4359b7 103 46 44
7 Algorithm/pid.h e6333f5571fdfefb 64 25 33
8 Algorithm/thermal.cpp c7fc8d63d064ab62 5 0 5
9 Algorithm/thermal.h 5499445022c02c37 13 3 5
10 device/ADC.cpp 6e847c602dd61aed 330 193 96
11 device/Can.cpp b4484d3cfdf023d2 1513 938 357
12 device/Can.h 1f807194e6745e2a 364 125 206
13 device/Timer.cpp 3d006216c96dd4f6 319 173 87
14 device/Timer.h dfc4a4e688be439b 62 17 38
15 device/adc.h a541fdcbd7f8dae4 97 38 49
16 device/ang_sensor.cpp b2d8799eb1fb4851 310 175 96
17 device/ang_sensor.h 0d0da02eb2f85172 102 36 59
18 device/motor.cpp 69a1c4b5ef126a03 58 28 24
19 device/motor.h 74d08896b2e68e2d 39 10 25
20 main.cpp 24cc061dbaad56fc 205 145 36
21 main.h 57a31fca9ed82289 52 6 13
22 sys/config.h 7dfdd00046239393 434 179 220
23 sys/flash.cpp 705d6caf8fc8309c 1030 665 257
24 sys/flash.h 8cbfcfe7014cd773 179 57 107
25 sys/health.cpp eeb413b91f26ff47 149 98 37
26 sys/health.h 395415726314f996 80 37 34
27 sys/initial.cpp 4dffaa8ab1614908 351 212 95
28 sys/initial.h 3631974693d368cb 182 61 100
29 sys/systick.cpp 1b82db28eb3681d6 298 143 66
30 sys/systick.h 95cbb9678989e9a4 123 22 67
@@ -0,0 +1,554 @@
severity,rule_id,rule_level,standard_ref,file,line,description,evidence,disposition,recommendation
warning,AUTO-CTRL-002,Advisory,MISRA C:2012 Rule 15.5 advisory / structured control flow,device/Can.cpp,1124,continue 需避免或说明偏离,continue;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-CTRL-002,Advisory,MISRA C:2012 Rule 15.5 advisory / structured control flow,device/Can.cpp,1194,continue 需避免或说明偏离,continue;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-CTRL-002,Advisory,MISRA C:2012 Rule 15.5 advisory / structured control flow,device/Can.cpp,1199,continue 需避免或说明偏离,continue;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-CTRL-002,Advisory,MISRA C:2012 Rule 15.5 advisory / structured control flow,main.cpp,80,continue 需避免或说明偏离,continue;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-CTRL-002,Advisory,MISRA C:2012 Rule 15.5 advisory / structured control flow,sys/flash.cpp,693,continue 需避免或说明偏离,continue;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-CTRL-002,Advisory,MISRA C:2012 Rule 15.5 advisory / structured control flow,sys/systick.cpp,264,continue 需避免或说明偏离,continue;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,100,printf/格式化输出需确认调试隔离和实时性影响,"printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,161,printf/格式化输出需确认调试隔离和实时性影响,"printf("""",",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,195,printf/格式化输出需确认调试隔离和实时性影响,"printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,198,printf/格式化输出需确认调试隔离和实时性影响,"printf("""", angle_deg, cogging_table[i]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,203,printf/格式化输出需确认调试隔离和实时性影响,"printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,206,printf/格式化输出需确认调试隔离和实时性影响,"printf("""", angle_deg, cogging_table_rev[i]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,211,printf/格式化输出需确认调试隔离和实时性影响,"printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,212,printf/格式化输出需确认调试隔离和实时性影响,"printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,214,printf/格式化输出需确认调试隔离和实时性影响,"if (i % 8 == 0) printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,215,printf/格式化输出需确认调试隔离和实时性影响,"printf("""", cogging_table[i]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,216,printf/格式化输出需确认调试隔离和实时性影响,"if (i < COGGING_TABLE_SIZE - 1) printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,217,printf/格式化输出需确认调试隔离和实时性影响,"if (i % 8 == 7 || i == COGGING_TABLE_SIZE - 1) printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,220,printf/格式化输出需确认调试隔离和实时性影响,"printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,223,printf/格式化输出需确认调试隔离和实时性影响,"printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,224,printf/格式化输出需确认调试隔离和实时性影响,"printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,226,printf/格式化输出需确认调试隔离和实时性影响,"if (i % 8 == 0) printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,227,printf/格式化输出需确认调试隔离和实时性影响,"printf("""", cogging_table_rev[i]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,228,printf/格式化输出需确认调试隔离和实时性影响,"if (i < COGGING_TABLE_SIZE - 1) printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,229,printf/格式化输出需确认调试隔离和实时性影响,"if (i % 8 == 7 || i == COGGING_TABLE_SIZE - 1) printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,232,printf/格式化输出需确认调试隔离和实时性影响,"printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,Algorithm/FOC.cpp,234,printf/格式化输出需确认调试隔离和实时性影响,"printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,device/Can.cpp,30,printf/格式化输出需确认调试隔离和实时性影响,"#define CAN_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,device/ang_sensor.cpp,22,printf/格式化输出需确认调试隔离和实时性影响,"#define ANG_SENS_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,device/motor.cpp,38,printf/格式化输出需确认调试隔离和实时性影响,"printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,main.cpp,22,printf/格式化输出需确认调试隔离和实时性影响,"#define MAIN_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,sys/flash.cpp,22,printf/格式化输出需确认调试隔离和实时性影响,"#define EEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,sys/flash.cpp,31,printf/格式化输出需确认调试隔离和实时性影响,"#define OTA_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,sys/initial.cpp,23,printf/格式化输出需确认调试隔离和实时性影响,"#define OTA_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,sys/initial.cpp,32,printf/格式化输出需确认调试隔离和实时性影响,"#define EEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,sys/initial.cpp,129,printf/格式化输出需确认调试隔离和实时性影响,"snprintf(buffer, bufSize, """", version.major, version.minor,",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-FUNC-002,Advisory,MISRA Dir 4.12 / project safety rule,sys/systick.cpp,47,printf/格式化输出需确认调试隔离和实时性影响,"#define SLEEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
warning,AUTO-MET-001,Advisory,Project metric threshold CC <= 15,Algorithm/FOC.cpp,75,圈复杂度 33 超过建议阈值 15,FOC_Controller::calibrate_cogging_tick,open_review,建议人工评审分支完整性;后续允许时再考虑拆分或增加单元测试覆盖。
warning,AUTO-MET-001,Advisory,Project metric threshold CC <= 15,device/Can.cpp,1076,圈复杂度 27 超过建议阈值 15,CAN_transmiter::communication_check,open_review,建议人工评审分支完整性;后续允许时再考虑拆分或增加单元测试覆盖。
warning,AUTO-MET-001,Advisory,Project metric threshold CC <= 15,main.cpp,120,圈复杂度 17 超过建议阈值 15,do_task,open_review,建议人工评审分支完整性;后续允许时再考虑拆分或增加单元测试覆盖。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,29,数组下标访问需审查边界保护,extern u16 adc_value[3];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,56,数组下标访问需审查边界保护,float comp = table[idx0] * (1.0f - frac) + table[idx1] * frac;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,66,数组下标访问需审查边界保护,float FOC_Controller::cog_calib_run_data[6][COGGING_TABLE_SIZE] = {};,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,67,数组下标访问需审查边界保护,float FOC_Controller::cog_calib_accum[COGGING_TABLE_SIZE] = {};,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,68,数组下标访问需审查边界保护,u32 FOC_Controller::cog_calib_count[COGGING_TABLE_SIZE] = {};,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,134,数组下标访问需审查边界保护,cog_calib_accum[idx] += iq;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,135,数组下标访问需审查边界保护,cog_calib_count[idx]++;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,152,数组下标访问需审查边界保护,cog_calib_run_data[cog_calib_run][i] =,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,153,数组下标访问需审查边界保护,(cog_calib_count[i] > 0) ? cog_calib_accum[i] / (float)cog_calib_count[i] : 0.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,154,数组下标访问需审查边界保护,dc += cog_calib_run_data[cog_calib_run][i];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,158,数组下标访问需审查边界保护,cog_calib_run_data[cog_calib_run][i] -= dc;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,180,数组下标访问需审查边界保护,cogging_table[i] = (cog_calib_run_data[0][i] +,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,181,数组下标访问需审查边界保护,cog_calib_run_data[1][i] +,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,182,数组下标访问需审查边界保护,cog_calib_run_data[2][i]) / 3.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,186,数组下标访问需审查边界保护,cogging_table_rev[i] = (cog_calib_run_data[3][i] +,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,187,数组下标访问需审查边界保护,cog_calib_run_data[4][i] +,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,188,数组下标访问需审查边界保护,cog_calib_run_data[5][i]) / 3.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,198,数组下标访问需审查边界保护,"printf("""", angle_deg, cogging_table[i]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,206,数组下标访问需审查边界保护,"printf("""", angle_deg, cogging_table_rev[i]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,215,数组下标访问需审查边界保护,"printf("""", cogging_table[i]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,227,数组下标访问需审查边界保护,"printf("""", cogging_table_rev[i]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,326,数组下标访问需审查边界保护,static const float COGGING_TABLE_FWD[COGGING_TABLE_SIZE] = {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,344,数组下标访问需审查边界保护,static const float COGGING_TABLE_REV[COGGING_TABLE_SIZE] = {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,409,数组下标访问需审查边界保护,"static const u8 sector_lut[8] = {0, 2, 6, 1, 4, 3, 5, 0};",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,410,数组下标访问需审查边界保护,u8 sector = sector_lut[sector_code];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,431,数组下标访问需审查边界保护,static const float svpwm_coeff[6][4] = {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,440,数组下标访问需审查边界保护,float T1 = (svpwm_coeff[sector-1][0] * Ualpha + svpwm_coeff[sector-1][1] * Ubeta) * inv_Udc;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,441,数组下标访问需审查边界保护,float T2 = (svpwm_coeff[sector-1][2] * Ualpha + svpwm_coeff[sector-1][3] * Ubeta) * inv_Udc;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.cpp,605,数组下标访问需审查边界保护,float current_vbus = adc_value[2] * (3.3f / 4096.0f) * 11.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.h,156,数组下标访问需审查边界保护,float cogging_table[COGGING_TABLE_SIZE] = {0};,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.h,157,数组下标访问需审查边界保护,float cogging_table_rev[COGGING_TABLE_SIZE] = {0};,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.h,191,数组下标访问需审查边界保护,static float cog_calib_run_data[6][COGGING_TABLE_SIZE];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.h,192,数组下标访问需审查边界保护,static float cog_calib_accum[COGGING_TABLE_SIZE];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/FOC.h,193,数组下标访问需审查边界保护,static u32 cog_calib_count[COGGING_TABLE_SIZE];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/Filter.cpp,65,数组下标访问需审查边界保护,float sorted[size];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,Algorithm/Filter.cpp,71,数组下标访问需审查边界保护,return sorted[size / 2];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,31,数组下标访问需审查边界保护,u16 adc_value[3] = {0};,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,32,数组下标访问需审查边界保护,static volatile u16 adc_current_value[3] = {0};,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,151,数组下标访问需审查边界保护,mcu_temp_samples[i] =,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,152,数组下标访问需审查边界保护,(1.43f - adc_value[0] * ADC_SCALE) * TEMP_FACTOR + 35.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,154,数组下标访问需审查边界保护,currU_samples[i] = current_init;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,155,数组下标访问需审查边界保护,currV_samples[i] = current_init;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,156,数组下标访问需审查边界保护,currW_samples[i] = current_init;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,158,数组下标访问需审查边界保护,vbus_samples[i] = adc_value[2] * ADC_SCALE * VCC_FACTOR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,160,数组下标访问需审查边界保护,float R_now = (float)adc_value[1] / (4096 - (float)adc_value[1]) * 4700;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,161,数组下标访问需审查边界保护,drv_temp_samples[i] =,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,199,数组下标访问需审查边界保护,tempora_sample = currU_samples[idx];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,203,数组下标访问需审查边界保护,tempora_sample = currV_samples[idx];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,207,数组下标访问需审查边界保护,tempora_sample = currW_samples[idx];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,240,数组下标访问需审查边界保护,mcu_temp_samples[mcu_temp_head] =,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,241,数组下标访问需审查边界保护,(1.43f - adc_value[0] * ADC_SCALE) * TEMP_FACTOR + 35.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,259,数组下标访问需审查边界保护,float R_now = (float)adc_value[1] / (4096 - (float)adc_value[1]) * 4700;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,260,数组下标访问需审查边界保护,drv_temp_samples[drv_temp_head] =,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,283,数组下标访问需审查边界保护,currU_samples[idx] = current_adc_to_ma(adc_current_value[0]);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,284,数组下标访问需审查边界保护,currV_samples[idx] = current_adc_to_ma(adc_current_value[1]);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,285,数组下标访问需审查边界保护,currW_samples[idx] = current_adc_to_ma(adc_current_value[2]);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,299,数组下标访问需审查边界保护,vbus_samples[temp_vbus_head] = adc_value[2] * ADC_SCALE * VCC_FACTOR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,306,数组下标访问需审查边界保护,if (vbus_samples[mid] > MAX_VCC || vbus_samples[mid] < MIN_VCC) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,321,数组下标访问需审查边界保护,"adc_current_value[0] = adc_inserted_data_read(ADC0, ADC_INSERTED_CHANNEL_1);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,322,数组下标访问需审查边界保护,"adc_current_value[1] = adc_inserted_data_read(ADC0, ADC_INSERTED_CHANNEL_2);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ADC.cpp,323,数组下标访问需审查边界保护,"adc_current_value[2] = adc_inserted_data_read(ADC0, ADC_INSERTED_CHANNEL_3);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,49,数组下标访问需审查边界保护,uint8_t can_rx_buffer[64];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,50,数组下标访问需审查边界保护,static uint32_t can_rx_dma_words[16];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,63,数组下标访问需审查边界保护,u8 data[64];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,71,数组下标访问需审查边界保护,static can_rx_queue_item_t rx_queue[CAN_RX_QUEUE_SIZE];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,76,数组下标访问需审查边界保护,static can_tx_queue_item_t tx_queue[CAN_TX_QUEUE_SIZE];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,82,数组下标访问需审查边界保护,"static constexpr u8 CANFD_DLC_LENGTH_TABLE[7] = {12, 16, 20, 24, 32, 48, 64};",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,238,数组下标访问需审查边界保护,message = rx_message_buffer[rx_buffer_tail];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,559,数组下标访问需审查边界保护,transmit_message.tx_data[i] = dis(gen);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,560,数组下标访问需审查边界保护,"CAN_DEBUG_PRINT("""", transmit_message.tx_data[i]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,625,数组下标访问需审查边界保护,transmit_message.tx_data[i] = i;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,650,数组下标访问需审查边界保护,"CAN_DEBUG_PRINT("""", i, transmit_message.tx_data[i],",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,651,数组下标访问需审查边界保护,receive_message.rx_data[i]);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,727,数组下标访问需审查边界保护,: ((dlc <= 15U) ? CANFD_DLC_LENGTH_TABLE[dlc - 9U] : 0U);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,739,数组下标访问需审查边界保护,if (length <= CANFD_DLC_LENGTH_TABLE[i]) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,740,数组下标访问需审查边界保护,return CANFD_DLC_LENGTH_TABLE[i];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,760,数组下标访问需审查边界保护,rx_queue[rx_queue_tail].id = message.rx_efid;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,761,数组下标访问需审查边界保护,rx_queue[rx_queue_tail].length = message.rx_dlen;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,762,数组下标访问需审查边界保护,if (rx_queue[rx_queue_tail].length > 64) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,763,数组下标访问需审查边界保护,rx_queue[rx_queue_tail].length = 64;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,765,数组下标访问需审查边界保护,for (int i = 0; i < rx_queue[rx_queue_tail].length; i++) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,766,数组下标访问需审查边界保护,rx_queue[rx_queue_tail].data[i] = message.rx_data[i];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,889,数组下标访问需审查边界保护,*item = rx_queue[rx_queue_head];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,907,数组下标访问需审查边界保护,tx_queue[tx_queue_tail].message = message;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,908,数组下标访问需审查边界保护,tx_queue[tx_queue_tail].valid = 1U;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,933,数组下标访问需审查边界保护,*message = tx_queue[tx_queue_head].message;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,949,数组下标访问需审查边界保护,*message = tx_queue[tx_queue_head].message;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,950,数组下标访问需审查边界保护,tx_queue[tx_queue_head].valid = 0U;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1041,数组下标访问需审查边界保护,transmit_data[10] =,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1042,数组下标访问需审查边界保护,(transmit_data[10] & ~0x07) |,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1050,数组下标访问需审查边界保护,transmit_data[29] = test_u16 & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1051,数组下标访问需审查边界保护,transmit_data[30] = (test_u16 >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1052,数组下标访问需审查边界保护,transmit_data[31] = cpu_usage;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1059,数组下标访问需审查边界保护,transmit_data[0] = controller_Mode;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1134,数组下标访问需审查边界保护,"current_message.rx_dlen, current_message.rx_data[0],",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1135,数组下标访问需审查边界保护,current_message.rx_data[1]);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1141,数组下标访问需审查边界保护,new_node_id = current_message.rx_data[0];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1151,数组下标访问需审查边界保护,transmit_data[0] = 0x01;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1152,数组下标访问需审查边界保护,transmit_data[1] = (u8)(new_node_id & 0xFF);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1153,数组下标访问需审查边界保护,transmit_data[2] =,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1177,数组下标访问需审查边界保护,transmit_data[0] = 0x00;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1186,数组下标访问需审查边界保护,transmit_data[0] = 0x00;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1187,数组下标访问需审查边界保护,transmit_data[1] = (u8)(new_node_id & 0xFF);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1188,数组下标访问需审查边界保护,transmit_data[2] = (u8)((new_node_id >> 8) & 0xFF);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1204,数组下标访问需审查边界保护,FOC.control_mode = current_message.rx_data[0];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1243,数组下标访问需审查边界保护,u8 first_byte = current_message.rx_data[0];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1244,数组下标访问需审查边界保护,u8 eigth_byte = current_message.rx_data[7];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1283,数组下标访问需审查边界保护,transmit_data[0] = 0x0A;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1284,数组下标访问需审查边界保护,transmit_data[1] = 0xAC;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1420,数组下标访问需审查边界保护,transmit_message.tx_data[i] = *(data + i);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.cpp,1487,数组下标访问需审查边界保护,transmit_message.tx_data[i] = *(data + i);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.h,25,数组下标访问需审查边界保护,u8 b[4];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.h,37,数组下标访问需审查边界保护,buffer[offset] = (u8)(value & 0xFF);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.h,38,数组下标访问需审查边界保护,buffer[offset + 1] = (u8)((value >> 8) & 0xFF);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.h,51,数组下标访问需审查边界保护,buffer[offset] = float_union.b[0];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.h,52,数组下标访问需审查边界保护,buffer[offset + 1] = float_union.b[1];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.h,53,数组下标访问需审查边界保护,buffer[offset + 2] = float_union.b[2];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.h,54,数组下标访问需审查边界保护,buffer[offset + 3] = float_union.b[3];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.h,65,数组下标访问需审查边界保护,short value = (short)(buffer[offset] | (buffer[offset + 1] << 8));,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.h,77,数组下标访问需审查边界保护,u16 value = (u16)(buffer[offset] | (buffer[offset + 1] << 8));,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.h,90,数组下标访问需审查边界保护,float_union.b[0] = buffer[offset];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.h,91,数组下标访问需审查边界保护,float_union.b[1] = buffer[offset + 1];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.h,92,数组下标访问需审查边界保护,float_union.b[2] = buffer[offset + 2];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.h,93,数组下标访问需审查边界保护,float_union.b[3] = buffer[offset + 3];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.h,195,数组下标访问需审查边界保护,u8 transmit_data[64];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.h,198,数组下标访问需审查边界保护,can_receive_message_struct rx_message_buffer[CAN_RX_BUFFER_SIZE];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Can.h,353,数组下标访问需审查边界保护,rx_message_buffer[rx_buffer_head] = message;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Timer.cpp,19,数组下标访问需审查边界保护,extern u16 adc_value[3];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Timer.cpp,27,数组下标访问需审查边界保护,static const u32 task_schedule_100us[10] = {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Timer.cpp,41,数组下标访问需审查边界保护,static const u32 task_schedule_1ms[10] = {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Timer.cpp,48,数组下标访问需审查边界保护,static const u32 task_schedule_10ms[10] = {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Timer.cpp,53,数组下标访问需审查边界保护,static const u32 task_schedule_100ms[10] = {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Timer.cpp,152,数组下标访问需审查边界保护,scheduler.taskFlags |= task_schedule_100us[total_us100_counter];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Timer.cpp,177,数组下标访问需审查边界保护,scheduler.taskFlags |= task_schedule_100ms[ms100_counter];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Timer.cpp,179,数组下标访问需审查边界保护,scheduler.taskFlags |= task_schedule_10ms[ms10_counter];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/Timer.cpp,181,数组下标访问需审查边界保护,scheduler.taskFlags |= task_schedule_1ms[ms1_counter];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/adc.h,21,数组下标访问需审查边界保护,float vbus_samples[ADC_FILTER_SIZE];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/adc.h,22,数组下标访问需审查边界保护,float currU_samples[ADC_FILTER_SIZE];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/adc.h,23,数组下标访问需审查边界保护,float currV_samples[ADC_FILTER_SIZE];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/adc.h,24,数组下标访问需审查边界保护,float currW_samples[ADC_FILTER_SIZE];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/adc.h,25,数组下标访问需审查边界保护,float mcu_temp_samples[ADC_FILTER_SIZE];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/adc.h,26,数组下标访问需审查边界保护,float drv_temp_samples[ADC_FILTER_SIZE];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,device/ang_sensor.h,95,数组下标访问需审查边界保护,float velocity[VEL_FILTER_SIZE] = {0.0f};,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,main.cpp,169,数组下标访问需审查边界保护,(FOC.*control_functions[FOC.control_mode])();,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,93,数组下标访问需审查边界保护,FlashEepromStatus status_read[CONFIG_SAVED_NUM + 1] = {FLASH_EEPROM_OK};,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,94,数组下标访问需审查边界保护,float data[CONFIG_SAVED_NUM] = {0.0f};,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,96,数组下标访问需审查边界保护,"status_read[1] = readFloat(ADDR_CONTROL_MODE, &data[0]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,97,数组下标访问需审查边界保护,"status_read[2] = readFloat(ADDR_VOLTAGE_LIMIT, &data[1]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,98,数组下标访问需审查边界保护,"status_read[3] = readFloat(ADDR_VEL_LIMIT, &data[2]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,99,数组下标访问需审查边界保护,"status_read[4] = readFloat(ADDR_ANGLE, &data[3]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,100,数组下标访问需审查边界保护,"status_read[5] = readFloat(ADDR_TARGET_ANGLE, &data[4]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,101,数组下标访问需审查边界保护,"status_read[6] = readFloat(ADDR_TARGET_VEL, &data[5]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,105,数组下标访问需审查边界保护,if (status_read[i] ==,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,107,数组下标访问需审查边界保护,data[i - 1] = DEFAULT_VALUE;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,108,数组下标访问需审查边界保护,} else if (status_read[i] != FLASH_EEPROM_OK) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,109,数组下标访问需审查边界保护,data[i - 1] = DEFAULT_VALUE;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,110,数组下标访问需审查边界保护,status_read[0] = status_read[i];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,114,数组下标访问需审查边界保护,if (status_read[0] == FLASH_EEPROM_OK) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,141,数组下标访问需审查边界保护,data[i] = DEFAULT_VALUE;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,149,数组下标访问需审查边界保护,EEPROMStatus = status_read[0];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,154,数组下标访问需审查边界保护,FOC.control_mode = (u8)data[0];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,155,数组下标访问需审查边界保护,FOC.limit_voltage = data[1];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,156,数组下标访问需审查边界保护,FOC.target_current = data[2];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,157,数组下标访问需审查边界保护,KTH7823.angle_set(data[3]);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,158,数组下标访问需审查边界保护,FOC.target_angle = data[4];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,159,数组下标访问需审查边界保护,FOC.target_velocity = data[5];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,415,数组下标访问需审查边界保护,float data[CONFIG_SAVED_NUM] = {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,429,数组下标访问需审查边界保护,"status = writeFloat(ADDR_CONTROL_MODE, data[0]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,435,数组下标访问需审查边界保护,"status = writeFloat(ADDR_VOLTAGE_LIMIT, data[1]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,441,数组下标访问需审查边界保护,"status = writeFloat(ADDR_VEL_LIMIT, data[2]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,447,数组下标访问需审查边界保护,"status = writeFloat(ADDR_ANGLE, data[3]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,453,数组下标访问需审查边界保护,"status = writeFloat(ADDR_TARGET_ANGLE, data[4]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,459,数组下标访问需审查边界保护,"status = writeFloat(ADDR_TARGET_VEL, data[5]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,466,数组下标访问需审查边界保护,u32 crc_data_words[CONFIG_SAVED_NUM];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,471,数组下标访问需审查边界保护,"memcpy(&crc_data_words[i], &data[i], SIZE_FLOAT);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,473,数组下标访问需审查边界保护,crc_data_words[i] = crc_data_words[i] & DATA_FLOAT_MASK;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,507,数组下标访问需审查边界保护,u32 crc_data[2];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,508,数组下标访问需审查边界保护,crc_data[0] = (u32)node_id;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,509,数组下标访问需审查边界保护,crc_data[1] = counter;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,530,数组下标访问需审查边界保护,u32 magic = flash_ptr[NODE_ID_MAGIC_OFFSET / sizeof(u32)];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,537,数组下标访问需审查边界保护,u16 id_value = (u16)flash_ptr[NODE_ID_VALUE_OFFSET / sizeof(u32)];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,544,数组下标访问需审查边界保护,u32 write_counter = flash_ptr[NODE_ID_COUNTER_OFFSET / sizeof(u32)];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,547,数组下标访问需审查边界保护,u32 stored_crc = flash_ptr[NODE_ID_CRC_OFFSET / sizeof(u32)];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,577,数组下标访问需审查边界保护,u32 write_data[4];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,578,数组下标访问需审查边界保护,write_data[0] = NODE_ID_MAGIC;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,579,数组下标访问需审查边界保护,write_data[1] = (u32)node_id;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,580,数组下标访问需审查边界保护,write_data[2] = counter;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,581,数组下标访问需审查边界保护,write_data[3] = crc;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,589,数组下标访问需审查边界保护,"fmc_status = fmc_word_program(addr + i * sizeof(u32), write_data[i]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,795,数组下标访问需审查边界保护,u32 temp_val[OTA_CONFIG_NUM];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,799,数组下标访问需审查边界保护,temp_val[0] = *flash_ptr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,800,数组下标访问需审查边界保护,if (temp_val[0] == data) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,816,数组下标访问需审查边界保护,temp_val[0] = *flash_ptr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,818,数组下标访问需审查边界保护,temp_val[1] = *flash_ptr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,820,数组下标访问需审查边界保护,temp_val[2] = *flash_ptr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,822,数组下标访问需审查边界保护,temp_val[3] = *flash_ptr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,824,数组下标访问需审查边界保护,temp_val[4] = *flash_ptr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,826,数组下标访问需审查边界保护,temp_val[5] = *flash_ptr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,832,数组下标访问需审查边界保护,"temp_val[0], temp_val[1], temp_val[2], temp_val[3],",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,833,数组下标访问需审查边界保护,"temp_val[4], temp_val[5]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,846,数组下标访问需审查边界保护,if (current_addr != addr and temp_val[i] != OTA_NOT_AVAL) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,847,数组下标访问需审查边界保护,"fmc_status = write_ADDRESS(current_addr, temp_val[i]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,851,数组下标访问需审查边界保护,"temp_val[i], current_addr, fmc_status);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,860,数组下标访问需审查边界保护,temp_val[0] = *flash_ptr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,862,数组下标访问需审查边界保护,temp_val[1] = *flash_ptr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,864,数组下标访问需审查边界保护,temp_val[2] = *flash_ptr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,866,数组下标访问需审查边界保护,temp_val[3] = *flash_ptr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,868,数组下标访问需审查边界保护,temp_val[4] = *flash_ptr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,870,数组下标访问需审查边界保护,temp_val[5] = *flash_ptr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,874,数组下标访问需审查边界保护,"temp_val[0], temp_val[1], temp_val[2], temp_val[3],",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,875,数组下标访问需审查边界保护,"temp_val[4], temp_val[5]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,890,数组下标访问需审查边界保护,NVIC->ICER[i] = 0xFFFFFFFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/flash.cpp,972,数组下标访问需审查边界保护,uint32_t src_data = src_ptr[offset / 4];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/health.cpp,63,数组下标访问需审查边界保护,"u32 currents[3] = {(u32)(sampler.get_current('') * 1000),",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/health.cpp,68,数组下标访问需审查边界保护,"current_max = max(currents[0], currents[1], currents[2]);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,142,数组下标访问需审查边界保护,u8 versionData[24] = {0};,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,146,数组下标访问需审查边界保护,versionData[0] = softwareVersion.major & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,147,数组下标访问需审查边界保护,versionData[1] = (softwareVersion.major >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,148,数组下标访问需审查边界保护,versionData[2] = softwareVersion.minor & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,149,数组下标访问需审查边界保护,versionData[3] = (softwareVersion.minor >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,150,数组下标访问需审查边界保护,versionData[4] = softwareVersion.patch & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,151,数组下标访问需审查边界保护,versionData[5] = (softwareVersion.patch >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,152,数组下标访问需审查边界保护,versionData[6] = softwareVersion.build & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,153,数组下标访问需审查边界保护,versionData[7] = (softwareVersion.build >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,156,数组下标访问需审查边界保护,versionData[8] = hardwareVersion.major & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,157,数组下标访问需审查边界保护,versionData[9] = (hardwareVersion.major >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,158,数组下标访问需审查边界保护,versionData[10] = hardwareVersion.minor & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,159,数组下标访问需审查边界保护,versionData[11] = (hardwareVersion.minor >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,160,数组下标访问需审查边界保护,versionData[12] = hardwareVersion.patch & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,161,数组下标访问需审查边界保护,versionData[13] = (hardwareVersion.patch >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,162,数组下标访问需审查边界保护,versionData[14] = hardwareVersion.build & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,163,数组下标访问需审查边界保护,versionData[15] = (hardwareVersion.build >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,166,数组下标访问需审查边界保护,versionData[16] = bootVersion.major & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,167,数组下标访问需审查边界保护,versionData[17] = (bootVersion.major >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,168,数组下标访问需审查边界保护,versionData[18] = bootVersion.minor & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,169,数组下标访问需审查边界保护,versionData[19] = (bootVersion.minor >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,170,数组下标访问需审查边界保护,versionData[20] = bootVersion.patch & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,171,数组下标访问需审查边界保护,versionData[21] = (bootVersion.patch >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,172,数组下标访问需审查边界保护,versionData[22] = bootVersion.build & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,173,数组下标访问需审查边界保护,versionData[23] = (bootVersion.build >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,186,数组下标访问需审查边界保护,char versionStr[32];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,298,数组下标访问需审查边界保护,u32 temp_val[6];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,301,数组下标访问需审查边界保护,temp_val[0] = *flash_ptr1;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,303,数组下标访问需审查边界保护,temp_val[1] = *flash_ptr1;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,305,数组下标访问需审查边界保护,temp_val[2] = *flash_ptr1;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,307,数组下标访问需审查边界保护,temp_val[3] = *flash_ptr1;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,309,数组下标访问需审查边界保护,temp_val[4] = *flash_ptr1;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,311,数组下标访问需审查边界保护,temp_val[5] = *flash_ptr1;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,316,数组下标访问需审查边界保护,"temp_val[0], temp_val[1], temp_val[2], temp_val[3], temp_val[4],",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,317,数组下标访问需审查边界保护,temp_val[5]);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ARRAY-001,Advisory,MISRA C:2012 Rule 18.x,sys/initial.cpp,332,数组下标访问需审查边界保护,"u8 transmit_data[2] = {0x0A, 0xAC};",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ASM-001,Required,MISRA C:2012 Dir 4.3 / project safety rule,device/Can.cpp,709,关中断/低功耗/内联汇编等平台相关指令需审查,__disable_irq();,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ASM-001,Required,MISRA C:2012 Dir 4.3 / project safety rule,main.cpp,72,关中断/低功耗/内联汇编等平台相关指令需审查,__disable_irq();,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ASM-001,Required,MISRA C:2012 Dir 4.3 / project safety rule,main.cpp,76,关中断/低功耗/内联汇编等平台相关指令需审查,__enable_irq();,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ASM-001,Required,MISRA C:2012 Dir 4.3 / project safety rule,main.cpp,93,关中断/低功耗/内联汇编等平台相关指令需审查,__enable_irq();,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ASM-001,Required,MISRA C:2012 Dir 4.3 / project safety rule,sys/flash.cpp,888,关中断/低功耗/内联汇编等平台相关指令需审查,__disable_irq();,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ASM-001,Required,MISRA C:2012 Dir 4.3 / project safety rule,sys/flash.cpp,936,关中断/低功耗/内联汇编等平台相关指令需审查,__disable_irq();,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ASM-001,Required,MISRA C:2012 Dir 4.3 / project safety rule,sys/flash.cpp,954,关中断/低功耗/内联汇编等平台相关指令需审查,__enable_irq();,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ASM-001,Required,MISRA C:2012 Dir 4.3 / project safety rule,sys/flash.cpp,992,关中断/低功耗/内联汇编等平台相关指令需审查,__enable_irq();,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ASM-001,Required,MISRA C:2012 Dir 4.3 / project safety rule,sys/flash.cpp,1008,关中断/低功耗/内联汇编等平台相关指令需审查,__enable_irq();,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-ASM-001,Required,MISRA C:2012 Dir 4.3 / project safety rule,sys/systick.cpp,256,关中断/低功耗/内联汇编等平台相关指令需审查,__disable_irq();,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,40,C 风格强制类型转换需审查必要性和范围,if (!cogging_comp_enabled) return 0.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,46,C 风格强制类型转换需审查必要性和范围,float index_f = angle / 360.0f * (float)COGGING_TABLE_SIZE;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,47,C 风格强制类型转换需审查必要性和范围,u16 idx0 = (u16)index_f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,49,C 风格强制类型转换需审查必要性和范围,float frac = index_f - (float)idx0;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,53,C 风格强制类型转换需审查必要性和范围,if (rt_velocity < -0.5f) last_table = cogging_table_rev;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,54,C 风格强制类型转换需审查必要性和范围,else if (rt_velocity > 0.5f) last_table = cogging_table;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,91,C 风格强制类型转换需审查必要性和范围,if (!cogging_calib_request) return;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,122,C 风格强制类型转换需审查必要性和范围,if (sample_div < SAMPLE_DIV) return;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,132,C 风格强制类型转换需审查必要性和范围,u16 idx = (u16)(angle_el / 360.0f * (float)COGGING_TABLE_SIZE);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,133,C 风格强制类型转换需审查必要性和范围,if (idx >= COGGING_TABLE_SIZE) idx = COGGING_TABLE_SIZE - 1;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,153,C 风格强制类型转换需审查必要性和范围,(cog_calib_count[i] > 0) ? cog_calib_accum[i] / (float)cog_calib_count[i] : 0.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,156,C 风格强制类型转换需审查必要性和范围,dc /= (float)COGGING_TABLE_SIZE;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,197,C 风格强制类型转换需审查必要性和范围,float angle_deg = (float)i / (float)COGGING_TABLE_SIZE * 360.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,205,C 风格强制类型转换需审查必要性和范围,float angle_deg = (float)i / (float)COGGING_TABLE_SIZE * 360.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,214,C 风格强制类型转换需审查必要性和范围,"if (i % 8 == 0) printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,216,C 风格强制类型转换需审查必要性和范围,"if (i < COGGING_TABLE_SIZE - 1) printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,217,C 风格强制类型转换需审查必要性和范围,"if (i % 8 == 7 || i == COGGING_TABLE_SIZE - 1) printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,226,C 风格强制类型转换需审查必要性和范围,"if (i % 8 == 0) printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,228,C 风格强制类型转换需审查必要性和范围,"if (i < COGGING_TABLE_SIZE - 1) printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,229,C 风格强制类型转换需审查必要性和范围,"if (i % 8 == 7 || i == COGGING_TABLE_SIZE - 1) printf("""");",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,246,C 风格强制类型转换需审查必要性和范围,((value - min) / (max - min) * (target_max - target_min)),open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,301,C 风格强制类型转换需审查必要性和范围,I_alpha = (2.0f / 3.0f) * current_a - (1.0f / 3.0f) * current_b -,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,302,C 风格强制类型转换需审查必要性和范围,(1.0f / 3.0f) * current_c;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,605,C 风格强制类型转换需审查必要性和范围,float current_vbus = adc_value[2] * (3.3f / 4096.0f) * 11.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,626,C 风格强制类型转换需审查必要性和范围,if ((drop_exceeded || below_absolute) && (!is_shut_down)) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,695,C 风格强制类型转换需审查必要性和范围,float velocity_error = (target_velocity - rt_velocity) * DIR * REDUCTION_RATIO;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,782,C 风格强制类型转换需审查必要性和范围,float Uq = vel_inVelAngloop(velocity_error)* DIR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.cpp,813,C 风格强制类型转换需审查必要性和范围,float velocity_error = (target_velocity - rt_velocity)* DIR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/FOC.h,260,C 风格强制类型转换需审查必要性和范围,typedef float (FOC_Controller::*FOCFunctionPtr)(void);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/Filter.cpp,150,C 风格强制类型转换需审查必要性和范围,(void)initial_error_covariance;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/Filter.cpp,151,C 风格强制类型转换需审查必要性和范围,(void)process_noise;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/Filter.cpp,152,C 风格强制类型转换需审查必要性和范围,(void)measurement_noise;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/Filter.cpp,190,C 风格强制类型转换需审查必要性和范围,if (error > 180.0f) error -= 360.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/Filter.cpp,191,C 风格强制类型转换需审查必要性和范围,else if (error < -180.0f) error += 360.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/Filter.cpp,196,C 风格强制类型转换需审查必要性和范围,velocity_estimate = velocity_pred + (beta_gain / dt) * error;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/Filter.h,80,C 风格强制类型转换需审查必要性和范围,P = (1 - K) * P;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/Filter.h,96,C 风格强制类型转换需审查必要性和范围,P = (1 - K) * P;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,Algorithm/Filter.h,248,C 风格强制类型转换需审查必要性和范围,(void)initial_error_covariance;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ADC.cpp,41,C 风格强制类型转换需审查必要性和范围,return (raw_adc * ADC_SCALE + CURRENT_OFFSET) * CURRENT_FACTOR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ADC.cpp,60,C 风格强制类型转换需审查必要性和范围,dma_data_parameter.periph_addr = (uint32_t)(&ADC_RDATA(ADC0));,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ADC.cpp,62,C 风格强制类型转换需审查必要性和范围,dma_data_parameter.memory_addr = (uint32_t)(adc_value);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ADC.cpp,152,C 风格强制类型转换需审查必要性和范围,(1.43f - adc_value[0] * ADC_SCALE) * TEMP_FACTOR + 35.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ADC.cpp,160,C 风格强制类型转换需审查必要性和范围,float R_now = (float)adc_value[1] / (4096 - (float)adc_value[1]) * 4700;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ADC.cpp,241,C 风格强制类型转换需审查必要性和范围,(1.43f - adc_value[0] * ADC_SCALE) * TEMP_FACTOR + 35.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ADC.cpp,243,C 风格强制类型转换需审查必要性和范围,if (mcu_temp_head >= ADC_FILTER_SIZE) mcu_temp_head = 0;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ADC.cpp,259,C 风格强制类型转换需审查必要性和范围,float R_now = (float)adc_value[1] / (4096 - (float)adc_value[1]) * 4700;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ADC.cpp,263,C 风格强制类型转换需审查必要性和范围,if (drv_temp_head >= ADC_FILTER_SIZE) drv_temp_head = 0;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ADC.cpp,301,C 风格强制类型转换需审查必要性和范围,if (temp_vbus_head >= ADC_FILTER_SIZE) temp_vbus_head = 0;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ADC.cpp,320,C 风格强制类型转换需审查必要性和范围,"(void)adc_inserted_data_read(ADC0, ADC_INSERTED_CHANNEL_0);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,30,C 风格强制类型转换需审查必要性和范围,"#define CAN_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,33,C 风格强制类型转换需审查必要性和范围,"#define CAN_DEBUG_PRINT(fmt, ...) ((void)0)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,103,C 风格强制类型转换需审查必要性和范围,return ((u32)node_id << 16) | (base_id & 0xFFFF);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,116,C 风格强制类型转换需审查必要性和范围,u16 rx_node_id = (u16)((received_id >> 16) & 0xFFFF);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,198,C 风格强制类型转换需审查必要性和范围,return (u8)status;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,317,C 风格强制类型转换需审查必要性和范围,"(uint32_t)(&CAN_RFIFOMDATA0(CAN0, CAN_FIFO0));",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,318,C 风格强制类型转换需审查必要性和范围,dma_rx_parameter.memory_addr = (uint32_t)can_rx_dma_words;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,514,C 风格强制类型转换需审查必要性和范围,can_filter.filter_list_high = (uint16_t)(DEV_CAN_LOOPBACK_ID >> 13U);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,516,C 风格强制类型转换需审查必要性和范围,((uint16_t)(DEV_CAN_LOOPBACK_ID)) << 3U | (1U << 2);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,646,C 风格强制类型转换需审查必要性和范围,(CAN_FF_STANDARD == receive_message.rx_ff) &&,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,804,C 风格强制类型转换需审查必要性和范围,uint32_t canfd_en = CAN_FDCTL(CAN0) & CAN_FDCTL_FDEN;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,807,C 风格强制类型转换需审查必要性和范围,message->rx_ff = (uint8_t)(CAN_RFIFOMI_FF & rfifomi);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,809,C 风格强制类型转换需审查必要性和范围,message->rx_sfid = (uint32_t)(GET_RFIFOMI_SFID(rfifomi));,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,811,C 风格强制类型转换需审查必要性和范围,message->rx_efid = (uint32_t)(GET_RFIFOMI_EFID(rfifomi));,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,813,C 风格强制类型转换需审查必要性和范围,message->rx_ft = (uint8_t)(CAN_RFIFOMI_FT & rfifomi);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,814,C 风格强制类型转换需审查必要性和范围,message->rx_fi = (uint8_t)(GET_RFIFOMP_FI(rfifomp));,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,815,C 风格强制类型转换需审查必要性和范围,message->fd_flag = (uint8_t)((CAN_RFIFOMP_FDF & rfifomp) >> 7);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,816,C 风格强制类型转换需审查必要性和范围,dlc = (uint8_t)(GET_RFIFOMP_DLENC(rfifomp));,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,817,C 风格强制类型转换需审查必要性和范围,if ((canfd_en != 0U) && (message->fd_flag != CAN_FDF_CLASSIC)) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,819,C 风格强制类型转换需审查必要性和范围,message->fd_brs = (uint8_t)((rfifomp & CAN_RFIFOMP_BRS) >> 5);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,820,C 风格强制类型转换需审查必要性和范围,message->fd_esi = (uint8_t)((rfifomp & CAN_RFIFOMP_ESI) >> 4);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,848,C 风格强制类型转换需审查必要性和范围,"(uint32_t)(&CAN_RFIFOMDATA0(CAN0, CAN_FIFO0)));",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,849,C 风格强制类型转换需审查必要性和范围,"dma_memory_address_config(DMA0, DMA_CH4, (uint32_t)can_rx_dma_words);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,1015,C 风格强制类型转换需审查必要性和范围,u_current_union.f = sampler.get_current('') * 1000;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,1016,C 风格强制类型转换需审查必要性和范围,w_current_union.f = sampler.get_current('') * 1000;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,1017,C 风格强制类型转换需审查必要性和范围,v_current_union.f = sampler.get_current('') * 1000;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,1051,C 风格强制类型转换需审查必要性和范围,transmit_data[30] = (test_u16 >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,1102,C 风格强制类型转换需审查必要性和范围,u16 sender_node_id = (u16)((current_message.rx_efid >> 16) & 0xFFFF);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,1152,C 风格强制类型转换需审查必要性和范围,transmit_data[1] = (u8)(new_node_id & 0xFF);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,1154,C 风格强制类型转换需审查必要性和范围,(u8)((new_node_id >> 8) & 0xFF);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,1187,C 风格强制类型转换需审查必要性和范围,transmit_data[1] = (u8)(new_node_id & 0xFF);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,1188,C 风格强制类型转换需审查必要性和范围,transmit_data[2] = (u8)((new_node_id >> 8) & 0xFF);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,1279,C 风格强制类型转换需审查必要性和范围,volatile u32 *flash_ptr = (volatile u32 *)n_APP_LATEST_EN_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,1281,C 风格强制类型转换需审查必要性和范围,flash_ptr = (volatile u32 *)n_APP_LATEST_CHECK_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,1451,C 风格强制类型转换需审查必要性和范围,if ((CAN_FDCTL(CAN0) & CAN_FDCTL_FDEN) == 0U) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.cpp,1468,C 风格强制类型转换需审查必要性和范围,if ((length != 0U) && (valid_length == 0U)) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.h,37,C 风格强制类型转换需审查必要性和范围,buffer[offset] = (u8)(value & 0xFF);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.h,38,C 风格强制类型转换需审查必要性和范围,buffer[offset + 1] = (u8)((value >> 8) & 0xFF);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.h,65,C 风格强制类型转换需审查必要性和范围,short value = (short)(buffer[offset] | (buffer[offset + 1] << 8));,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Can.h,77,C 风格强制类型转换需审查必要性和范围,u16 value = (u16)(buffer[offset] | (buffer[offset + 1] << 8));,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Timer.cpp,316,C 风格强制类型转换需审查必要性和范围,TIMER_CH0CV(TIMER1) = (uint32_t)(duty_cycle0 * TIMER1_PERIOD);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Timer.cpp,317,C 风格强制类型转换需审查必要性和范围,TIMER_CH1CV(TIMER1) = (uint32_t)(duty_cycle1 * TIMER1_PERIOD);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/Timer.cpp,318,C 风格强制类型转换需审查必要性和范围,TIMER_CH2CV(TIMER1) = (uint32_t)(duty_cycle2 * TIMER1_PERIOD);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.cpp,22,C 风格强制类型转换需审查必要性和范围,"#define ANG_SENS_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.cpp,25,C 风格强制类型转换需审查必要性和范围,"#define ANG_SENS_DEBUG_PRINT(fmt, ...) ((void)0)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.cpp,60,C 风格强制类型转换需审查必要性和范围,dma_init_struct.memory_addr = (uint32_t)0;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.cpp,64,C 风格强制类型转换需审查必要性和范围,dma_init_struct.periph_addr = (uint32_t)(&SPI_DATA(SPI0));,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.cpp,74,C 风格强制类型转换需审查必要性和范围,dma_init_struct.memory_addr = (uint32_t)0;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.cpp,78,C 风格强制类型转换需审查必要性和范围,dma_init_struct.periph_addr = (uint32_t)(&SPI_DATA(SPI0));,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.cpp,113,C 风格强制类型转换需审查必要性和范围,"dma_memory_address_config(DMA0, DMA_CH2, (uint32_t)&tx_data);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.cpp,119,C 风格强制类型转换需审查必要性和范围,"dma_memory_address_config(DMA0, DMA_CH1, (uint32_t)rx_data);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.cpp,125,C 风格强制类型转换需审查必要性和范围,while ((!spi_dma_tx_complete || !spi_dma_rx_complete) && --timeout) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.cpp,245,C 风格强制类型转换需审查必要性和范围,float angle_deg = -(float)raw_data * ANGLESENS_FACTOR + ANGLESENS_OFFSET;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.cpp,256,C 风格强制类型转换需审查必要性和范围,return (float)FAULT_RECEIVE;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.cpp,294,C 风格强制类型转换需审查必要性和范围,float angle_sensor::getAngle(void) const {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.cpp,302,C 风格强制类型转换需审查必要性和范围,float angle_sensor::getRawAngle(void) const { return m_cumulativeAngle; },open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.cpp,308,C 风格强制类型转换需审查必要性和范围,float angle_sensor::getcurrent_sensorangle(void) const{,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.h,64,C 风格强制类型转换需审查必要性和范围,float getAngle(void) const;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.h,69,C 风格强制类型转换需审查必要性和范围,float getRawAngle(void) const;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,device/ang_sensor.h,74,C 风格强制类型转换需审查必要性和范围,float getcurrent_sensorangle(void) const;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,main.cpp,22,C 风格强制类型转换需审查必要性和范围,"#define MAIN_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,main.cpp,25,C 风格强制类型转换需审查必要性和范围,"#define MAIN_DEBUG_PRINT(fmt, ...) ((void)0)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,main.cpp,169,C 风格强制类型转换需审查必要性和范围,(FOC.*control_functions[FOC.control_mode])();,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/config.h,381,C 风格强制类型转换需审查必要性和范围,(TIMER2_PERIOD + 1) * (TIMER2_PRESCALER + 1) / 120000000.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/config.h,396,C 风格强制类型转换需审查必要性和范围,(TIMER1_PERIOD + 1) * 0.41 - 1;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/config.h,427,C 风格强制类型转换需审查必要性和范围,while (angle >= 360.0f) angle -= 360.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/config.h,428,C 风格强制类型转换需审查必要性和范围,while (angle < 0.0f) angle += 360.0f;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,22,C 风格强制类型转换需审查必要性和范围,"#define EEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,25,C 风格强制类型转换需审查必要性和范围,"#define EEP_DEBUG_PRINT(fmt, ...) ((void)0)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,31,C 风格强制类型转换需审查必要性和范围,"#define OTA_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,34,C 风格强制类型转换需审查必要性和范围,"#define OTA_DEBUG_PRINT(fmt, ...) ((void)0)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,120,C 风格强制类型转换需审查必要性和范围,volatile u32 *flash_ptr = (volatile u32 *)address;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,136,C 风格强制类型转换需审查必要性和范围,"CRC_NUM = crc_block_data_calculate((uint32_t *)data, CONFIG_SAVED_NUM);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,138,C 风格强制类型转换需审查必要性和范围,*((u32 *)next_address));,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,139,C 风格强制类型转换需审查必要性和范围,if (CRC_NUM != *((u32 *)next_address)) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,154,C 风格强制类型转换需审查必要性和范围,FOC.control_mode = (u8)data[0];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,169,C 风格强制类型转换需审查必要性和范围,"FlashEepromStatus FlashEEPROM::read(u8 virtualAddr, u16 *data) const {",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,178,C 风格强制类型转换需审查必要性和范围,u32 data_word = *((u32 *)address);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,181,C 风格强制类型转换需审查必要性和范围,u8 addr = (u8)(data_word & DATA_ADDR_MASK);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,185,C 风格强制类型转换需审查必要性和范围,*data = (u16)((data_word & DATA_U16_MASK) >> 16);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,200,C 风格强制类型转换需审查必要性和范围,"FlashEepromStatus FlashEEPROM::readFloat(u8 virtualAddr, float *data) const {",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,210,C 风格强制类型转换需审查必要性和范围,volatile u32 *flash_ptr = (volatile u32 *)address;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,215,C 风格强制类型转换需审查必要性和范围,u8 addr = (u8)(data_word & DATA_ADDR_MASK);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,242,C 风格强制类型转换需审查必要性和范围,u32 data_word_to_write = ((u32)data << 16) | (u32)virtualAddr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,247,C 风格强制类型转换需审查必要性和范围,volatile u32 *flash_ptr = (volatile u32 *)address;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,250,C 风格强制类型转换需审查必要性和范围,if ((data_read & DATA_ADDR_MASK) == (u32)virtualAddr) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,255,C 风格强制类型转换需审查必要性和范围,u16 float_data_read = *((u16 *)&data_read);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,270,C 风格强制类型转换需审查必要性和范围,volatile u32 *flash_ptr = (volatile u32 *)address;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,316,C 风格强制类型转换需审查必要性和范围,data_word = (data_word & DATA_FLOAT_MASK) | (u32)virtualAddr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,322,C 风格强制类型转换需审查必要性和范围,volatile u32 *flash_ptr = (volatile u32 *)address;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,326,C 风格强制类型转换需审查必要性和范围,(u32)virtualAddr) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,331,C 风格强制类型转换需审查必要性和范围,float float_data_read = *((float *)&data_word_read);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,346,C 风格强制类型转换需审查必要性和范围,volatile u32 *flash_ptr = (volatile u32 *)address;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,361,C 风格强制类型转换需审查必要性和范围,u32 data_word_c = *((u32 *)next_address);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,363,C 风格强制类型转换需审查必要性和范围,float float_data = *((float *)&data_word_c);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,416,C 风格强制类型转换需审查必要性和范围,"(float)FOC.control_mode, FOC.limit_voltage,",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,508,C 风格强制类型转换需审查必要性和范围,crc_data[0] = (u32)node_id;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,527,C 风格强制类型转换需审查必要性和范围,volatile u32 *flash_ptr = (volatile u32 *)addr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,537,C 风格强制类型转换需审查必要性和范围,u16 id_value = (u16)flash_ptr[NODE_ID_VALUE_OFFSET / sizeof(u32)];,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,579,C 风格强制类型转换需审查必要性和范围,write_data[1] = (u32)node_id;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,627,C 风格强制类型转换需审查必要性和范围,FlashEepromStatus FlashEEPROM::readNodeId(u16 *node_id) const {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,730,C 风格强制类型转换需审查必要性和范围,volatile u32 *flash_ptr = (volatile u32 *)address;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,742,C 风格强制类型转换需审查必要性和范围,if (*((u32 *)next_address) != CRC_NUM) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,747,C 风格强制类型转换需审查必要性和范围,*((u32 *)next_address));,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,768,C 风格强制类型转换需审查必要性和范围,if (CRC_NUM == *((u32 *)next_address)) {,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,796,C 风格强制类型转换需审查必要性和范围,volatile u32 *flash_ptr = (volatile u32 *)addr;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,815,C 风格强制类型转换需审查必要性和范围,flash_ptr = (volatile u32 *)n_APP_LATEST_AVAL_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,817,C 风格强制类型转换需审查必要性和范围,flash_ptr = (volatile u32 *)n_APP_BACKUP_AVAL_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,819,C 风格强制类型转换需审查必要性和范围,flash_ptr = (volatile u32 *)n_APP_LATEST_EN_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,821,C 风格强制类型转换需审查必要性和范围,flash_ptr = (volatile u32 *)n_APP_BACKUP_EN_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,823,C 风格强制类型转换需审查必要性和范围,flash_ptr = (volatile u32 *)n_APP_LATEST_CHECK_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,825,C 风格强制类型转换需审查必要性和范围,flash_ptr = (volatile u32 *)n_APP_BACKUP_CHECK_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,859,C 风格强制类型转换需审查必要性和范围,flash_ptr = (volatile u32 *)n_APP_LATEST_AVAL_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,861,C 风格强制类型转换需审查必要性和范围,flash_ptr = (volatile u32 *)n_APP_BACKUP_AVAL_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,863,C 风格强制类型转换需审查必要性和范围,flash_ptr = (volatile u32 *)n_APP_LATEST_EN_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,865,C 风格强制类型转换需审查必要性和范围,flash_ptr = (volatile u32 *)n_APP_BACKUP_EN_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,867,C 风格强制类型转换需审查必要性和范围,flash_ptr = (volatile u32 *)n_APP_LATEST_CHECK_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,869,C 风格强制类型转换需审查必要性和范围,flash_ptr = (volatile u32 *)n_APP_BACKUP_CHECK_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,911,C 风格强制类型转换需审查必要性和范围,uint32_t msp_value = *(__IO uint32_t *)BOOTLOADER_START_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,912,C 风格强制类型转换需审查必要性和范围,uint32_t reset_handler = *(__IO uint32_t *)(BOOTLOADER_START_ADDR + 4);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,913,C 风格强制类型转换需审查必要性和范围,typedef void (*AppEntryFunc)(void);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,914,C 风格强制类型转换需审查必要性和范围,AppEntryFunc app_entry = (AppEntryFunc)reset_handler;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,962,C 风格强制类型转换需审查必要性和范围,const uint32_t *src_ptr = (const uint32_t *)APPLATEST_START_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,963,C 风格强制类型转换需审查必要性和范围,uint32_t *dst_ptr = (uint32_t *)APPBACK_START_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,969,C 风格强制类型转换需审查必要性和范围,"(uint32_t *)APPLATEST_START_ADDR, APP_MAX_SIZE / 4);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,1012,C 风格强制类型转换需审查必要性和范围,"uint32_t dst_crc = crc_block_data_calculate((uint32_t *)APPBACK_START_ADDR,",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.cpp,1020,C 风格强制类型转换需审查必要性和范围,return (fmc_state_enum)0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.h,15,C 风格强制类型转换需审查必要性和范围,#define ALIGN_4BYTE(addr) ((addr) & 0xFFFFFFFC),open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.h,78,C 风格强制类型转换需审查必要性和范围,"FlashEepromStatus read(u8 virtualAddr, u16 *data) const;",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.h,94,C 风格强制类型转换需审查必要性和范围,"FlashEepromStatus readFloat(u8 virtualAddr, float *data) const;",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/flash.h,135,C 风格强制类型转换需审查必要性和范围,FlashEepromStatus readNodeId(u16 *node_id) const;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/health.cpp,38,C 风格强制类型转换需审查必要性和范围,int drv_temp = (int)sampler.get_drv_temp();,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/health.cpp,39,C 风格强制类型转换需审查必要性和范围,int mcu_temp = (int)sampler.get_mcu_temp();,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/health.cpp,63,C 风格强制类型转换需审查必要性和范围,"u32 currents[3] = {(u32)(sampler.get_current('') * 1000),",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/health.cpp,64,C 风格强制类型转换需审查必要性和范围,"(u32)(sampler.get_current('') * 1000),",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/health.cpp,65,C 风格强制类型转换需审查必要性和范围,(u32)(sampler.get_current('') * 1000)};,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/health.h,16,C 风格强制类型转换需审查必要性和范围,#define FLOAT_TO_Q16_16(x) ((q16_16_t)((x) * Q16_16_ONE)),open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/health.h,18,C 风格强制类型转换需审查必要性和范围,#define Q16_16_TO_FLOAT(x) ((float)(x) / Q16_16_ONE),open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/health.h,20,C 风格强制类型转换需审查必要性和范围,"#define Q16_16_MUL(a, b) ((q16_16_t)(((int64_t)(a) * (b)) >> 16))",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/health.h,22,C 风格强制类型转换需审查必要性和范围,"#define Q16_16_SQUARE(x) Q16_16_MUL((x), (x))",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,23,C 风格强制类型转换需审查必要性和范围,"#define OTA_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,26,C 风格强制类型转换需审查必要性和范围,"#define OTA_DEBUG_PRINT(fmt, ...) ((void)0)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,32,C 风格强制类型转换需审查必要性和范围,"#define EEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,35,C 风格强制类型转换需审查必要性和范围,"#define EEP_DEBUG_PRINT(fmt, ...) ((void)0)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,147,C 风格强制类型转换需审查必要性和范围,versionData[1] = (softwareVersion.major >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,149,C 风格强制类型转换需审查必要性和范围,versionData[3] = (softwareVersion.minor >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,151,C 风格强制类型转换需审查必要性和范围,versionData[5] = (softwareVersion.patch >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,153,C 风格强制类型转换需审查必要性和范围,versionData[7] = (softwareVersion.build >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,157,C 风格强制类型转换需审查必要性和范围,versionData[9] = (hardwareVersion.major >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,159,C 风格强制类型转换需审查必要性和范围,versionData[11] = (hardwareVersion.minor >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,161,C 风格强制类型转换需审查必要性和范围,versionData[13] = (hardwareVersion.patch >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,163,C 风格强制类型转换需审查必要性和范围,versionData[15] = (hardwareVersion.build >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,167,C 风格强制类型转换需审查必要性和范围,versionData[17] = (bootVersion.major >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,169,C 风格强制类型转换需审查必要性和范围,versionData[19] = (bootVersion.minor >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,171,C 风格强制类型转换需审查必要性和范围,versionData[21] = (bootVersion.patch >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,173,C 风格强制类型转换需审查必要性和范围,versionData[23] = (bootVersion.build >> 8) & 0xFF;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,224,C 风格强制类型转换需审查必要性和范围,"int fputc(int ch, FILE *f) throw() {",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,225,C 风格强制类型转换需审查必要性和范围,"usart_data_transmit(EVAL_COM0, (u8)ch);",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,300,C 风格强制类型转换需审查必要性和范围,volatile u32 *flash_ptr1 = (volatile u32 *)n_APP_LATEST_AVAL_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,302,C 风格强制类型转换需审查必要性和范围,flash_ptr1 = (volatile u32 *)n_APP_BACKUP_AVAL_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,304,C 风格强制类型转换需审查必要性和范围,flash_ptr1 = (volatile u32 *)n_APP_LATEST_EN_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,306,C 风格强制类型转换需审查必要性和范围,flash_ptr1 = (volatile u32 *)n_APP_BACKUP_EN_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,308,C 风格强制类型转换需审查必要性和范围,flash_ptr1 = (volatile u32 *)n_APP_LATEST_CHECK_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,310,C 风格强制类型转换需审查必要性和范围,flash_ptr1 = (volatile u32 *)n_APP_BACKUP_CHECK_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,321,C 风格强制类型转换需审查必要性和范围,volatile u32 *flash_ptr = (volatile u32 *)n_APP_LATEST_CHECK_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,336,C 风格强制类型转换需审查必要性和范围,flash_ptr = (volatile u32 *)n_APP_BACKUP_AVAL_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/initial.cpp,338,C 风格强制类型转换需审查必要性和范围,flash_ptr = (volatile u32 *)n_APP_BACKUP_CHECK_ADDR;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/systick.cpp,47,C 风格强制类型转换需审查必要性和范围,"#define SLEEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/systick.cpp,50,C 风格强制类型转换需审查必要性和范围,"#define SLEEP_DEBUG_PRINT(fmt, ...) ((void)0)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/systick.cpp,138,C 风格强制类型转换需审查必要性和范围,uint64_t busy_64 = (uint64_t)busy_cycles_accum * 100U;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/systick.cpp,139,C 风格强制类型转换需审查必要性和范围,uint32_t busy_percent = (uint32_t)(busy_64 / SystemCoreClock);,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/systick.cpp,143,C 风格强制类型转换需审查必要性和范围,cpu_usage = (uint8_t)busy_percent;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/systick.cpp,260,C 风格强制类型转换需审查必要性和范围,volatile u32 *flash_ptr = (volatile u32 *)address;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-CAST-001,Required,MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x,sys/systick.cpp,284,C 风格强制类型转换需审查必要性和范围,volatile u32 *flash_ptr = (volatile u32 *)address;,open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,Algorithm/FOC.cpp,242,函数式宏需审查括号、副作用和类型安全,"#define _constrain(amt, low, high) \",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,Algorithm/FOC.cpp,245,函数式宏需审查括号、副作用和类型安全,"#define constrain(value, min, max, target_min, target_max) \",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,Algorithm/pid.cpp,8,函数式宏需审查括号、副作用和类型安全,"#define _constrain(amt, low, high) \",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,device/Can.cpp,30,函数式宏需审查括号、副作用和类型安全,"#define CAN_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,device/Can.cpp,33,函数式宏需审查括号、副作用和类型安全,"#define CAN_DEBUG_PRINT(fmt, ...) ((void)0)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,device/ang_sensor.cpp,22,函数式宏需审查括号、副作用和类型安全,"#define ANG_SENS_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,device/ang_sensor.cpp,25,函数式宏需审查括号、副作用和类型安全,"#define ANG_SENS_DEBUG_PRINT(fmt, ...) ((void)0)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,device/ang_sensor.cpp,29,函数式宏需审查括号、副作用和类型安全,"#define ANG_SPI_CS_ENABLE() gpio_bit_reset(GPIOA, GPIO_PIN_15)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,device/ang_sensor.cpp,31,函数式宏需审查括号、副作用和类型安全,"#define ANG_SPI_CS_DISABLE() gpio_bit_set(GPIOA, GPIO_PIN_15)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,device/ang_sensor.cpp,33,函数式宏需审查括号、副作用和类型安全,"#define DRV_SPI_CS_ENABLE() gpio_bit_reset(GPIOB, GPIO_PIN_14)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,device/ang_sensor.cpp,35,函数式宏需审查括号、副作用和类型安全,"#define DRV_SPI_CS_DISABLE() gpio_bit_set(GPIOB, GPIO_PIN_14)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,main.cpp,22,函数式宏需审查括号、副作用和类型安全,"#define MAIN_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,main.cpp,25,函数式宏需审查括号、副作用和类型安全,"#define MAIN_DEBUG_PRINT(fmt, ...) ((void)0)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,sys/flash.cpp,22,函数式宏需审查括号、副作用和类型安全,"#define EEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,sys/flash.cpp,25,函数式宏需审查括号、副作用和类型安全,"#define EEP_DEBUG_PRINT(fmt, ...) ((void)0)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,sys/flash.cpp,31,函数式宏需审查括号、副作用和类型安全,"#define OTA_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,sys/flash.cpp,34,函数式宏需审查括号、副作用和类型安全,"#define OTA_DEBUG_PRINT(fmt, ...) ((void)0)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,sys/flash.h,15,函数式宏需审查括号、副作用和类型安全,#define ALIGN_4BYTE(addr) ((addr) & 0xFFFFFFFC),open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,sys/health.cpp,22,函数式宏需审查括号、副作用和类型安全,"#define max(a, b, c) \",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,sys/health.h,16,函数式宏需审查括号、副作用和类型安全,#define FLOAT_TO_Q16_16(x) ((q16_16_t)((x) * Q16_16_ONE)),open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,sys/health.h,18,函数式宏需审查括号、副作用和类型安全,#define Q16_16_TO_FLOAT(x) ((float)(x) / Q16_16_ONE),open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,sys/health.h,20,函数式宏需审查括号、副作用和类型安全,"#define Q16_16_MUL(a, b) ((q16_16_t)(((int64_t)(a) * (b)) >> 16))",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,sys/health.h,22,函数式宏需审查括号、副作用和类型安全,"#define Q16_16_SQUARE(x) Q16_16_MUL((x), (x))",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,sys/initial.cpp,23,函数式宏需审查括号、副作用和类型安全,"#define OTA_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,sys/initial.cpp,26,函数式宏需审查括号、副作用和类型安全,"#define OTA_DEBUG_PRINT(fmt, ...) ((void)0)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,sys/initial.cpp,32,函数式宏需审查括号、副作用和类型安全,"#define EEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,sys/initial.cpp,35,函数式宏需审查括号、副作用和类型安全,"#define EEP_DEBUG_PRINT(fmt, ...) ((void)0)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,sys/systick.cpp,47,函数式宏需审查括号、副作用和类型安全,"#define SLEEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
info,AUTO-MACRO-001,Advisory,MISRA C:2012 Rule 20.x,sys/systick.cpp,50,函数式宏需审查括号、副作用和类型安全,"#define SLEEP_DEBUG_PRINT(fmt, ...) ((void)0)",open_review,人工确认是否符合项目编码规范;如合理则记录偏离说明。
1 severity rule_id rule_level standard_ref file line description evidence disposition recommendation
2 warning AUTO-CTRL-002 Advisory MISRA C:2012 Rule 15.5 advisory / structured control flow device/Can.cpp 1124 continue 需避免或说明偏离 continue; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
3 warning AUTO-CTRL-002 Advisory MISRA C:2012 Rule 15.5 advisory / structured control flow device/Can.cpp 1194 continue 需避免或说明偏离 continue; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
4 warning AUTO-CTRL-002 Advisory MISRA C:2012 Rule 15.5 advisory / structured control flow device/Can.cpp 1199 continue 需避免或说明偏离 continue; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
5 warning AUTO-CTRL-002 Advisory MISRA C:2012 Rule 15.5 advisory / structured control flow main.cpp 80 continue 需避免或说明偏离 continue; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
6 warning AUTO-CTRL-002 Advisory MISRA C:2012 Rule 15.5 advisory / structured control flow sys/flash.cpp 693 continue 需避免或说明偏离 continue; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
7 warning AUTO-CTRL-002 Advisory MISRA C:2012 Rule 15.5 advisory / structured control flow sys/systick.cpp 264 continue 需避免或说明偏离 continue; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
8 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 100 printf/格式化输出需确认调试隔离和实时性影响 printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
9 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 161 printf/格式化输出需确认调试隔离和实时性影响 printf("", open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
10 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 195 printf/格式化输出需确认调试隔离和实时性影响 printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
11 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 198 printf/格式化输出需确认调试隔离和实时性影响 printf("", angle_deg, cogging_table[i]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
12 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 203 printf/格式化输出需确认调试隔离和实时性影响 printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
13 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 206 printf/格式化输出需确认调试隔离和实时性影响 printf("", angle_deg, cogging_table_rev[i]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
14 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 211 printf/格式化输出需确认调试隔离和实时性影响 printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
15 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 212 printf/格式化输出需确认调试隔离和实时性影响 printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
16 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 214 printf/格式化输出需确认调试隔离和实时性影响 if (i % 8 == 0) printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
17 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 215 printf/格式化输出需确认调试隔离和实时性影响 printf("", cogging_table[i]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
18 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 216 printf/格式化输出需确认调试隔离和实时性影响 if (i < COGGING_TABLE_SIZE - 1) printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
19 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 217 printf/格式化输出需确认调试隔离和实时性影响 if (i % 8 == 7 || i == COGGING_TABLE_SIZE - 1) printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
20 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 220 printf/格式化输出需确认调试隔离和实时性影响 printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
21 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 223 printf/格式化输出需确认调试隔离和实时性影响 printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
22 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 224 printf/格式化输出需确认调试隔离和实时性影响 printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
23 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 226 printf/格式化输出需确认调试隔离和实时性影响 if (i % 8 == 0) printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
24 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 227 printf/格式化输出需确认调试隔离和实时性影响 printf("", cogging_table_rev[i]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
25 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 228 printf/格式化输出需确认调试隔离和实时性影响 if (i < COGGING_TABLE_SIZE - 1) printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
26 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 229 printf/格式化输出需确认调试隔离和实时性影响 if (i % 8 == 7 || i == COGGING_TABLE_SIZE - 1) printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
27 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 232 printf/格式化输出需确认调试隔离和实时性影响 printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
28 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule Algorithm/FOC.cpp 234 printf/格式化输出需确认调试隔离和实时性影响 printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
29 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule device/Can.cpp 30 printf/格式化输出需确认调试隔离和实时性影响 #define CAN_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
30 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule device/ang_sensor.cpp 22 printf/格式化输出需确认调试隔离和实时性影响 #define ANG_SENS_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
31 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule device/motor.cpp 38 printf/格式化输出需确认调试隔离和实时性影响 printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
32 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule main.cpp 22 printf/格式化输出需确认调试隔离和实时性影响 #define MAIN_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
33 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule sys/flash.cpp 22 printf/格式化输出需确认调试隔离和实时性影响 #define EEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
34 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule sys/flash.cpp 31 printf/格式化输出需确认调试隔离和实时性影响 #define OTA_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
35 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule sys/initial.cpp 23 printf/格式化输出需确认调试隔离和实时性影响 #define OTA_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
36 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule sys/initial.cpp 32 printf/格式化输出需确认调试隔离和实时性影响 #define EEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
37 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule sys/initial.cpp 129 printf/格式化输出需确认调试隔离和实时性影响 snprintf(buffer, bufSize, "", version.major, version.minor, open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
38 warning AUTO-FUNC-002 Advisory MISRA Dir 4.12 / project safety rule sys/systick.cpp 47 printf/格式化输出需确认调试隔离和实时性影响 #define SLEEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
39 warning AUTO-MET-001 Advisory Project metric threshold CC <= 15 Algorithm/FOC.cpp 75 圈复杂度 33 超过建议阈值 15 FOC_Controller::calibrate_cogging_tick open_review 建议人工评审分支完整性;后续允许时再考虑拆分或增加单元测试覆盖。
40 warning AUTO-MET-001 Advisory Project metric threshold CC <= 15 device/Can.cpp 1076 圈复杂度 27 超过建议阈值 15 CAN_transmiter::communication_check open_review 建议人工评审分支完整性;后续允许时再考虑拆分或增加单元测试覆盖。
41 warning AUTO-MET-001 Advisory Project metric threshold CC <= 15 main.cpp 120 圈复杂度 17 超过建议阈值 15 do_task open_review 建议人工评审分支完整性;后续允许时再考虑拆分或增加单元测试覆盖。
42 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 29 数组下标访问需审查边界保护 extern u16 adc_value[3]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
43 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 56 数组下标访问需审查边界保护 float comp = table[idx0] * (1.0f - frac) + table[idx1] * frac; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
44 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 66 数组下标访问需审查边界保护 float FOC_Controller::cog_calib_run_data[6][COGGING_TABLE_SIZE] = {}; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
45 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 67 数组下标访问需审查边界保护 float FOC_Controller::cog_calib_accum[COGGING_TABLE_SIZE] = {}; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
46 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 68 数组下标访问需审查边界保护 u32 FOC_Controller::cog_calib_count[COGGING_TABLE_SIZE] = {}; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
47 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 134 数组下标访问需审查边界保护 cog_calib_accum[idx] += iq; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
48 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 135 数组下标访问需审查边界保护 cog_calib_count[idx]++; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
49 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 152 数组下标访问需审查边界保护 cog_calib_run_data[cog_calib_run][i] = open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
50 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 153 数组下标访问需审查边界保护 (cog_calib_count[i] > 0) ? cog_calib_accum[i] / (float)cog_calib_count[i] : 0.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
51 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 154 数组下标访问需审查边界保护 dc += cog_calib_run_data[cog_calib_run][i]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
52 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 158 数组下标访问需审查边界保护 cog_calib_run_data[cog_calib_run][i] -= dc; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
53 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 180 数组下标访问需审查边界保护 cogging_table[i] = (cog_calib_run_data[0][i] + open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
54 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 181 数组下标访问需审查边界保护 cog_calib_run_data[1][i] + open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
55 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 182 数组下标访问需审查边界保护 cog_calib_run_data[2][i]) / 3.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
56 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 186 数组下标访问需审查边界保护 cogging_table_rev[i] = (cog_calib_run_data[3][i] + open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
57 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 187 数组下标访问需审查边界保护 cog_calib_run_data[4][i] + open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
58 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 188 数组下标访问需审查边界保护 cog_calib_run_data[5][i]) / 3.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
59 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 198 数组下标访问需审查边界保护 printf("", angle_deg, cogging_table[i]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
60 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 206 数组下标访问需审查边界保护 printf("", angle_deg, cogging_table_rev[i]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
61 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 215 数组下标访问需审查边界保护 printf("", cogging_table[i]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
62 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 227 数组下标访问需审查边界保护 printf("", cogging_table_rev[i]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
63 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 326 数组下标访问需审查边界保护 static const float COGGING_TABLE_FWD[COGGING_TABLE_SIZE] = { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
64 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 344 数组下标访问需审查边界保护 static const float COGGING_TABLE_REV[COGGING_TABLE_SIZE] = { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
65 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 409 数组下标访问需审查边界保护 static const u8 sector_lut[8] = {0, 2, 6, 1, 4, 3, 5, 0}; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
66 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 410 数组下标访问需审查边界保护 u8 sector = sector_lut[sector_code]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
67 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 431 数组下标访问需审查边界保护 static const float svpwm_coeff[6][4] = { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
68 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 440 数组下标访问需审查边界保护 float T1 = (svpwm_coeff[sector-1][0] * Ualpha + svpwm_coeff[sector-1][1] * Ubeta) * inv_Udc; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
69 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 441 数组下标访问需审查边界保护 float T2 = (svpwm_coeff[sector-1][2] * Ualpha + svpwm_coeff[sector-1][3] * Ubeta) * inv_Udc; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
70 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.cpp 605 数组下标访问需审查边界保护 float current_vbus = adc_value[2] * (3.3f / 4096.0f) * 11.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
71 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.h 156 数组下标访问需审查边界保护 float cogging_table[COGGING_TABLE_SIZE] = {0}; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
72 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.h 157 数组下标访问需审查边界保护 float cogging_table_rev[COGGING_TABLE_SIZE] = {0}; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
73 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.h 191 数组下标访问需审查边界保护 static float cog_calib_run_data[6][COGGING_TABLE_SIZE]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
74 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.h 192 数组下标访问需审查边界保护 static float cog_calib_accum[COGGING_TABLE_SIZE]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
75 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/FOC.h 193 数组下标访问需审查边界保护 static u32 cog_calib_count[COGGING_TABLE_SIZE]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
76 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/Filter.cpp 65 数组下标访问需审查边界保护 float sorted[size]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
77 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x Algorithm/Filter.cpp 71 数组下标访问需审查边界保护 return sorted[size / 2]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
78 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 31 数组下标访问需审查边界保护 u16 adc_value[3] = {0}; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
79 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 32 数组下标访问需审查边界保护 static volatile u16 adc_current_value[3] = {0}; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
80 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 151 数组下标访问需审查边界保护 mcu_temp_samples[i] = open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
81 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 152 数组下标访问需审查边界保护 (1.43f - adc_value[0] * ADC_SCALE) * TEMP_FACTOR + 35.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
82 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 154 数组下标访问需审查边界保护 currU_samples[i] = current_init; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
83 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 155 数组下标访问需审查边界保护 currV_samples[i] = current_init; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
84 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 156 数组下标访问需审查边界保护 currW_samples[i] = current_init; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
85 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 158 数组下标访问需审查边界保护 vbus_samples[i] = adc_value[2] * ADC_SCALE * VCC_FACTOR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
86 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 160 数组下标访问需审查边界保护 float R_now = (float)adc_value[1] / (4096 - (float)adc_value[1]) * 4700; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
87 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 161 数组下标访问需审查边界保护 drv_temp_samples[i] = open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
88 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 199 数组下标访问需审查边界保护 tempora_sample = currU_samples[idx]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
89 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 203 数组下标访问需审查边界保护 tempora_sample = currV_samples[idx]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
90 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 207 数组下标访问需审查边界保护 tempora_sample = currW_samples[idx]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
91 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 240 数组下标访问需审查边界保护 mcu_temp_samples[mcu_temp_head] = open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
92 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 241 数组下标访问需审查边界保护 (1.43f - adc_value[0] * ADC_SCALE) * TEMP_FACTOR + 35.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
93 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 259 数组下标访问需审查边界保护 float R_now = (float)adc_value[1] / (4096 - (float)adc_value[1]) * 4700; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
94 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 260 数组下标访问需审查边界保护 drv_temp_samples[drv_temp_head] = open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
95 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 283 数组下标访问需审查边界保护 currU_samples[idx] = current_adc_to_ma(adc_current_value[0]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
96 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 284 数组下标访问需审查边界保护 currV_samples[idx] = current_adc_to_ma(adc_current_value[1]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
97 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 285 数组下标访问需审查边界保护 currW_samples[idx] = current_adc_to_ma(adc_current_value[2]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
98 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 299 数组下标访问需审查边界保护 vbus_samples[temp_vbus_head] = adc_value[2] * ADC_SCALE * VCC_FACTOR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
99 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 306 数组下标访问需审查边界保护 if (vbus_samples[mid] > MAX_VCC || vbus_samples[mid] < MIN_VCC) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
100 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 321 数组下标访问需审查边界保护 adc_current_value[0] = adc_inserted_data_read(ADC0, ADC_INSERTED_CHANNEL_1); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
101 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 322 数组下标访问需审查边界保护 adc_current_value[1] = adc_inserted_data_read(ADC0, ADC_INSERTED_CHANNEL_2); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
102 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ADC.cpp 323 数组下标访问需审查边界保护 adc_current_value[2] = adc_inserted_data_read(ADC0, ADC_INSERTED_CHANNEL_3); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
103 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 49 数组下标访问需审查边界保护 uint8_t can_rx_buffer[64]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
104 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 50 数组下标访问需审查边界保护 static uint32_t can_rx_dma_words[16]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
105 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 63 数组下标访问需审查边界保护 u8 data[64]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
106 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 71 数组下标访问需审查边界保护 static can_rx_queue_item_t rx_queue[CAN_RX_QUEUE_SIZE]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
107 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 76 数组下标访问需审查边界保护 static can_tx_queue_item_t tx_queue[CAN_TX_QUEUE_SIZE]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
108 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 82 数组下标访问需审查边界保护 static constexpr u8 CANFD_DLC_LENGTH_TABLE[7] = {12, 16, 20, 24, 32, 48, 64}; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
109 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 238 数组下标访问需审查边界保护 message = rx_message_buffer[rx_buffer_tail]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
110 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 559 数组下标访问需审查边界保护 transmit_message.tx_data[i] = dis(gen); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
111 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 560 数组下标访问需审查边界保护 CAN_DEBUG_PRINT("", transmit_message.tx_data[i]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
112 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 625 数组下标访问需审查边界保护 transmit_message.tx_data[i] = i; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
113 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 650 数组下标访问需审查边界保护 CAN_DEBUG_PRINT("", i, transmit_message.tx_data[i], open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
114 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 651 数组下标访问需审查边界保护 receive_message.rx_data[i]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
115 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 727 数组下标访问需审查边界保护 : ((dlc <= 15U) ? CANFD_DLC_LENGTH_TABLE[dlc - 9U] : 0U); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
116 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 739 数组下标访问需审查边界保护 if (length <= CANFD_DLC_LENGTH_TABLE[i]) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
117 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 740 数组下标访问需审查边界保护 return CANFD_DLC_LENGTH_TABLE[i]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
118 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 760 数组下标访问需审查边界保护 rx_queue[rx_queue_tail].id = message.rx_efid; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
119 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 761 数组下标访问需审查边界保护 rx_queue[rx_queue_tail].length = message.rx_dlen; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
120 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 762 数组下标访问需审查边界保护 if (rx_queue[rx_queue_tail].length > 64) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
121 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 763 数组下标访问需审查边界保护 rx_queue[rx_queue_tail].length = 64; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
122 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 765 数组下标访问需审查边界保护 for (int i = 0; i < rx_queue[rx_queue_tail].length; i++) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
123 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 766 数组下标访问需审查边界保护 rx_queue[rx_queue_tail].data[i] = message.rx_data[i]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
124 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 889 数组下标访问需审查边界保护 *item = rx_queue[rx_queue_head]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
125 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 907 数组下标访问需审查边界保护 tx_queue[tx_queue_tail].message = message; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
126 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 908 数组下标访问需审查边界保护 tx_queue[tx_queue_tail].valid = 1U; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
127 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 933 数组下标访问需审查边界保护 *message = tx_queue[tx_queue_head].message; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
128 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 949 数组下标访问需审查边界保护 *message = tx_queue[tx_queue_head].message; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
129 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 950 数组下标访问需审查边界保护 tx_queue[tx_queue_head].valid = 0U; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
130 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1041 数组下标访问需审查边界保护 transmit_data[10] = open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
131 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1042 数组下标访问需审查边界保护 (transmit_data[10] & ~0x07) | open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
132 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1050 数组下标访问需审查边界保护 transmit_data[29] = test_u16 & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
133 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1051 数组下标访问需审查边界保护 transmit_data[30] = (test_u16 >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
134 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1052 数组下标访问需审查边界保护 transmit_data[31] = cpu_usage; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
135 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1059 数组下标访问需审查边界保护 transmit_data[0] = controller_Mode; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
136 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1134 数组下标访问需审查边界保护 current_message.rx_dlen, current_message.rx_data[0], open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
137 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1135 数组下标访问需审查边界保护 current_message.rx_data[1]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
138 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1141 数组下标访问需审查边界保护 new_node_id = current_message.rx_data[0]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
139 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1151 数组下标访问需审查边界保护 transmit_data[0] = 0x01; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
140 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1152 数组下标访问需审查边界保护 transmit_data[1] = (u8)(new_node_id & 0xFF); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
141 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1153 数组下标访问需审查边界保护 transmit_data[2] = open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
142 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1177 数组下标访问需审查边界保护 transmit_data[0] = 0x00; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
143 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1186 数组下标访问需审查边界保护 transmit_data[0] = 0x00; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
144 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1187 数组下标访问需审查边界保护 transmit_data[1] = (u8)(new_node_id & 0xFF); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
145 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1188 数组下标访问需审查边界保护 transmit_data[2] = (u8)((new_node_id >> 8) & 0xFF); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
146 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1204 数组下标访问需审查边界保护 FOC.control_mode = current_message.rx_data[0]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
147 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1243 数组下标访问需审查边界保护 u8 first_byte = current_message.rx_data[0]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
148 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1244 数组下标访问需审查边界保护 u8 eigth_byte = current_message.rx_data[7]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
149 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1283 数组下标访问需审查边界保护 transmit_data[0] = 0x0A; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
150 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1284 数组下标访问需审查边界保护 transmit_data[1] = 0xAC; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
151 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1420 数组下标访问需审查边界保护 transmit_message.tx_data[i] = *(data + i); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
152 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.cpp 1487 数组下标访问需审查边界保护 transmit_message.tx_data[i] = *(data + i); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
153 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.h 25 数组下标访问需审查边界保护 u8 b[4]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
154 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.h 37 数组下标访问需审查边界保护 buffer[offset] = (u8)(value & 0xFF); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
155 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.h 38 数组下标访问需审查边界保护 buffer[offset + 1] = (u8)((value >> 8) & 0xFF); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
156 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.h 51 数组下标访问需审查边界保护 buffer[offset] = float_union.b[0]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
157 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.h 52 数组下标访问需审查边界保护 buffer[offset + 1] = float_union.b[1]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
158 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.h 53 数组下标访问需审查边界保护 buffer[offset + 2] = float_union.b[2]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
159 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.h 54 数组下标访问需审查边界保护 buffer[offset + 3] = float_union.b[3]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
160 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.h 65 数组下标访问需审查边界保护 short value = (short)(buffer[offset] | (buffer[offset + 1] << 8)); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
161 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.h 77 数组下标访问需审查边界保护 u16 value = (u16)(buffer[offset] | (buffer[offset + 1] << 8)); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
162 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.h 90 数组下标访问需审查边界保护 float_union.b[0] = buffer[offset]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
163 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.h 91 数组下标访问需审查边界保护 float_union.b[1] = buffer[offset + 1]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
164 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.h 92 数组下标访问需审查边界保护 float_union.b[2] = buffer[offset + 2]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
165 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.h 93 数组下标访问需审查边界保护 float_union.b[3] = buffer[offset + 3]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
166 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.h 195 数组下标访问需审查边界保护 u8 transmit_data[64]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
167 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.h 198 数组下标访问需审查边界保护 can_receive_message_struct rx_message_buffer[CAN_RX_BUFFER_SIZE]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
168 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Can.h 353 数组下标访问需审查边界保护 rx_message_buffer[rx_buffer_head] = message; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
169 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Timer.cpp 19 数组下标访问需审查边界保护 extern u16 adc_value[3]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
170 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Timer.cpp 27 数组下标访问需审查边界保护 static const u32 task_schedule_100us[10] = { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
171 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Timer.cpp 41 数组下标访问需审查边界保护 static const u32 task_schedule_1ms[10] = { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
172 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Timer.cpp 48 数组下标访问需审查边界保护 static const u32 task_schedule_10ms[10] = { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
173 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Timer.cpp 53 数组下标访问需审查边界保护 static const u32 task_schedule_100ms[10] = { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
174 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Timer.cpp 152 数组下标访问需审查边界保护 scheduler.taskFlags |= task_schedule_100us[total_us100_counter]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
175 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Timer.cpp 177 数组下标访问需审查边界保护 scheduler.taskFlags |= task_schedule_100ms[ms100_counter]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
176 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Timer.cpp 179 数组下标访问需审查边界保护 scheduler.taskFlags |= task_schedule_10ms[ms10_counter]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
177 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/Timer.cpp 181 数组下标访问需审查边界保护 scheduler.taskFlags |= task_schedule_1ms[ms1_counter]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
178 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/adc.h 21 数组下标访问需审查边界保护 float vbus_samples[ADC_FILTER_SIZE]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
179 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/adc.h 22 数组下标访问需审查边界保护 float currU_samples[ADC_FILTER_SIZE]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
180 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/adc.h 23 数组下标访问需审查边界保护 float currV_samples[ADC_FILTER_SIZE]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
181 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/adc.h 24 数组下标访问需审查边界保护 float currW_samples[ADC_FILTER_SIZE]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
182 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/adc.h 25 数组下标访问需审查边界保护 float mcu_temp_samples[ADC_FILTER_SIZE]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
183 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/adc.h 26 数组下标访问需审查边界保护 float drv_temp_samples[ADC_FILTER_SIZE]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
184 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x device/ang_sensor.h 95 数组下标访问需审查边界保护 float velocity[VEL_FILTER_SIZE] = {0.0f}; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
185 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x main.cpp 169 数组下标访问需审查边界保护 (FOC.*control_functions[FOC.control_mode])(); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
186 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 93 数组下标访问需审查边界保护 FlashEepromStatus status_read[CONFIG_SAVED_NUM + 1] = {FLASH_EEPROM_OK}; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
187 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 94 数组下标访问需审查边界保护 float data[CONFIG_SAVED_NUM] = {0.0f}; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
188 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 96 数组下标访问需审查边界保护 status_read[1] = readFloat(ADDR_CONTROL_MODE, &data[0]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
189 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 97 数组下标访问需审查边界保护 status_read[2] = readFloat(ADDR_VOLTAGE_LIMIT, &data[1]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
190 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 98 数组下标访问需审查边界保护 status_read[3] = readFloat(ADDR_VEL_LIMIT, &data[2]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
191 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 99 数组下标访问需审查边界保护 status_read[4] = readFloat(ADDR_ANGLE, &data[3]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
192 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 100 数组下标访问需审查边界保护 status_read[5] = readFloat(ADDR_TARGET_ANGLE, &data[4]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
193 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 101 数组下标访问需审查边界保护 status_read[6] = readFloat(ADDR_TARGET_VEL, &data[5]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
194 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 105 数组下标访问需审查边界保护 if (status_read[i] == open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
195 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 107 数组下标访问需审查边界保护 data[i - 1] = DEFAULT_VALUE; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
196 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 108 数组下标访问需审查边界保护 } else if (status_read[i] != FLASH_EEPROM_OK) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
197 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 109 数组下标访问需审查边界保护 data[i - 1] = DEFAULT_VALUE; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
198 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 110 数组下标访问需审查边界保护 status_read[0] = status_read[i]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
199 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 114 数组下标访问需审查边界保护 if (status_read[0] == FLASH_EEPROM_OK) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
200 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 141 数组下标访问需审查边界保护 data[i] = DEFAULT_VALUE; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
201 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 149 数组下标访问需审查边界保护 EEPROMStatus = status_read[0]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
202 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 154 数组下标访问需审查边界保护 FOC.control_mode = (u8)data[0]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
203 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 155 数组下标访问需审查边界保护 FOC.limit_voltage = data[1]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
204 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 156 数组下标访问需审查边界保护 FOC.target_current = data[2]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
205 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 157 数组下标访问需审查边界保护 KTH7823.angle_set(data[3]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
206 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 158 数组下标访问需审查边界保护 FOC.target_angle = data[4]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
207 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 159 数组下标访问需审查边界保护 FOC.target_velocity = data[5]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
208 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 415 数组下标访问需审查边界保护 float data[CONFIG_SAVED_NUM] = { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
209 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 429 数组下标访问需审查边界保护 status = writeFloat(ADDR_CONTROL_MODE, data[0]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
210 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 435 数组下标访问需审查边界保护 status = writeFloat(ADDR_VOLTAGE_LIMIT, data[1]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
211 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 441 数组下标访问需审查边界保护 status = writeFloat(ADDR_VEL_LIMIT, data[2]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
212 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 447 数组下标访问需审查边界保护 status = writeFloat(ADDR_ANGLE, data[3]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
213 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 453 数组下标访问需审查边界保护 status = writeFloat(ADDR_TARGET_ANGLE, data[4]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
214 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 459 数组下标访问需审查边界保护 status = writeFloat(ADDR_TARGET_VEL, data[5]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
215 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 466 数组下标访问需审查边界保护 u32 crc_data_words[CONFIG_SAVED_NUM]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
216 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 471 数组下标访问需审查边界保护 memcpy(&crc_data_words[i], &data[i], SIZE_FLOAT); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
217 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 473 数组下标访问需审查边界保护 crc_data_words[i] = crc_data_words[i] & DATA_FLOAT_MASK; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
218 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 507 数组下标访问需审查边界保护 u32 crc_data[2]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
219 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 508 数组下标访问需审查边界保护 crc_data[0] = (u32)node_id; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
220 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 509 数组下标访问需审查边界保护 crc_data[1] = counter; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
221 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 530 数组下标访问需审查边界保护 u32 magic = flash_ptr[NODE_ID_MAGIC_OFFSET / sizeof(u32)]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
222 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 537 数组下标访问需审查边界保护 u16 id_value = (u16)flash_ptr[NODE_ID_VALUE_OFFSET / sizeof(u32)]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
223 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 544 数组下标访问需审查边界保护 u32 write_counter = flash_ptr[NODE_ID_COUNTER_OFFSET / sizeof(u32)]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
224 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 547 数组下标访问需审查边界保护 u32 stored_crc = flash_ptr[NODE_ID_CRC_OFFSET / sizeof(u32)]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
225 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 577 数组下标访问需审查边界保护 u32 write_data[4]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
226 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 578 数组下标访问需审查边界保护 write_data[0] = NODE_ID_MAGIC; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
227 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 579 数组下标访问需审查边界保护 write_data[1] = (u32)node_id; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
228 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 580 数组下标访问需审查边界保护 write_data[2] = counter; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
229 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 581 数组下标访问需审查边界保护 write_data[3] = crc; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
230 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 589 数组下标访问需审查边界保护 fmc_status = fmc_word_program(addr + i * sizeof(u32), write_data[i]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
231 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 795 数组下标访问需审查边界保护 u32 temp_val[OTA_CONFIG_NUM]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
232 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 799 数组下标访问需审查边界保护 temp_val[0] = *flash_ptr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
233 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 800 数组下标访问需审查边界保护 if (temp_val[0] == data) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
234 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 816 数组下标访问需审查边界保护 temp_val[0] = *flash_ptr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
235 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 818 数组下标访问需审查边界保护 temp_val[1] = *flash_ptr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
236 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 820 数组下标访问需审查边界保护 temp_val[2] = *flash_ptr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
237 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 822 数组下标访问需审查边界保护 temp_val[3] = *flash_ptr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
238 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 824 数组下标访问需审查边界保护 temp_val[4] = *flash_ptr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
239 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 826 数组下标访问需审查边界保护 temp_val[5] = *flash_ptr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
240 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 832 数组下标访问需审查边界保护 temp_val[0], temp_val[1], temp_val[2], temp_val[3], open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
241 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 833 数组下标访问需审查边界保护 temp_val[4], temp_val[5]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
242 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 846 数组下标访问需审查边界保护 if (current_addr != addr and temp_val[i] != OTA_NOT_AVAL) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
243 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 847 数组下标访问需审查边界保护 fmc_status = write_ADDRESS(current_addr, temp_val[i]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
244 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 851 数组下标访问需审查边界保护 temp_val[i], current_addr, fmc_status); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
245 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 860 数组下标访问需审查边界保护 temp_val[0] = *flash_ptr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
246 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 862 数组下标访问需审查边界保护 temp_val[1] = *flash_ptr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
247 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 864 数组下标访问需审查边界保护 temp_val[2] = *flash_ptr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
248 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 866 数组下标访问需审查边界保护 temp_val[3] = *flash_ptr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
249 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 868 数组下标访问需审查边界保护 temp_val[4] = *flash_ptr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
250 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 870 数组下标访问需审查边界保护 temp_val[5] = *flash_ptr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
251 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 874 数组下标访问需审查边界保护 temp_val[0], temp_val[1], temp_val[2], temp_val[3], open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
252 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 875 数组下标访问需审查边界保护 temp_val[4], temp_val[5]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
253 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 890 数组下标访问需审查边界保护 NVIC->ICER[i] = 0xFFFFFFFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
254 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/flash.cpp 972 数组下标访问需审查边界保护 uint32_t src_data = src_ptr[offset / 4]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
255 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/health.cpp 63 数组下标访问需审查边界保护 u32 currents[3] = {(u32)(sampler.get_current('') * 1000), open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
256 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/health.cpp 68 数组下标访问需审查边界保护 current_max = max(currents[0], currents[1], currents[2]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
257 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 142 数组下标访问需审查边界保护 u8 versionData[24] = {0}; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
258 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 146 数组下标访问需审查边界保护 versionData[0] = softwareVersion.major & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
259 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 147 数组下标访问需审查边界保护 versionData[1] = (softwareVersion.major >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
260 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 148 数组下标访问需审查边界保护 versionData[2] = softwareVersion.minor & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
261 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 149 数组下标访问需审查边界保护 versionData[3] = (softwareVersion.minor >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
262 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 150 数组下标访问需审查边界保护 versionData[4] = softwareVersion.patch & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
263 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 151 数组下标访问需审查边界保护 versionData[5] = (softwareVersion.patch >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
264 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 152 数组下标访问需审查边界保护 versionData[6] = softwareVersion.build & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
265 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 153 数组下标访问需审查边界保护 versionData[7] = (softwareVersion.build >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
266 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 156 数组下标访问需审查边界保护 versionData[8] = hardwareVersion.major & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
267 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 157 数组下标访问需审查边界保护 versionData[9] = (hardwareVersion.major >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
268 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 158 数组下标访问需审查边界保护 versionData[10] = hardwareVersion.minor & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
269 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 159 数组下标访问需审查边界保护 versionData[11] = (hardwareVersion.minor >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
270 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 160 数组下标访问需审查边界保护 versionData[12] = hardwareVersion.patch & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
271 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 161 数组下标访问需审查边界保护 versionData[13] = (hardwareVersion.patch >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
272 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 162 数组下标访问需审查边界保护 versionData[14] = hardwareVersion.build & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
273 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 163 数组下标访问需审查边界保护 versionData[15] = (hardwareVersion.build >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
274 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 166 数组下标访问需审查边界保护 versionData[16] = bootVersion.major & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
275 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 167 数组下标访问需审查边界保护 versionData[17] = (bootVersion.major >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
276 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 168 数组下标访问需审查边界保护 versionData[18] = bootVersion.minor & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
277 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 169 数组下标访问需审查边界保护 versionData[19] = (bootVersion.minor >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
278 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 170 数组下标访问需审查边界保护 versionData[20] = bootVersion.patch & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
279 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 171 数组下标访问需审查边界保护 versionData[21] = (bootVersion.patch >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
280 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 172 数组下标访问需审查边界保护 versionData[22] = bootVersion.build & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
281 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 173 数组下标访问需审查边界保护 versionData[23] = (bootVersion.build >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
282 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 186 数组下标访问需审查边界保护 char versionStr[32]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
283 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 298 数组下标访问需审查边界保护 u32 temp_val[6]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
284 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 301 数组下标访问需审查边界保护 temp_val[0] = *flash_ptr1; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
285 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 303 数组下标访问需审查边界保护 temp_val[1] = *flash_ptr1; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
286 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 305 数组下标访问需审查边界保护 temp_val[2] = *flash_ptr1; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
287 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 307 数组下标访问需审查边界保护 temp_val[3] = *flash_ptr1; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
288 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 309 数组下标访问需审查边界保护 temp_val[4] = *flash_ptr1; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
289 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 311 数组下标访问需审查边界保护 temp_val[5] = *flash_ptr1; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
290 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 316 数组下标访问需审查边界保护 temp_val[0], temp_val[1], temp_val[2], temp_val[3], temp_val[4], open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
291 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 317 数组下标访问需审查边界保护 temp_val[5]); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
292 info AUTO-ARRAY-001 Advisory MISRA C:2012 Rule 18.x sys/initial.cpp 332 数组下标访问需审查边界保护 u8 transmit_data[2] = {0x0A, 0xAC}; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
293 info AUTO-ASM-001 Required MISRA C:2012 Dir 4.3 / project safety rule device/Can.cpp 709 关中断/低功耗/内联汇编等平台相关指令需审查 __disable_irq(); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
294 info AUTO-ASM-001 Required MISRA C:2012 Dir 4.3 / project safety rule main.cpp 72 关中断/低功耗/内联汇编等平台相关指令需审查 __disable_irq(); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
295 info AUTO-ASM-001 Required MISRA C:2012 Dir 4.3 / project safety rule main.cpp 76 关中断/低功耗/内联汇编等平台相关指令需审查 __enable_irq(); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
296 info AUTO-ASM-001 Required MISRA C:2012 Dir 4.3 / project safety rule main.cpp 93 关中断/低功耗/内联汇编等平台相关指令需审查 __enable_irq(); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
297 info AUTO-ASM-001 Required MISRA C:2012 Dir 4.3 / project safety rule sys/flash.cpp 888 关中断/低功耗/内联汇编等平台相关指令需审查 __disable_irq(); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
298 info AUTO-ASM-001 Required MISRA C:2012 Dir 4.3 / project safety rule sys/flash.cpp 936 关中断/低功耗/内联汇编等平台相关指令需审查 __disable_irq(); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
299 info AUTO-ASM-001 Required MISRA C:2012 Dir 4.3 / project safety rule sys/flash.cpp 954 关中断/低功耗/内联汇编等平台相关指令需审查 __enable_irq(); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
300 info AUTO-ASM-001 Required MISRA C:2012 Dir 4.3 / project safety rule sys/flash.cpp 992 关中断/低功耗/内联汇编等平台相关指令需审查 __enable_irq(); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
301 info AUTO-ASM-001 Required MISRA C:2012 Dir 4.3 / project safety rule sys/flash.cpp 1008 关中断/低功耗/内联汇编等平台相关指令需审查 __enable_irq(); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
302 info AUTO-ASM-001 Required MISRA C:2012 Dir 4.3 / project safety rule sys/systick.cpp 256 关中断/低功耗/内联汇编等平台相关指令需审查 __disable_irq(); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
303 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 40 C 风格强制类型转换需审查必要性和范围 if (!cogging_comp_enabled) return 0.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
304 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 46 C 风格强制类型转换需审查必要性和范围 float index_f = angle / 360.0f * (float)COGGING_TABLE_SIZE; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
305 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 47 C 风格强制类型转换需审查必要性和范围 u16 idx0 = (u16)index_f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
306 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 49 C 风格强制类型转换需审查必要性和范围 float frac = index_f - (float)idx0; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
307 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 53 C 风格强制类型转换需审查必要性和范围 if (rt_velocity < -0.5f) last_table = cogging_table_rev; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
308 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 54 C 风格强制类型转换需审查必要性和范围 else if (rt_velocity > 0.5f) last_table = cogging_table; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
309 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 91 C 风格强制类型转换需审查必要性和范围 if (!cogging_calib_request) return; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
310 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 122 C 风格强制类型转换需审查必要性和范围 if (sample_div < SAMPLE_DIV) return; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
311 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 132 C 风格强制类型转换需审查必要性和范围 u16 idx = (u16)(angle_el / 360.0f * (float)COGGING_TABLE_SIZE); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
312 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 133 C 风格强制类型转换需审查必要性和范围 if (idx >= COGGING_TABLE_SIZE) idx = COGGING_TABLE_SIZE - 1; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
313 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 153 C 风格强制类型转换需审查必要性和范围 (cog_calib_count[i] > 0) ? cog_calib_accum[i] / (float)cog_calib_count[i] : 0.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
314 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 156 C 风格强制类型转换需审查必要性和范围 dc /= (float)COGGING_TABLE_SIZE; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
315 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 197 C 风格强制类型转换需审查必要性和范围 float angle_deg = (float)i / (float)COGGING_TABLE_SIZE * 360.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
316 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 205 C 风格强制类型转换需审查必要性和范围 float angle_deg = (float)i / (float)COGGING_TABLE_SIZE * 360.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
317 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 214 C 风格强制类型转换需审查必要性和范围 if (i % 8 == 0) printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
318 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 216 C 风格强制类型转换需审查必要性和范围 if (i < COGGING_TABLE_SIZE - 1) printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
319 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 217 C 风格强制类型转换需审查必要性和范围 if (i % 8 == 7 || i == COGGING_TABLE_SIZE - 1) printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
320 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 226 C 风格强制类型转换需审查必要性和范围 if (i % 8 == 0) printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
321 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 228 C 风格强制类型转换需审查必要性和范围 if (i < COGGING_TABLE_SIZE - 1) printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
322 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 229 C 风格强制类型转换需审查必要性和范围 if (i % 8 == 7 || i == COGGING_TABLE_SIZE - 1) printf(""); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
323 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 246 C 风格强制类型转换需审查必要性和范围 ((value - min) / (max - min) * (target_max - target_min)) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
324 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 301 C 风格强制类型转换需审查必要性和范围 I_alpha = (2.0f / 3.0f) * current_a - (1.0f / 3.0f) * current_b - open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
325 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 302 C 风格强制类型转换需审查必要性和范围 (1.0f / 3.0f) * current_c; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
326 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 605 C 风格强制类型转换需审查必要性和范围 float current_vbus = adc_value[2] * (3.3f / 4096.0f) * 11.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
327 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 626 C 风格强制类型转换需审查必要性和范围 if ((drop_exceeded || below_absolute) && (!is_shut_down)) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
328 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 695 C 风格强制类型转换需审查必要性和范围 float velocity_error = (target_velocity - rt_velocity) * DIR * REDUCTION_RATIO; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
329 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 782 C 风格强制类型转换需审查必要性和范围 float Uq = vel_inVelAngloop(velocity_error)* DIR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
330 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.cpp 813 C 风格强制类型转换需审查必要性和范围 float velocity_error = (target_velocity - rt_velocity)* DIR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
331 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/FOC.h 260 C 风格强制类型转换需审查必要性和范围 typedef float (FOC_Controller::*FOCFunctionPtr)(void); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
332 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/Filter.cpp 150 C 风格强制类型转换需审查必要性和范围 (void)initial_error_covariance; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
333 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/Filter.cpp 151 C 风格强制类型转换需审查必要性和范围 (void)process_noise; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
334 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/Filter.cpp 152 C 风格强制类型转换需审查必要性和范围 (void)measurement_noise; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
335 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/Filter.cpp 190 C 风格强制类型转换需审查必要性和范围 if (error > 180.0f) error -= 360.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
336 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/Filter.cpp 191 C 风格强制类型转换需审查必要性和范围 else if (error < -180.0f) error += 360.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
337 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/Filter.cpp 196 C 风格强制类型转换需审查必要性和范围 velocity_estimate = velocity_pred + (beta_gain / dt) * error; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
338 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/Filter.h 80 C 风格强制类型转换需审查必要性和范围 P = (1 - K) * P; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
339 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/Filter.h 96 C 风格强制类型转换需审查必要性和范围 P = (1 - K) * P; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
340 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x Algorithm/Filter.h 248 C 风格强制类型转换需审查必要性和范围 (void)initial_error_covariance; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
341 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ADC.cpp 41 C 风格强制类型转换需审查必要性和范围 return (raw_adc * ADC_SCALE + CURRENT_OFFSET) * CURRENT_FACTOR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
342 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ADC.cpp 60 C 风格强制类型转换需审查必要性和范围 dma_data_parameter.periph_addr = (uint32_t)(&ADC_RDATA(ADC0)); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
343 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ADC.cpp 62 C 风格强制类型转换需审查必要性和范围 dma_data_parameter.memory_addr = (uint32_t)(adc_value); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
344 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ADC.cpp 152 C 风格强制类型转换需审查必要性和范围 (1.43f - adc_value[0] * ADC_SCALE) * TEMP_FACTOR + 35.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
345 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ADC.cpp 160 C 风格强制类型转换需审查必要性和范围 float R_now = (float)adc_value[1] / (4096 - (float)adc_value[1]) * 4700; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
346 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ADC.cpp 241 C 风格强制类型转换需审查必要性和范围 (1.43f - adc_value[0] * ADC_SCALE) * TEMP_FACTOR + 35.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
347 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ADC.cpp 243 C 风格强制类型转换需审查必要性和范围 if (mcu_temp_head >= ADC_FILTER_SIZE) mcu_temp_head = 0; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
348 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ADC.cpp 259 C 风格强制类型转换需审查必要性和范围 float R_now = (float)adc_value[1] / (4096 - (float)adc_value[1]) * 4700; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
349 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ADC.cpp 263 C 风格强制类型转换需审查必要性和范围 if (drv_temp_head >= ADC_FILTER_SIZE) drv_temp_head = 0; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
350 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ADC.cpp 301 C 风格强制类型转换需审查必要性和范围 if (temp_vbus_head >= ADC_FILTER_SIZE) temp_vbus_head = 0; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
351 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ADC.cpp 320 C 风格强制类型转换需审查必要性和范围 (void)adc_inserted_data_read(ADC0, ADC_INSERTED_CHANNEL_0); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
352 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 30 C 风格强制类型转换需审查必要性和范围 #define CAN_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
353 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 33 C 风格强制类型转换需审查必要性和范围 #define CAN_DEBUG_PRINT(fmt, ...) ((void)0) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
354 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 103 C 风格强制类型转换需审查必要性和范围 return ((u32)node_id << 16) | (base_id & 0xFFFF); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
355 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 116 C 风格强制类型转换需审查必要性和范围 u16 rx_node_id = (u16)((received_id >> 16) & 0xFFFF); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
356 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 198 C 风格强制类型转换需审查必要性和范围 return (u8)status; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
357 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 317 C 风格强制类型转换需审查必要性和范围 (uint32_t)(&CAN_RFIFOMDATA0(CAN0, CAN_FIFO0)); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
358 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 318 C 风格强制类型转换需审查必要性和范围 dma_rx_parameter.memory_addr = (uint32_t)can_rx_dma_words; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
359 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 514 C 风格强制类型转换需审查必要性和范围 can_filter.filter_list_high = (uint16_t)(DEV_CAN_LOOPBACK_ID >> 13U); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
360 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 516 C 风格强制类型转换需审查必要性和范围 ((uint16_t)(DEV_CAN_LOOPBACK_ID)) << 3U | (1U << 2); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
361 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 646 C 风格强制类型转换需审查必要性和范围 (CAN_FF_STANDARD == receive_message.rx_ff) && open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
362 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 804 C 风格强制类型转换需审查必要性和范围 uint32_t canfd_en = CAN_FDCTL(CAN0) & CAN_FDCTL_FDEN; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
363 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 807 C 风格强制类型转换需审查必要性和范围 message->rx_ff = (uint8_t)(CAN_RFIFOMI_FF & rfifomi); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
364 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 809 C 风格强制类型转换需审查必要性和范围 message->rx_sfid = (uint32_t)(GET_RFIFOMI_SFID(rfifomi)); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
365 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 811 C 风格强制类型转换需审查必要性和范围 message->rx_efid = (uint32_t)(GET_RFIFOMI_EFID(rfifomi)); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
366 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 813 C 风格强制类型转换需审查必要性和范围 message->rx_ft = (uint8_t)(CAN_RFIFOMI_FT & rfifomi); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
367 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 814 C 风格强制类型转换需审查必要性和范围 message->rx_fi = (uint8_t)(GET_RFIFOMP_FI(rfifomp)); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
368 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 815 C 风格强制类型转换需审查必要性和范围 message->fd_flag = (uint8_t)((CAN_RFIFOMP_FDF & rfifomp) >> 7); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
369 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 816 C 风格强制类型转换需审查必要性和范围 dlc = (uint8_t)(GET_RFIFOMP_DLENC(rfifomp)); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
370 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 817 C 风格强制类型转换需审查必要性和范围 if ((canfd_en != 0U) && (message->fd_flag != CAN_FDF_CLASSIC)) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
371 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 819 C 风格强制类型转换需审查必要性和范围 message->fd_brs = (uint8_t)((rfifomp & CAN_RFIFOMP_BRS) >> 5); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
372 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 820 C 风格强制类型转换需审查必要性和范围 message->fd_esi = (uint8_t)((rfifomp & CAN_RFIFOMP_ESI) >> 4); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
373 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 848 C 风格强制类型转换需审查必要性和范围 (uint32_t)(&CAN_RFIFOMDATA0(CAN0, CAN_FIFO0))); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
374 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 849 C 风格强制类型转换需审查必要性和范围 dma_memory_address_config(DMA0, DMA_CH4, (uint32_t)can_rx_dma_words); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
375 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 1015 C 风格强制类型转换需审查必要性和范围 u_current_union.f = sampler.get_current('') * 1000; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
376 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 1016 C 风格强制类型转换需审查必要性和范围 w_current_union.f = sampler.get_current('') * 1000; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
377 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 1017 C 风格强制类型转换需审查必要性和范围 v_current_union.f = sampler.get_current('') * 1000; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
378 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 1051 C 风格强制类型转换需审查必要性和范围 transmit_data[30] = (test_u16 >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
379 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 1102 C 风格强制类型转换需审查必要性和范围 u16 sender_node_id = (u16)((current_message.rx_efid >> 16) & 0xFFFF); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
380 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 1152 C 风格强制类型转换需审查必要性和范围 transmit_data[1] = (u8)(new_node_id & 0xFF); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
381 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 1154 C 风格强制类型转换需审查必要性和范围 (u8)((new_node_id >> 8) & 0xFF); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
382 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 1187 C 风格强制类型转换需审查必要性和范围 transmit_data[1] = (u8)(new_node_id & 0xFF); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
383 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 1188 C 风格强制类型转换需审查必要性和范围 transmit_data[2] = (u8)((new_node_id >> 8) & 0xFF); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
384 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 1279 C 风格强制类型转换需审查必要性和范围 volatile u32 *flash_ptr = (volatile u32 *)n_APP_LATEST_EN_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
385 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 1281 C 风格强制类型转换需审查必要性和范围 flash_ptr = (volatile u32 *)n_APP_LATEST_CHECK_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
386 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 1451 C 风格强制类型转换需审查必要性和范围 if ((CAN_FDCTL(CAN0) & CAN_FDCTL_FDEN) == 0U) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
387 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.cpp 1468 C 风格强制类型转换需审查必要性和范围 if ((length != 0U) && (valid_length == 0U)) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
388 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.h 37 C 风格强制类型转换需审查必要性和范围 buffer[offset] = (u8)(value & 0xFF); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
389 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.h 38 C 风格强制类型转换需审查必要性和范围 buffer[offset + 1] = (u8)((value >> 8) & 0xFF); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
390 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.h 65 C 风格强制类型转换需审查必要性和范围 short value = (short)(buffer[offset] | (buffer[offset + 1] << 8)); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
391 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Can.h 77 C 风格强制类型转换需审查必要性和范围 u16 value = (u16)(buffer[offset] | (buffer[offset + 1] << 8)); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
392 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Timer.cpp 316 C 风格强制类型转换需审查必要性和范围 TIMER_CH0CV(TIMER1) = (uint32_t)(duty_cycle0 * TIMER1_PERIOD); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
393 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Timer.cpp 317 C 风格强制类型转换需审查必要性和范围 TIMER_CH1CV(TIMER1) = (uint32_t)(duty_cycle1 * TIMER1_PERIOD); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
394 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/Timer.cpp 318 C 风格强制类型转换需审查必要性和范围 TIMER_CH2CV(TIMER1) = (uint32_t)(duty_cycle2 * TIMER1_PERIOD); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
395 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.cpp 22 C 风格强制类型转换需审查必要性和范围 #define ANG_SENS_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
396 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.cpp 25 C 风格强制类型转换需审查必要性和范围 #define ANG_SENS_DEBUG_PRINT(fmt, ...) ((void)0) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
397 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.cpp 60 C 风格强制类型转换需审查必要性和范围 dma_init_struct.memory_addr = (uint32_t)0; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
398 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.cpp 64 C 风格强制类型转换需审查必要性和范围 dma_init_struct.periph_addr = (uint32_t)(&SPI_DATA(SPI0)); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
399 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.cpp 74 C 风格强制类型转换需审查必要性和范围 dma_init_struct.memory_addr = (uint32_t)0; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
400 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.cpp 78 C 风格强制类型转换需审查必要性和范围 dma_init_struct.periph_addr = (uint32_t)(&SPI_DATA(SPI0)); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
401 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.cpp 113 C 风格强制类型转换需审查必要性和范围 dma_memory_address_config(DMA0, DMA_CH2, (uint32_t)&tx_data); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
402 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.cpp 119 C 风格强制类型转换需审查必要性和范围 dma_memory_address_config(DMA0, DMA_CH1, (uint32_t)rx_data); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
403 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.cpp 125 C 风格强制类型转换需审查必要性和范围 while ((!spi_dma_tx_complete || !spi_dma_rx_complete) && --timeout) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
404 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.cpp 245 C 风格强制类型转换需审查必要性和范围 float angle_deg = -(float)raw_data * ANGLESENS_FACTOR + ANGLESENS_OFFSET; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
405 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.cpp 256 C 风格强制类型转换需审查必要性和范围 return (float)FAULT_RECEIVE; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
406 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.cpp 294 C 风格强制类型转换需审查必要性和范围 float angle_sensor::getAngle(void) const { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
407 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.cpp 302 C 风格强制类型转换需审查必要性和范围 float angle_sensor::getRawAngle(void) const { return m_cumulativeAngle; } open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
408 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.cpp 308 C 风格强制类型转换需审查必要性和范围 float angle_sensor::getcurrent_sensorangle(void) const{ open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
409 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.h 64 C 风格强制类型转换需审查必要性和范围 float getAngle(void) const; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
410 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.h 69 C 风格强制类型转换需审查必要性和范围 float getRawAngle(void) const; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
411 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x device/ang_sensor.h 74 C 风格强制类型转换需审查必要性和范围 float getcurrent_sensorangle(void) const; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
412 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x main.cpp 22 C 风格强制类型转换需审查必要性和范围 #define MAIN_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
413 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x main.cpp 25 C 风格强制类型转换需审查必要性和范围 #define MAIN_DEBUG_PRINT(fmt, ...) ((void)0) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
414 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x main.cpp 169 C 风格强制类型转换需审查必要性和范围 (FOC.*control_functions[FOC.control_mode])(); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
415 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/config.h 381 C 风格强制类型转换需审查必要性和范围 (TIMER2_PERIOD + 1) * (TIMER2_PRESCALER + 1) / 120000000.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
416 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/config.h 396 C 风格强制类型转换需审查必要性和范围 (TIMER1_PERIOD + 1) * 0.41 - 1; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
417 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/config.h 427 C 风格强制类型转换需审查必要性和范围 while (angle >= 360.0f) angle -= 360.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
418 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/config.h 428 C 风格强制类型转换需审查必要性和范围 while (angle < 0.0f) angle += 360.0f; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
419 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 22 C 风格强制类型转换需审查必要性和范围 #define EEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
420 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 25 C 风格强制类型转换需审查必要性和范围 #define EEP_DEBUG_PRINT(fmt, ...) ((void)0) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
421 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 31 C 风格强制类型转换需审查必要性和范围 #define OTA_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
422 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 34 C 风格强制类型转换需审查必要性和范围 #define OTA_DEBUG_PRINT(fmt, ...) ((void)0) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
423 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 120 C 风格强制类型转换需审查必要性和范围 volatile u32 *flash_ptr = (volatile u32 *)address; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
424 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 136 C 风格强制类型转换需审查必要性和范围 CRC_NUM = crc_block_data_calculate((uint32_t *)data, CONFIG_SAVED_NUM); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
425 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 138 C 风格强制类型转换需审查必要性和范围 *((u32 *)next_address)); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
426 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 139 C 风格强制类型转换需审查必要性和范围 if (CRC_NUM != *((u32 *)next_address)) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
427 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 154 C 风格强制类型转换需审查必要性和范围 FOC.control_mode = (u8)data[0]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
428 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 169 C 风格强制类型转换需审查必要性和范围 FlashEepromStatus FlashEEPROM::read(u8 virtualAddr, u16 *data) const { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
429 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 178 C 风格强制类型转换需审查必要性和范围 u32 data_word = *((u32 *)address); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
430 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 181 C 风格强制类型转换需审查必要性和范围 u8 addr = (u8)(data_word & DATA_ADDR_MASK); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
431 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 185 C 风格强制类型转换需审查必要性和范围 *data = (u16)((data_word & DATA_U16_MASK) >> 16); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
432 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 200 C 风格强制类型转换需审查必要性和范围 FlashEepromStatus FlashEEPROM::readFloat(u8 virtualAddr, float *data) const { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
433 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 210 C 风格强制类型转换需审查必要性和范围 volatile u32 *flash_ptr = (volatile u32 *)address; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
434 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 215 C 风格强制类型转换需审查必要性和范围 u8 addr = (u8)(data_word & DATA_ADDR_MASK); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
435 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 242 C 风格强制类型转换需审查必要性和范围 u32 data_word_to_write = ((u32)data << 16) | (u32)virtualAddr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
436 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 247 C 风格强制类型转换需审查必要性和范围 volatile u32 *flash_ptr = (volatile u32 *)address; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
437 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 250 C 风格强制类型转换需审查必要性和范围 if ((data_read & DATA_ADDR_MASK) == (u32)virtualAddr) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
438 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 255 C 风格强制类型转换需审查必要性和范围 u16 float_data_read = *((u16 *)&data_read); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
439 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 270 C 风格强制类型转换需审查必要性和范围 volatile u32 *flash_ptr = (volatile u32 *)address; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
440 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 316 C 风格强制类型转换需审查必要性和范围 data_word = (data_word & DATA_FLOAT_MASK) | (u32)virtualAddr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
441 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 322 C 风格强制类型转换需审查必要性和范围 volatile u32 *flash_ptr = (volatile u32 *)address; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
442 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 326 C 风格强制类型转换需审查必要性和范围 (u32)virtualAddr) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
443 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 331 C 风格强制类型转换需审查必要性和范围 float float_data_read = *((float *)&data_word_read); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
444 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 346 C 风格强制类型转换需审查必要性和范围 volatile u32 *flash_ptr = (volatile u32 *)address; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
445 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 361 C 风格强制类型转换需审查必要性和范围 u32 data_word_c = *((u32 *)next_address); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
446 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 363 C 风格强制类型转换需审查必要性和范围 float float_data = *((float *)&data_word_c); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
447 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 416 C 风格强制类型转换需审查必要性和范围 (float)FOC.control_mode, FOC.limit_voltage, open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
448 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 508 C 风格强制类型转换需审查必要性和范围 crc_data[0] = (u32)node_id; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
449 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 527 C 风格强制类型转换需审查必要性和范围 volatile u32 *flash_ptr = (volatile u32 *)addr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
450 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 537 C 风格强制类型转换需审查必要性和范围 u16 id_value = (u16)flash_ptr[NODE_ID_VALUE_OFFSET / sizeof(u32)]; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
451 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 579 C 风格强制类型转换需审查必要性和范围 write_data[1] = (u32)node_id; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
452 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 627 C 风格强制类型转换需审查必要性和范围 FlashEepromStatus FlashEEPROM::readNodeId(u16 *node_id) const { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
453 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 730 C 风格强制类型转换需审查必要性和范围 volatile u32 *flash_ptr = (volatile u32 *)address; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
454 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 742 C 风格强制类型转换需审查必要性和范围 if (*((u32 *)next_address) != CRC_NUM) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
455 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 747 C 风格强制类型转换需审查必要性和范围 *((u32 *)next_address)); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
456 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 768 C 风格强制类型转换需审查必要性和范围 if (CRC_NUM == *((u32 *)next_address)) { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
457 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 796 C 风格强制类型转换需审查必要性和范围 volatile u32 *flash_ptr = (volatile u32 *)addr; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
458 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 815 C 风格强制类型转换需审查必要性和范围 flash_ptr = (volatile u32 *)n_APP_LATEST_AVAL_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
459 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 817 C 风格强制类型转换需审查必要性和范围 flash_ptr = (volatile u32 *)n_APP_BACKUP_AVAL_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
460 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 819 C 风格强制类型转换需审查必要性和范围 flash_ptr = (volatile u32 *)n_APP_LATEST_EN_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
461 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 821 C 风格强制类型转换需审查必要性和范围 flash_ptr = (volatile u32 *)n_APP_BACKUP_EN_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
462 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 823 C 风格强制类型转换需审查必要性和范围 flash_ptr = (volatile u32 *)n_APP_LATEST_CHECK_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
463 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 825 C 风格强制类型转换需审查必要性和范围 flash_ptr = (volatile u32 *)n_APP_BACKUP_CHECK_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
464 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 859 C 风格强制类型转换需审查必要性和范围 flash_ptr = (volatile u32 *)n_APP_LATEST_AVAL_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
465 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 861 C 风格强制类型转换需审查必要性和范围 flash_ptr = (volatile u32 *)n_APP_BACKUP_AVAL_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
466 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 863 C 风格强制类型转换需审查必要性和范围 flash_ptr = (volatile u32 *)n_APP_LATEST_EN_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
467 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 865 C 风格强制类型转换需审查必要性和范围 flash_ptr = (volatile u32 *)n_APP_BACKUP_EN_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
468 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 867 C 风格强制类型转换需审查必要性和范围 flash_ptr = (volatile u32 *)n_APP_LATEST_CHECK_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
469 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 869 C 风格强制类型转换需审查必要性和范围 flash_ptr = (volatile u32 *)n_APP_BACKUP_CHECK_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
470 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 911 C 风格强制类型转换需审查必要性和范围 uint32_t msp_value = *(__IO uint32_t *)BOOTLOADER_START_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
471 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 912 C 风格强制类型转换需审查必要性和范围 uint32_t reset_handler = *(__IO uint32_t *)(BOOTLOADER_START_ADDR + 4); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
472 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 913 C 风格强制类型转换需审查必要性和范围 typedef void (*AppEntryFunc)(void); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
473 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 914 C 风格强制类型转换需审查必要性和范围 AppEntryFunc app_entry = (AppEntryFunc)reset_handler; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
474 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 962 C 风格强制类型转换需审查必要性和范围 const uint32_t *src_ptr = (const uint32_t *)APPLATEST_START_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
475 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 963 C 风格强制类型转换需审查必要性和范围 uint32_t *dst_ptr = (uint32_t *)APPBACK_START_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
476 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 969 C 风格强制类型转换需审查必要性和范围 (uint32_t *)APPLATEST_START_ADDR, APP_MAX_SIZE / 4); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
477 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 1012 C 风格强制类型转换需审查必要性和范围 uint32_t dst_crc = crc_block_data_calculate((uint32_t *)APPBACK_START_ADDR, open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
478 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.cpp 1020 C 风格强制类型转换需审查必要性和范围 return (fmc_state_enum)0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
479 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.h 15 C 风格强制类型转换需审查必要性和范围 #define ALIGN_4BYTE(addr) ((addr) & 0xFFFFFFFC) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
480 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.h 78 C 风格强制类型转换需审查必要性和范围 FlashEepromStatus read(u8 virtualAddr, u16 *data) const; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
481 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.h 94 C 风格强制类型转换需审查必要性和范围 FlashEepromStatus readFloat(u8 virtualAddr, float *data) const; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
482 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/flash.h 135 C 风格强制类型转换需审查必要性和范围 FlashEepromStatus readNodeId(u16 *node_id) const; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
483 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/health.cpp 38 C 风格强制类型转换需审查必要性和范围 int drv_temp = (int)sampler.get_drv_temp(); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
484 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/health.cpp 39 C 风格强制类型转换需审查必要性和范围 int mcu_temp = (int)sampler.get_mcu_temp(); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
485 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/health.cpp 63 C 风格强制类型转换需审查必要性和范围 u32 currents[3] = {(u32)(sampler.get_current('') * 1000), open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
486 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/health.cpp 64 C 风格强制类型转换需审查必要性和范围 (u32)(sampler.get_current('') * 1000), open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
487 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/health.cpp 65 C 风格强制类型转换需审查必要性和范围 (u32)(sampler.get_current('') * 1000)}; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
488 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/health.h 16 C 风格强制类型转换需审查必要性和范围 #define FLOAT_TO_Q16_16(x) ((q16_16_t)((x) * Q16_16_ONE)) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
489 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/health.h 18 C 风格强制类型转换需审查必要性和范围 #define Q16_16_TO_FLOAT(x) ((float)(x) / Q16_16_ONE) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
490 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/health.h 20 C 风格强制类型转换需审查必要性和范围 #define Q16_16_MUL(a, b) ((q16_16_t)(((int64_t)(a) * (b)) >> 16)) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
491 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/health.h 22 C 风格强制类型转换需审查必要性和范围 #define Q16_16_SQUARE(x) Q16_16_MUL((x), (x)) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
492 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 23 C 风格强制类型转换需审查必要性和范围 #define OTA_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
493 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 26 C 风格强制类型转换需审查必要性和范围 #define OTA_DEBUG_PRINT(fmt, ...) ((void)0) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
494 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 32 C 风格强制类型转换需审查必要性和范围 #define EEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
495 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 35 C 风格强制类型转换需审查必要性和范围 #define EEP_DEBUG_PRINT(fmt, ...) ((void)0) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
496 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 147 C 风格强制类型转换需审查必要性和范围 versionData[1] = (softwareVersion.major >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
497 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 149 C 风格强制类型转换需审查必要性和范围 versionData[3] = (softwareVersion.minor >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
498 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 151 C 风格强制类型转换需审查必要性和范围 versionData[5] = (softwareVersion.patch >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
499 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 153 C 风格强制类型转换需审查必要性和范围 versionData[7] = (softwareVersion.build >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
500 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 157 C 风格强制类型转换需审查必要性和范围 versionData[9] = (hardwareVersion.major >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
501 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 159 C 风格强制类型转换需审查必要性和范围 versionData[11] = (hardwareVersion.minor >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
502 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 161 C 风格强制类型转换需审查必要性和范围 versionData[13] = (hardwareVersion.patch >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
503 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 163 C 风格强制类型转换需审查必要性和范围 versionData[15] = (hardwareVersion.build >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
504 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 167 C 风格强制类型转换需审查必要性和范围 versionData[17] = (bootVersion.major >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
505 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 169 C 风格强制类型转换需审查必要性和范围 versionData[19] = (bootVersion.minor >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
506 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 171 C 风格强制类型转换需审查必要性和范围 versionData[21] = (bootVersion.patch >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
507 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 173 C 风格强制类型转换需审查必要性和范围 versionData[23] = (bootVersion.build >> 8) & 0xFF; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
508 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 224 C 风格强制类型转换需审查必要性和范围 int fputc(int ch, FILE *f) throw() { open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
509 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 225 C 风格强制类型转换需审查必要性和范围 usart_data_transmit(EVAL_COM0, (u8)ch); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
510 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 300 C 风格强制类型转换需审查必要性和范围 volatile u32 *flash_ptr1 = (volatile u32 *)n_APP_LATEST_AVAL_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
511 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 302 C 风格强制类型转换需审查必要性和范围 flash_ptr1 = (volatile u32 *)n_APP_BACKUP_AVAL_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
512 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 304 C 风格强制类型转换需审查必要性和范围 flash_ptr1 = (volatile u32 *)n_APP_LATEST_EN_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
513 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 306 C 风格强制类型转换需审查必要性和范围 flash_ptr1 = (volatile u32 *)n_APP_BACKUP_EN_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
514 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 308 C 风格强制类型转换需审查必要性和范围 flash_ptr1 = (volatile u32 *)n_APP_LATEST_CHECK_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
515 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 310 C 风格强制类型转换需审查必要性和范围 flash_ptr1 = (volatile u32 *)n_APP_BACKUP_CHECK_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
516 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 321 C 风格强制类型转换需审查必要性和范围 volatile u32 *flash_ptr = (volatile u32 *)n_APP_LATEST_CHECK_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
517 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 336 C 风格强制类型转换需审查必要性和范围 flash_ptr = (volatile u32 *)n_APP_BACKUP_AVAL_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
518 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/initial.cpp 338 C 风格强制类型转换需审查必要性和范围 flash_ptr = (volatile u32 *)n_APP_BACKUP_CHECK_ADDR; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
519 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/systick.cpp 47 C 风格强制类型转换需审查必要性和范围 #define SLEEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
520 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/systick.cpp 50 C 风格强制类型转换需审查必要性和范围 #define SLEEP_DEBUG_PRINT(fmt, ...) ((void)0) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
521 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/systick.cpp 138 C 风格强制类型转换需审查必要性和范围 uint64_t busy_64 = (uint64_t)busy_cycles_accum * 100U; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
522 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/systick.cpp 139 C 风格强制类型转换需审查必要性和范围 uint32_t busy_percent = (uint32_t)(busy_64 / SystemCoreClock); open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
523 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/systick.cpp 143 C 风格强制类型转换需审查必要性和范围 cpu_usage = (uint8_t)busy_percent; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
524 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/systick.cpp 260 C 风格强制类型转换需审查必要性和范围 volatile u32 *flash_ptr = (volatile u32 *)address; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
525 info AUTO-CAST-001 Required MISRA C:2012 Rule 10.x / MISRA C++ 5-2-x sys/systick.cpp 284 C 风格强制类型转换需审查必要性和范围 volatile u32 *flash_ptr = (volatile u32 *)address; open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
526 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x Algorithm/FOC.cpp 242 函数式宏需审查括号、副作用和类型安全 #define _constrain(amt, low, high) \ open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
527 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x Algorithm/FOC.cpp 245 函数式宏需审查括号、副作用和类型安全 #define constrain(value, min, max, target_min, target_max) \ open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
528 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x Algorithm/pid.cpp 8 函数式宏需审查括号、副作用和类型安全 #define _constrain(amt, low, high) \ open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
529 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x device/Can.cpp 30 函数式宏需审查括号、副作用和类型安全 #define CAN_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
530 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x device/Can.cpp 33 函数式宏需审查括号、副作用和类型安全 #define CAN_DEBUG_PRINT(fmt, ...) ((void)0) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
531 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x device/ang_sensor.cpp 22 函数式宏需审查括号、副作用和类型安全 #define ANG_SENS_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
532 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x device/ang_sensor.cpp 25 函数式宏需审查括号、副作用和类型安全 #define ANG_SENS_DEBUG_PRINT(fmt, ...) ((void)0) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
533 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x device/ang_sensor.cpp 29 函数式宏需审查括号、副作用和类型安全 #define ANG_SPI_CS_ENABLE() gpio_bit_reset(GPIOA, GPIO_PIN_15) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
534 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x device/ang_sensor.cpp 31 函数式宏需审查括号、副作用和类型安全 #define ANG_SPI_CS_DISABLE() gpio_bit_set(GPIOA, GPIO_PIN_15) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
535 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x device/ang_sensor.cpp 33 函数式宏需审查括号、副作用和类型安全 #define DRV_SPI_CS_ENABLE() gpio_bit_reset(GPIOB, GPIO_PIN_14) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
536 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x device/ang_sensor.cpp 35 函数式宏需审查括号、副作用和类型安全 #define DRV_SPI_CS_DISABLE() gpio_bit_set(GPIOB, GPIO_PIN_14) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
537 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x main.cpp 22 函数式宏需审查括号、副作用和类型安全 #define MAIN_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
538 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x main.cpp 25 函数式宏需审查括号、副作用和类型安全 #define MAIN_DEBUG_PRINT(fmt, ...) ((void)0) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
539 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x sys/flash.cpp 22 函数式宏需审查括号、副作用和类型安全 #define EEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
540 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x sys/flash.cpp 25 函数式宏需审查括号、副作用和类型安全 #define EEP_DEBUG_PRINT(fmt, ...) ((void)0) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
541 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x sys/flash.cpp 31 函数式宏需审查括号、副作用和类型安全 #define OTA_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
542 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x sys/flash.cpp 34 函数式宏需审查括号、副作用和类型安全 #define OTA_DEBUG_PRINT(fmt, ...) ((void)0) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
543 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x sys/flash.h 15 函数式宏需审查括号、副作用和类型安全 #define ALIGN_4BYTE(addr) ((addr) & 0xFFFFFFFC) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
544 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x sys/health.cpp 22 函数式宏需审查括号、副作用和类型安全 #define max(a, b, c) \ open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
545 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x sys/health.h 16 函数式宏需审查括号、副作用和类型安全 #define FLOAT_TO_Q16_16(x) ((q16_16_t)((x) * Q16_16_ONE)) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
546 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x sys/health.h 18 函数式宏需审查括号、副作用和类型安全 #define Q16_16_TO_FLOAT(x) ((float)(x) / Q16_16_ONE) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
547 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x sys/health.h 20 函数式宏需审查括号、副作用和类型安全 #define Q16_16_MUL(a, b) ((q16_16_t)(((int64_t)(a) * (b)) >> 16)) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
548 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x sys/health.h 22 函数式宏需审查括号、副作用和类型安全 #define Q16_16_SQUARE(x) Q16_16_MUL((x), (x)) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
549 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x sys/initial.cpp 23 函数式宏需审查括号、副作用和类型安全 #define OTA_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
550 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x sys/initial.cpp 26 函数式宏需审查括号、副作用和类型安全 #define OTA_DEBUG_PRINT(fmt, ...) ((void)0) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
551 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x sys/initial.cpp 32 函数式宏需审查括号、副作用和类型安全 #define EEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
552 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x sys/initial.cpp 35 函数式宏需审查括号、副作用和类型安全 #define EEP_DEBUG_PRINT(fmt, ...) ((void)0) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
553 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x sys/systick.cpp 47 函数式宏需审查括号、副作用和类型安全 #define SLEEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
554 info AUTO-MACRO-001 Advisory MISRA C:2012 Rule 20.x sys/systick.cpp 50 函数式宏需审查括号、副作用和类型安全 #define SLEEP_DEBUG_PRINT(fmt, ...) ((void)0) open_review 人工确认是否符合项目编码规范;如合理则记录偏离说明。
@@ -0,0 +1,200 @@
file,function,start_line,end_line,cyclomatic_complexity,risk
Algorithm/FOC.cpp,FOC_Controller::calibrate_cogging_tick,75,238,33,high
device/Can.cpp,CAN_transmiter::communication_check,1076,1300,27,high
main.cpp,do_task,120,205,17,high
Algorithm/FOC.cpp,FOC_Controller::setSVPWM_PhaseVoltage,392,490,15,medium
sys/flash.cpp,FlashEEPROM::writeFloat,308,383,12,medium
sys/health.cpp,ThermalController::update,35,94,12,medium
device/Can.cpp,can_loopback_test,597,665,11,medium
device/Can.cpp,CAN_transmiter::CANFD_AsyncSend,1448,1504,10,low
sys/flash.cpp,FlashEEPROM::read_saved_system_config,90,161,10,low
sys/flash.cpp,FlashEEPROM::write,237,300,10,low
sys/flash.cpp,FlashEEPROM::writeNodeId,657,717,10,low
sys/flash.cpp,move_app_data,928,1030,10,low
device/Can.cpp,canfd_loopback_test,534,589,9,low
sys/flash.cpp,FlashEEPROM::save_system_config,413,482,9,low
sys/flash.cpp,OTA_SET,792,879,9,low
sys/health.cpp,power_manage,113,149,9,low
device/ADC.cpp,sampler::get_current,194,219,8,low
sys/flash.cpp,FlashEEPROM::writeCRC,724,776,8,low
sys/systick.cpp,app_prepare_deep_sleep,244,298,8,low
device/Timer.cpp,TIMER2_IRQHandler,134,184,7,low
sys/initial.cpp,get_reset_cause,256,290,7,low
Algorithm/FOC.cpp,FOC_Controller::fast_voltage_check,603,642,6,low
device/Can.cpp,CAN_transmiter::CAN_AsyncSend,1399,1440,6,low
sys/flash.cpp,read_node_id_struct,521,558,6,low
sys/initial.cpp,OTA_initial,296,351,6,low
Algorithm/Filter.cpp,EncoderAngleKalman::update,162,200,5,low
device/Can.cpp,CAN_RX_ReadMetadata,800,824,5,low
device/Can.cpp,DMA0_Channel4_IRQHandler,1355,1383,5,low
sys/flash.cpp,FlashEEPROM::read,169,192,5,low
sys/flash.cpp,FlashEEPROM::readFloat,200,229,5,low
Algorithm/FOC.cpp,FOC_Controller::get_cogging_compensation,39,59,4,low
Algorithm/FOC.cpp,FOC_Controller::angle_control_with_velocity_limit,753,796,4,low
device/ADC.cpp,sampler::update_mcu_temp,238,252,4,low
device/ADC.cpp,sampler::update_drv_temp,257,272,4,low
device/ADC.cpp,sampler::update_vbus_voltage,297,311,4,low
device/Can.cpp,CANFD_NormalizeLength,735,744,4,low
device/Can.cpp,CAN_RX_QueuePushFromIsr,758,773,4,low
device/Can.cpp,CAN_RX_PumpFifo0,858,875,4,low
device/Can.cpp,CAN_TX_ServiceQueue,975,990,4,low
device/Can.cpp,CAN0_RX0_IRQHandler,1330,1349,4,low
device/ang_sensor.cpp,angle_sensor::update,263,288,4,low
main.cpp,main,60,86,4,low
sys/flash.cpp,write_node_id_struct,567,599,4,low
Algorithm/FOC.cpp,FOC_Controller::resume_from_thermal,517,523,3,low
Algorithm/FOC.cpp,FOC_Controller::drv_hold,532,541,3,low
Algorithm/FOC.cpp,FOC_Controller::current_control,725,744,3,low
device/ADC.cpp,sampler::update_current,277,292,3,low
device/Can.cpp,CAN_transmiter::load_node_id_from_flash,151,175,3,low
device/Can.cpp,CAN_transmiter::save_node_id_to_flash,185,200,3,low
device/Can.cpp,CAN_transmiter::check_silent_mode,270,278,3,low
device/Can.cpp,can_config,341,395,3,low
device/Can.cpp,can_loopback_init,480,526,3,low
device/Can.cpp,CANFD_DlcToLength,725,728,3,low
device/Can.cpp,CAN_TX_HasEmptyMailbox,789,793,3,low
device/Can.cpp,CAN_RX_StartPayloadDma,831,852,3,low
device/Can.cpp,CAN_TX_QueuePush,903,922,3,low
device/ang_sensor.cpp,angle_sensor::read_sensorAngle,236,257,3,low
sys/config.h,normalizeAngle360,426,430,3,low
sys/flash.cpp,FlashEEPROM::format,390,407,3,low
sys/flash.cpp,FlashEEPROM::readNodeId,627,646,3,low
sys/systick.cpp,systick_config,108,120,3,low
Algorithm/FOC.cpp,FOC_Controller::update_power,568,577,2,low
Algorithm/FOC.cpp,FOC_Controller::velocity_control,693,719,2,low
Algorithm/FOC.cpp,FOC_Controller::MIT_Mode,805,842,2,low
Algorithm/Filter.h,update,90,105,2,low
Algorithm/pid.cpp,PIDController::operator,23,53,2,low
device/ADC.cpp,sampler::init,140,166,2,low
device/Can.cpp,CAN_transmiter::is_message_for_me,115,118,2,low
device/Can.cpp,CAN_transmiter::set_node_id,135,140,2,low
device/Can.cpp,CAN_transmiter::dequeue_rx_message,236,243,2,low
device/Can.cpp,CAN_RX_QueuePop,882,896,2,low
device/Can.cpp,CAN_TX_QueuePeek,929,938,2,low
device/Can.cpp,CAN_TX_QueuePop,945,957,2,low
device/Can.cpp,CAN_TX_DisableTmeIfQueueEmpty,963,969,2,low
device/Can.cpp,CAN_transmiter::CANFD_all_Send,1025,1069,2,low
device/Can.cpp,CAN0_TX_IRQHandler,1509,1513,2,low
device/Can.h,enqueue_rx_message_from_isr,351,357,2,low
device/Timer.cpp,TIMER1_IRQHandler,281,285,2,low
device/Timer.cpp,Set_Pwm,296,303,2,low
sys/flash.cpp,FlashEEPROM::init,68,82,2,low
sys/flash.cpp,FlashEEPROM::read_angle,488,494,2,low
sys/flash.cpp,FlashEEPROM::eraseNodeId,605,620,2,low
sys/flash.cpp,jumpToBOOT,886,921,2,low
sys/initial.cpp,fputc,224,229,2,low
sys/systick.cpp,delay_1s,156,161,2,low
sys/systick.cpp,delay_1ms,169,174,2,low
sys/systick.cpp,delay_decrement,182,186,2,low
sys/systick.cpp,busy_task_enter,198,202,2,low
sys/systick.cpp,busy_task_exit,207,211,2,low
sys/systick.cpp,system_soft_reset,225,236,2,low
Algorithm/FOC.cpp,calibrate_zero_position,253,274,1,low
Algorithm/FOC.cpp,FOC_Controller::init,322,375,1,low
Algorithm/FOC.cpp,FOC_Controller::shut_down,496,500,1,low
Algorithm/FOC.cpp,FOC_Controller::shut_down_thermal,506,511,1,low
Algorithm/FOC.cpp,FOC_Controller::drv_stop,528,528,1,low
Algorithm/FOC.cpp,FOC_Controller::PWM_out,547,551,1,low
Algorithm/FOC.cpp,FOC_Controller::resume,558,563,1,low
Algorithm/FOC.cpp,FOC_Controller::velocity_open_loop,650,664,1,low
Algorithm/FOC.cpp,FOC_Controller::angle_control,672,685,1,low
Algorithm/FOC.h,update_pid_limits,226,231,1,low
Algorithm/Filter.cpp,medium_filter,63,72,1,low
Algorithm/Filter.cpp,kalman,93,93,1,low
Algorithm/Filter.cpp,EncoderVelocityKalman::update,101,108,1,low
Algorithm/Filter.cpp,EncoderVelocityKalman::getVelocity,114,114,1,low
Algorithm/Filter.cpp,EncoderVelocityKalman::setProcessNoise,121,123,1,low
Algorithm/Filter.cpp,EncoderVelocityKalman::setMeasurementNoise,130,132,1,low
Algorithm/Filter.cpp,last_update_count,149,153,1,low
Algorithm/Filter.cpp,EncoderAngleKalman::getAngle,206,206,1,low
Algorithm/Filter.cpp,EncoderAngleKalman::getVelocity,211,211,1,low
Algorithm/Filter.cpp,EncoderAngleKalman::setProcessNoise,218,220,1,low
Algorithm/Filter.cpp,EncoderAngleKalman::setMeasurementNoise,227,229,1,low
Algorithm/Filter.cpp,CurrentKalman::update,259,261,1,low
Algorithm/Filter.cpp,CurrentKalman::getCurrent,267,267,1,low
Algorithm/Filter.cpp,CurrentKalman::setProcessNoise,274,274,1,low
Algorithm/Filter.cpp,CurrentKalman::setMeasurementNoise,281,283,1,low
Algorithm/Filter.h,R,56,56,1,low
Algorithm/Filter.h,predict,63,66,1,low
Algorithm/Filter.h,update,74,83,1,low
Algorithm/Filter.h,getState,111,111,1,low
Algorithm/Filter.h,setProcessNoise,118,118,1,low
Algorithm/Filter.h,setMeasurementNoise,125,125,1,low
Algorithm/Filter.h,resetCovariance,132,132,1,low
Algorithm/Filter.h,getCovariance,138,138,1,low
Algorithm/Filter.h,getProcessNoise,144,144,1,low
Algorithm/Filter.h,init,187,191,1,low
Algorithm/Filter.h,getstate,239,239,1,low
Algorithm/Filter.h,init,247,254,1,low
Algorithm/Filter.h,init,296,300,1,low
Algorithm/pid.cpp,error_prev,20,20,1,low
Algorithm/pid.cpp,PIDController::set_PID,63,67,1,low
Algorithm/pid.cpp,PIDController::set_P,75,77,1,low
Algorithm/pid.cpp,PIDController::set_limit,85,85,1,low
Algorithm/pid.cpp,PIDController::reset,92,96,1,low
Algorithm/pid.cpp,PIDController::reset_integral,103,103,1,low
device/ADC.cpp,current_adc_to_ma,40,42,1,low
device/ADC.cpp,dma_config,50,75,1,low
device/ADC.cpp,adc_config,83,136,1,low
device/ADC.cpp,sampler::get_mcu_temp,172,174,1,low
device/ADC.cpp,sampler::get_drv_temp,183,185,1,low
device/ADC.cpp,sampler::get_vbus_voltage,228,230,1,low
device/Can.cpp,CAN_transmiter::build_can_id,102,104,1,low
device/Can.cpp,CAN_transmiter::get_node_id,126,126,1,low
device/Can.cpp,CAN_transmiter::is_rx_buffer_full,212,214,1,low
device/Can.cpp,CAN_transmiter::is_rx_buffer_empty,223,225,1,low
device/Can.cpp,CAN_transmiter::enter_silent_mode,256,260,1,low
device/Can.cpp,CAN_transmiter::is_in_silent_mode,265,265,1,low
device/Can.cpp,can_gpio_init,286,302,1,low
device/Can.cpp,can_dma_init,310,333,1,low
device/Can.cpp,canfd_config,403,472,1,low
device/Can.cpp,CAN_transmiter::init,671,701,1,low
device/Can.cpp,CAN_EnterCritical,707,711,1,low
device/Can.cpp,CAN_ExitCritical,718,718,1,low
device/Can.cpp,CANFD_WordCount,751,751,1,low
device/Can.cpp,CAN_RX_ReleaseFifo0,775,775,1,low
device/Can.cpp,CAN_RX_Fifo0PendingCount,781,783,1,low
device/Can.cpp,CAN_transmiter::update,995,1018,1,low
device/Can.cpp,CAN_transmiter::CAN_Sleep,1307,1311,1,low
device/Can.cpp,CAN_transmiter::CAN_Wakeup,1318,1324,1,low
device/Can.cpp,DMA0_Channel5_IRQHandler,1389,1391,1,low
device/Can.h,pack_u16_to_bytes,36,39,1,low
device/Can.h,unpack_bytes_to_short,64,67,1,low
device/Can.h,unpack_bytes_to_u16,76,79,1,low
device/Can.h,unpack_bytes_to_float,88,95,1,low
device/Timer.cpp,nvic_config,63,70,1,low
device/Timer.cpp,TIMER2_config,78,111,1,low
device/Timer.cpp,User_timer_init,117,122,1,low
device/Timer.cpp,timer1_gpio_config,189,208,1,low
device/Timer.cpp,timer1_pwm_config,213,274,1,low
device/Timer.cpp,Set_3Pwm,314,319,1,low
device/ang_sensor.cpp,spi_dma_init,50,95,1,low
device/ang_sensor.cpp,KTH7823_gpio_init,166,184,1,low
device/ang_sensor.cpp,KTH7823_spi_init,191,208,1,low
device/ang_sensor.cpp,angle_sensor::init,214,219,1,low
device/ang_sensor.cpp,angle_sensor::angle_set,226,230,1,low
device/ang_sensor.cpp,angle_sensor::getAngle,294,296,1,low
device/ang_sensor.cpp,angle_sensor::getRawAngle,302,302,1,low
device/ang_sensor.cpp,angle_sensor::getcurrent_sensorangle,308,310,1,low
device/motor.cpp,motor_init,16,31,1,low
device/motor.cpp,motor_reset,36,40,1,low
device/motor.cpp,motor_sleep,45,49,1,low
device/motor.cpp,motor_resume,54,58,1,low
main.cpp,hardware_init,92,113,1,low
sys/flash.cpp,write_ADDRESS,48,57,1,low
sys/flash.cpp,calculate_node_id_crc,506,512,1,low
sys/health.cpp,angsens_MG_check,99,103,1,low
sys/health.h,recoveryRate,53,53,1,low
sys/health.h,reset,63,66,1,low
sys/initial.cpp,VersionManager::getSoftwareVersion,55,57,1,low
sys/initial.cpp,VersionManager::getHardwareVersion,63,65,1,low
sys/initial.cpp,VersionManager::getBootVersion,71,73,1,low
sys/initial.cpp,VersionManager::sendVersionInfoViaCan,139,179,1,low
sys/initial.cpp,VersionManager::printVersions,185,197,1,low
sys/initial.cpp,USART0_init,204,207,1,low
sys/initial.cpp,watchdog_init,215,222,1,low
sys/initial.cpp,unused_pin_init,235,248,1,low
sys/systick.cpp,dwt_init,82,90,1,low
sys/systick.cpp,get_systick_ms,98,100,1,low
sys/systick.cpp,idle_task_count,191,193,1,low
sys/systick.cpp,get_cpu_usage,217,217,1,low
1 file function start_line end_line cyclomatic_complexity risk
2 Algorithm/FOC.cpp FOC_Controller::calibrate_cogging_tick 75 238 33 high
3 device/Can.cpp CAN_transmiter::communication_check 1076 1300 27 high
4 main.cpp do_task 120 205 17 high
5 Algorithm/FOC.cpp FOC_Controller::setSVPWM_PhaseVoltage 392 490 15 medium
6 sys/flash.cpp FlashEEPROM::writeFloat 308 383 12 medium
7 sys/health.cpp ThermalController::update 35 94 12 medium
8 device/Can.cpp can_loopback_test 597 665 11 medium
9 device/Can.cpp CAN_transmiter::CANFD_AsyncSend 1448 1504 10 low
10 sys/flash.cpp FlashEEPROM::read_saved_system_config 90 161 10 low
11 sys/flash.cpp FlashEEPROM::write 237 300 10 low
12 sys/flash.cpp FlashEEPROM::writeNodeId 657 717 10 low
13 sys/flash.cpp move_app_data 928 1030 10 low
14 device/Can.cpp canfd_loopback_test 534 589 9 low
15 sys/flash.cpp FlashEEPROM::save_system_config 413 482 9 low
16 sys/flash.cpp OTA_SET 792 879 9 low
17 sys/health.cpp power_manage 113 149 9 low
18 device/ADC.cpp sampler::get_current 194 219 8 low
19 sys/flash.cpp FlashEEPROM::writeCRC 724 776 8 low
20 sys/systick.cpp app_prepare_deep_sleep 244 298 8 low
21 device/Timer.cpp TIMER2_IRQHandler 134 184 7 low
22 sys/initial.cpp get_reset_cause 256 290 7 low
23 Algorithm/FOC.cpp FOC_Controller::fast_voltage_check 603 642 6 low
24 device/Can.cpp CAN_transmiter::CAN_AsyncSend 1399 1440 6 low
25 sys/flash.cpp read_node_id_struct 521 558 6 low
26 sys/initial.cpp OTA_initial 296 351 6 low
27 Algorithm/Filter.cpp EncoderAngleKalman::update 162 200 5 low
28 device/Can.cpp CAN_RX_ReadMetadata 800 824 5 low
29 device/Can.cpp DMA0_Channel4_IRQHandler 1355 1383 5 low
30 sys/flash.cpp FlashEEPROM::read 169 192 5 low
31 sys/flash.cpp FlashEEPROM::readFloat 200 229 5 low
32 Algorithm/FOC.cpp FOC_Controller::get_cogging_compensation 39 59 4 low
33 Algorithm/FOC.cpp FOC_Controller::angle_control_with_velocity_limit 753 796 4 low
34 device/ADC.cpp sampler::update_mcu_temp 238 252 4 low
35 device/ADC.cpp sampler::update_drv_temp 257 272 4 low
36 device/ADC.cpp sampler::update_vbus_voltage 297 311 4 low
37 device/Can.cpp CANFD_NormalizeLength 735 744 4 low
38 device/Can.cpp CAN_RX_QueuePushFromIsr 758 773 4 low
39 device/Can.cpp CAN_RX_PumpFifo0 858 875 4 low
40 device/Can.cpp CAN_TX_ServiceQueue 975 990 4 low
41 device/Can.cpp CAN0_RX0_IRQHandler 1330 1349 4 low
42 device/ang_sensor.cpp angle_sensor::update 263 288 4 low
43 main.cpp main 60 86 4 low
44 sys/flash.cpp write_node_id_struct 567 599 4 low
45 Algorithm/FOC.cpp FOC_Controller::resume_from_thermal 517 523 3 low
46 Algorithm/FOC.cpp FOC_Controller::drv_hold 532 541 3 low
47 Algorithm/FOC.cpp FOC_Controller::current_control 725 744 3 low
48 device/ADC.cpp sampler::update_current 277 292 3 low
49 device/Can.cpp CAN_transmiter::load_node_id_from_flash 151 175 3 low
50 device/Can.cpp CAN_transmiter::save_node_id_to_flash 185 200 3 low
51 device/Can.cpp CAN_transmiter::check_silent_mode 270 278 3 low
52 device/Can.cpp can_config 341 395 3 low
53 device/Can.cpp can_loopback_init 480 526 3 low
54 device/Can.cpp CANFD_DlcToLength 725 728 3 low
55 device/Can.cpp CAN_TX_HasEmptyMailbox 789 793 3 low
56 device/Can.cpp CAN_RX_StartPayloadDma 831 852 3 low
57 device/Can.cpp CAN_TX_QueuePush 903 922 3 low
58 device/ang_sensor.cpp angle_sensor::read_sensorAngle 236 257 3 low
59 sys/config.h normalizeAngle360 426 430 3 low
60 sys/flash.cpp FlashEEPROM::format 390 407 3 low
61 sys/flash.cpp FlashEEPROM::readNodeId 627 646 3 low
62 sys/systick.cpp systick_config 108 120 3 low
63 Algorithm/FOC.cpp FOC_Controller::update_power 568 577 2 low
64 Algorithm/FOC.cpp FOC_Controller::velocity_control 693 719 2 low
65 Algorithm/FOC.cpp FOC_Controller::MIT_Mode 805 842 2 low
66 Algorithm/Filter.h update 90 105 2 low
67 Algorithm/pid.cpp PIDController::operator 23 53 2 low
68 device/ADC.cpp sampler::init 140 166 2 low
69 device/Can.cpp CAN_transmiter::is_message_for_me 115 118 2 low
70 device/Can.cpp CAN_transmiter::set_node_id 135 140 2 low
71 device/Can.cpp CAN_transmiter::dequeue_rx_message 236 243 2 low
72 device/Can.cpp CAN_RX_QueuePop 882 896 2 low
73 device/Can.cpp CAN_TX_QueuePeek 929 938 2 low
74 device/Can.cpp CAN_TX_QueuePop 945 957 2 low
75 device/Can.cpp CAN_TX_DisableTmeIfQueueEmpty 963 969 2 low
76 device/Can.cpp CAN_transmiter::CANFD_all_Send 1025 1069 2 low
77 device/Can.cpp CAN0_TX_IRQHandler 1509 1513 2 low
78 device/Can.h enqueue_rx_message_from_isr 351 357 2 low
79 device/Timer.cpp TIMER1_IRQHandler 281 285 2 low
80 device/Timer.cpp Set_Pwm 296 303 2 low
81 sys/flash.cpp FlashEEPROM::init 68 82 2 low
82 sys/flash.cpp FlashEEPROM::read_angle 488 494 2 low
83 sys/flash.cpp FlashEEPROM::eraseNodeId 605 620 2 low
84 sys/flash.cpp jumpToBOOT 886 921 2 low
85 sys/initial.cpp fputc 224 229 2 low
86 sys/systick.cpp delay_1s 156 161 2 low
87 sys/systick.cpp delay_1ms 169 174 2 low
88 sys/systick.cpp delay_decrement 182 186 2 low
89 sys/systick.cpp busy_task_enter 198 202 2 low
90 sys/systick.cpp busy_task_exit 207 211 2 low
91 sys/systick.cpp system_soft_reset 225 236 2 low
92 Algorithm/FOC.cpp calibrate_zero_position 253 274 1 low
93 Algorithm/FOC.cpp FOC_Controller::init 322 375 1 low
94 Algorithm/FOC.cpp FOC_Controller::shut_down 496 500 1 low
95 Algorithm/FOC.cpp FOC_Controller::shut_down_thermal 506 511 1 low
96 Algorithm/FOC.cpp FOC_Controller::drv_stop 528 528 1 low
97 Algorithm/FOC.cpp FOC_Controller::PWM_out 547 551 1 low
98 Algorithm/FOC.cpp FOC_Controller::resume 558 563 1 low
99 Algorithm/FOC.cpp FOC_Controller::velocity_open_loop 650 664 1 low
100 Algorithm/FOC.cpp FOC_Controller::angle_control 672 685 1 low
101 Algorithm/FOC.h update_pid_limits 226 231 1 low
102 Algorithm/Filter.cpp medium_filter 63 72 1 low
103 Algorithm/Filter.cpp kalman 93 93 1 low
104 Algorithm/Filter.cpp EncoderVelocityKalman::update 101 108 1 low
105 Algorithm/Filter.cpp EncoderVelocityKalman::getVelocity 114 114 1 low
106 Algorithm/Filter.cpp EncoderVelocityKalman::setProcessNoise 121 123 1 low
107 Algorithm/Filter.cpp EncoderVelocityKalman::setMeasurementNoise 130 132 1 low
108 Algorithm/Filter.cpp last_update_count 149 153 1 low
109 Algorithm/Filter.cpp EncoderAngleKalman::getAngle 206 206 1 low
110 Algorithm/Filter.cpp EncoderAngleKalman::getVelocity 211 211 1 low
111 Algorithm/Filter.cpp EncoderAngleKalman::setProcessNoise 218 220 1 low
112 Algorithm/Filter.cpp EncoderAngleKalman::setMeasurementNoise 227 229 1 low
113 Algorithm/Filter.cpp CurrentKalman::update 259 261 1 low
114 Algorithm/Filter.cpp CurrentKalman::getCurrent 267 267 1 low
115 Algorithm/Filter.cpp CurrentKalman::setProcessNoise 274 274 1 low
116 Algorithm/Filter.cpp CurrentKalman::setMeasurementNoise 281 283 1 low
117 Algorithm/Filter.h R 56 56 1 low
118 Algorithm/Filter.h predict 63 66 1 low
119 Algorithm/Filter.h update 74 83 1 low
120 Algorithm/Filter.h getState 111 111 1 low
121 Algorithm/Filter.h setProcessNoise 118 118 1 low
122 Algorithm/Filter.h setMeasurementNoise 125 125 1 low
123 Algorithm/Filter.h resetCovariance 132 132 1 low
124 Algorithm/Filter.h getCovariance 138 138 1 low
125 Algorithm/Filter.h getProcessNoise 144 144 1 low
126 Algorithm/Filter.h init 187 191 1 low
127 Algorithm/Filter.h getstate 239 239 1 low
128 Algorithm/Filter.h init 247 254 1 low
129 Algorithm/Filter.h init 296 300 1 low
130 Algorithm/pid.cpp error_prev 20 20 1 low
131 Algorithm/pid.cpp PIDController::set_PID 63 67 1 low
132 Algorithm/pid.cpp PIDController::set_P 75 77 1 low
133 Algorithm/pid.cpp PIDController::set_limit 85 85 1 low
134 Algorithm/pid.cpp PIDController::reset 92 96 1 low
135 Algorithm/pid.cpp PIDController::reset_integral 103 103 1 low
136 device/ADC.cpp current_adc_to_ma 40 42 1 low
137 device/ADC.cpp dma_config 50 75 1 low
138 device/ADC.cpp adc_config 83 136 1 low
139 device/ADC.cpp sampler::get_mcu_temp 172 174 1 low
140 device/ADC.cpp sampler::get_drv_temp 183 185 1 low
141 device/ADC.cpp sampler::get_vbus_voltage 228 230 1 low
142 device/Can.cpp CAN_transmiter::build_can_id 102 104 1 low
143 device/Can.cpp CAN_transmiter::get_node_id 126 126 1 low
144 device/Can.cpp CAN_transmiter::is_rx_buffer_full 212 214 1 low
145 device/Can.cpp CAN_transmiter::is_rx_buffer_empty 223 225 1 low
146 device/Can.cpp CAN_transmiter::enter_silent_mode 256 260 1 low
147 device/Can.cpp CAN_transmiter::is_in_silent_mode 265 265 1 low
148 device/Can.cpp can_gpio_init 286 302 1 low
149 device/Can.cpp can_dma_init 310 333 1 low
150 device/Can.cpp canfd_config 403 472 1 low
151 device/Can.cpp CAN_transmiter::init 671 701 1 low
152 device/Can.cpp CAN_EnterCritical 707 711 1 low
153 device/Can.cpp CAN_ExitCritical 718 718 1 low
154 device/Can.cpp CANFD_WordCount 751 751 1 low
155 device/Can.cpp CAN_RX_ReleaseFifo0 775 775 1 low
156 device/Can.cpp CAN_RX_Fifo0PendingCount 781 783 1 low
157 device/Can.cpp CAN_transmiter::update 995 1018 1 low
158 device/Can.cpp CAN_transmiter::CAN_Sleep 1307 1311 1 low
159 device/Can.cpp CAN_transmiter::CAN_Wakeup 1318 1324 1 low
160 device/Can.cpp DMA0_Channel5_IRQHandler 1389 1391 1 low
161 device/Can.h pack_u16_to_bytes 36 39 1 low
162 device/Can.h unpack_bytes_to_short 64 67 1 low
163 device/Can.h unpack_bytes_to_u16 76 79 1 low
164 device/Can.h unpack_bytes_to_float 88 95 1 low
165 device/Timer.cpp nvic_config 63 70 1 low
166 device/Timer.cpp TIMER2_config 78 111 1 low
167 device/Timer.cpp User_timer_init 117 122 1 low
168 device/Timer.cpp timer1_gpio_config 189 208 1 low
169 device/Timer.cpp timer1_pwm_config 213 274 1 low
170 device/Timer.cpp Set_3Pwm 314 319 1 low
171 device/ang_sensor.cpp spi_dma_init 50 95 1 low
172 device/ang_sensor.cpp KTH7823_gpio_init 166 184 1 low
173 device/ang_sensor.cpp KTH7823_spi_init 191 208 1 low
174 device/ang_sensor.cpp angle_sensor::init 214 219 1 low
175 device/ang_sensor.cpp angle_sensor::angle_set 226 230 1 low
176 device/ang_sensor.cpp angle_sensor::getAngle 294 296 1 low
177 device/ang_sensor.cpp angle_sensor::getRawAngle 302 302 1 low
178 device/ang_sensor.cpp angle_sensor::getcurrent_sensorangle 308 310 1 low
179 device/motor.cpp motor_init 16 31 1 low
180 device/motor.cpp motor_reset 36 40 1 low
181 device/motor.cpp motor_sleep 45 49 1 low
182 device/motor.cpp motor_resume 54 58 1 low
183 main.cpp hardware_init 92 113 1 low
184 sys/flash.cpp write_ADDRESS 48 57 1 low
185 sys/flash.cpp calculate_node_id_crc 506 512 1 low
186 sys/health.cpp angsens_MG_check 99 103 1 low
187 sys/health.h recoveryRate 53 53 1 low
188 sys/health.h reset 63 66 1 low
189 sys/initial.cpp VersionManager::getSoftwareVersion 55 57 1 low
190 sys/initial.cpp VersionManager::getHardwareVersion 63 65 1 low
191 sys/initial.cpp VersionManager::getBootVersion 71 73 1 low
192 sys/initial.cpp VersionManager::sendVersionInfoViaCan 139 179 1 low
193 sys/initial.cpp VersionManager::printVersions 185 197 1 low
194 sys/initial.cpp USART0_init 204 207 1 low
195 sys/initial.cpp watchdog_init 215 222 1 low
196 sys/initial.cpp unused_pin_init 235 248 1 low
197 sys/systick.cpp dwt_init 82 90 1 low
198 sys/systick.cpp get_systick_ms 98 100 1 low
199 sys/systick.cpp idle_task_count 191 193 1 low
200 sys/systick.cpp get_cpu_usage 217 217 1 low
@@ -0,0 +1,46 @@
# ROBOT_V2 APP 静态测试优先级清单
基于业务代码静态测试包生成;当前不要求改代码,因此以下是评审/偏离说明优先级。
- **P1 复杂度超阈值** `Algorithm/FOC.cpp:75` `FOC_Controller::calibrate_cogging_tick`
- CC=33,需人工评审分支/异常路径;后续可加单元测试或拆分。
- **P1 复杂度超阈值** `device/Can.cpp:1076` `CAN_transmiter::communication_check`
- CC=27,需人工评审分支/异常路径;后续可加单元测试或拆分。
- **P1 复杂度超阈值** `main.cpp:120` `do_task`
- CC=17,需人工评审分支/异常路径;后续可加单元测试或拆分。
- **P2 continue 偏离候选** `device/Can.cpp:1124`
- 确认是否可重构;若暂不改逻辑,形成偏离说明。
- **P2 continue 偏离候选** `device/Can.cpp:1194`
- 确认是否可重构;若暂不改逻辑,形成偏离说明。
- **P2 continue 偏离候选** `device/Can.cpp:1199`
- 确认是否可重构;若暂不改逻辑,形成偏离说明。
- **P2 continue 偏离候选** `main.cpp:80`
- 确认是否可重构;若暂不改逻辑,形成偏离说明。
- **P2 continue 偏离候选** `sys/flash.cpp:693`
- 确认是否可重构;若暂不改逻辑,形成偏离说明。
- **P2 continue 偏离候选** `sys/systick.cpp:264`
- 确认是否可重构;若暂不改逻辑,形成偏离说明。
- **P2 调试输出隔离** `Algorithm/FOC.cpp`
- 21 处 printf/snprint 类调用;确认宏隔离、量产关闭、实时性影响。
- **P2 调试输出隔离** `device/Can.cpp`
- 1 处 printf/snprint 类调用;确认宏隔离、量产关闭、实时性影响。
- **P2 调试输出隔离** `device/ang_sensor.cpp`
- 1 处 printf/snprint 类调用;确认宏隔离、量产关闭、实时性影响。
- **P2 调试输出隔离** `device/motor.cpp`
- 1 处 printf/snprint 类调用;确认宏隔离、量产关闭、实时性影响。
- **P2 调试输出隔离** `main.cpp`
- 1 处 printf/snprint 类调用;确认宏隔离、量产关闭、实时性影响。
- **P2 调试输出隔离** `sys/flash.cpp`
- 2 处 printf/snprint 类调用;确认宏隔离、量产关闭、实时性影响。
- **P2 调试输出隔离** `sys/initial.cpp`
- 3 处 printf/snprint 类调用;确认宏隔离、量产关闭、实时性影响。
- **P2 调试输出隔离** `sys/systick.cpp`
- 1 处 printf/snprint 类调用;确认宏隔离、量产关闭、实时性影响。
- **P3 平台/中断指令偏离候选** `device/Can.cpp`
- 1 处关中断/开中断/WFI/汇编;确认临界区长度和安全机制。
- **P3 平台/中断指令偏离候选** `main.cpp`
- 3 处关中断/开中断/WFI/汇编;确认临界区长度和安全机制。
- **P3 平台/中断指令偏离候选** `sys/flash.cpp`
- 5 处关中断/开中断/WFI/汇编;确认临界区长度和安全机制。
- **P3 平台/中断指令偏离候选** `sys/systick.cpp`
- 1 处关中断/开中断/WFI/汇编;确认临界区长度和安全机制。
File diff suppressed because one or more lines are too long
@@ -0,0 +1,143 @@
# ROBOT_V2 APP 业务代码汽车电子静态测试包
## 范围
- 根目录: `/workzone/ROBOT_V2/APP/Robot_V2`
- 包含: `Algorithm/`, `device/`, `sys/`, `main.cpp`, `main.h`
- 排除: `RTE/` 第三方 GD32 库、工程生成文件、临时目录
- 方式: 只读扫描,不修改代码
## 工具环境限制
- 当前环境未安装 QAC / Polyspace / Coverity / PC-lint / cppcheck / 交叉编译器。
- 本报告为汽车电子规则初筛和评审入口,不等同正式 MISRA/AUTOSAR 合规报告。
## 总览
- 扫描文件数: 29
- 总行数: 8159
- 非空代码行估算: 4272
- error: 0
- warning: 40
- info: 513
## 规则命中统计
- AUTO-ARRAY-001: 251
- AUTO-ASM-001: 10
- AUTO-CAST-001: 223
- AUTO-CTRL-002: 6
- AUTO-FUNC-002: 31
- AUTO-MACRO-001: 29
- AUTO-MET-001: 3
## 高优先级结论
- 未发现动态内存、goto、高风险 C 字符串/输入函数等硬性高风险项。
- 复杂度超过 15 的函数需要人工评审或后续单元测试加强。
- `continue`、调试输出、关中断/开中断属于偏离说明候选。
## Top 圈复杂度
- 33 `Algorithm/FOC.cpp:75-238` `FOC_Controller::calibrate_cogging_tick` risk=high
- 27 `device/Can.cpp:1076-1300` `CAN_transmiter::communication_check` risk=high
- 17 `main.cpp:120-205` `do_task` risk=high
- 15 `Algorithm/FOC.cpp:392-490` `FOC_Controller::setSVPWM_PhaseVoltage` risk=medium
- 12 `sys/flash.cpp:308-383` `FlashEEPROM::writeFloat` risk=medium
- 12 `sys/health.cpp:35-94` `ThermalController::update` risk=medium
- 11 `device/Can.cpp:597-665` `can_loopback_test` risk=medium
- 10 `device/Can.cpp:1448-1504` `CAN_transmiter::CANFD_AsyncSend` risk=low
- 10 `sys/flash.cpp:90-161` `FlashEEPROM::read_saved_system_config` risk=low
- 10 `sys/flash.cpp:237-300` `FlashEEPROM::write` risk=low
- 10 `sys/flash.cpp:657-717` `FlashEEPROM::writeNodeId` risk=low
- 10 `sys/flash.cpp:928-1030` `move_app_data` risk=low
- 9 `device/Can.cpp:534-589` `canfd_loopback_test` risk=low
- 9 `sys/flash.cpp:413-482` `FlashEEPROM::save_system_config` risk=low
- 9 `sys/flash.cpp:792-879` `OTA_SET` risk=low
- 9 `sys/health.cpp:113-149` `power_manage` risk=low
- 8 `device/ADC.cpp:194-219` `sampler::get_current` risk=low
- 8 `sys/flash.cpp:724-776` `FlashEEPROM::writeCRC` risk=low
- 8 `sys/systick.cpp:244-298` `app_prepare_deep_sleep` risk=low
- 7 `device/Timer.cpp:134-184` `TIMER2_IRQHandler` risk=low
## Warning 明细
- [AUTO-CTRL-002] `device/Can.cpp:1124` continue 需避免或说明偏离
- `continue;`
- [AUTO-CTRL-002] `device/Can.cpp:1194` continue 需避免或说明偏离
- `continue;`
- [AUTO-CTRL-002] `device/Can.cpp:1199` continue 需避免或说明偏离
- `continue;`
- [AUTO-CTRL-002] `main.cpp:80` continue 需避免或说明偏离
- `continue;`
- [AUTO-CTRL-002] `sys/flash.cpp:693` continue 需避免或说明偏离
- `continue;`
- [AUTO-CTRL-002] `sys/systick.cpp:264` continue 需避免或说明偏离
- `continue;`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:100` printf/格式化输出需确认调试隔离和实时性影响
- `printf("");`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:161` printf/格式化输出需确认调试隔离和实时性影响
- `printf("",`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:195` printf/格式化输出需确认调试隔离和实时性影响
- `printf("");`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:198` printf/格式化输出需确认调试隔离和实时性影响
- `printf("", angle_deg, cogging_table[i]);`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:203` printf/格式化输出需确认调试隔离和实时性影响
- `printf("");`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:206` printf/格式化输出需确认调试隔离和实时性影响
- `printf("", angle_deg, cogging_table_rev[i]);`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:211` printf/格式化输出需确认调试隔离和实时性影响
- `printf("");`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:212` printf/格式化输出需确认调试隔离和实时性影响
- `printf("");`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:214` printf/格式化输出需确认调试隔离和实时性影响
- `if (i % 8 == 0) printf("");`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:215` printf/格式化输出需确认调试隔离和实时性影响
- `printf("", cogging_table[i]);`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:216` printf/格式化输出需确认调试隔离和实时性影响
- `if (i < COGGING_TABLE_SIZE - 1) printf("");`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:217` printf/格式化输出需确认调试隔离和实时性影响
- `if (i % 8 == 7 || i == COGGING_TABLE_SIZE - 1) printf("");`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:220` printf/格式化输出需确认调试隔离和实时性影响
- `printf("");`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:223` printf/格式化输出需确认调试隔离和实时性影响
- `printf("");`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:224` printf/格式化输出需确认调试隔离和实时性影响
- `printf("");`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:226` printf/格式化输出需确认调试隔离和实时性影响
- `if (i % 8 == 0) printf("");`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:227` printf/格式化输出需确认调试隔离和实时性影响
- `printf("", cogging_table_rev[i]);`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:228` printf/格式化输出需确认调试隔离和实时性影响
- `if (i < COGGING_TABLE_SIZE - 1) printf("");`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:229` printf/格式化输出需确认调试隔离和实时性影响
- `if (i % 8 == 7 || i == COGGING_TABLE_SIZE - 1) printf("");`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:232` printf/格式化输出需确认调试隔离和实时性影响
- `printf("");`
- [AUTO-FUNC-002] `Algorithm/FOC.cpp:234` printf/格式化输出需确认调试隔离和实时性影响
- `printf("");`
- [AUTO-FUNC-002] `device/Can.cpp:30` printf/格式化输出需确认调试隔离和实时性影响
- `#define CAN_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)`
- [AUTO-FUNC-002] `device/ang_sensor.cpp:22` printf/格式化输出需确认调试隔离和实时性影响
- `#define ANG_SENS_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)`
- [AUTO-FUNC-002] `device/motor.cpp:38` printf/格式化输出需确认调试隔离和实时性影响
- `printf("");`
- [AUTO-FUNC-002] `main.cpp:22` printf/格式化输出需确认调试隔离和实时性影响
- `#define MAIN_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)`
- [AUTO-FUNC-002] `sys/flash.cpp:22` printf/格式化输出需确认调试隔离和实时性影响
- `#define EEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)`
- [AUTO-FUNC-002] `sys/flash.cpp:31` printf/格式化输出需确认调试隔离和实时性影响
- `#define OTA_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)`
- [AUTO-FUNC-002] `sys/initial.cpp:23` printf/格式化输出需确认调试隔离和实时性影响
- `#define OTA_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)`
- [AUTO-FUNC-002] `sys/initial.cpp:32` printf/格式化输出需确认调试隔离和实时性影响
- `#define EEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)`
- [AUTO-FUNC-002] `sys/initial.cpp:129` printf/格式化输出需确认调试隔离和实时性影响
- `snprintf(buffer, bufSize, "", version.major, version.minor,`
- [AUTO-FUNC-002] `sys/systick.cpp:47` printf/格式化输出需确认调试隔离和实时性影响
- `#define SLEEP_DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)`
- [AUTO-MET-001] `Algorithm/FOC.cpp:75` 圈复杂度 33 超过建议阈值 15
- `FOC_Controller::calibrate_cogging_tick`
- [AUTO-MET-001] `device/Can.cpp:1076` 圈复杂度 27 超过建议阈值 15
- `CAN_transmiter::communication_check`
- [AUTO-MET-001] `main.cpp:120` 圈复杂度 17 超过建议阈值 15
- `do_task`
## 输出文件
- `report.md`: 本摘要
- `findings.csv`: 规则命中明细
- `metrics.csv`: 函数复杂度
- `files.csv`: 文件范围与行数/hash
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
{
"version": 1,
"storageKey": "robot_v2_app_static_report_checklist_v1",
"report": "ROBOT_V2_APP_static_test_automotive_business_20260523",
"updatedAt": "2026-05-23T14:41:51.724Z",
"checked": {
"main-3117cb79205a": true,
"main-527272d22f5f": true
}
}
@@ -0,0 +1,728 @@
severity,rule_id,file,line,description,evidence,recommendation
warning,SUP-CMP-001,Algorithm/FOC.cpp,53,浮点变量比较需确认容差或离散状态含义,if (rt_velocity < -0.5f) last_table = cogging_table_rev;,建议确认是否应使用阈值/容差比较。
warning,SUP-CMP-001,Algorithm/FOC.cpp,54,浮点变量比较需确认容差或离散状态含义,else if (rt_velocity > 0.5f) last_table = cogging_table;,建议确认是否应使用阈值/容差比较。
warning,SUP-CMP-001,Algorithm/FOC.cpp,404,浮点变量比较需确认容差或离散状态含义,u8 sector_code = (X > 0.0f ? 1u : 0u),建议确认是否应使用阈值/容差比较。
warning,SUP-CMP-001,Algorithm/FOC.cpp,405,浮点变量比较需确认容差或离散状态含义,+ (Y > 0.0f ? 2u : 0u),建议确认是否应使用阈值/容差比较。
warning,SUP-CMP-001,Algorithm/FOC.cpp,406,浮点变量比较需确认容差或离散状态含义,+ (Z > 0.0f ? 4u : 0u);,建议确认是否应使用阈值/容差比较。
warning,SUP-CMP-001,Algorithm/FOC.cpp,534,浮点变量比较需确认容差或离散状态含义,if (HOLD_PWM_DUTY > 0.95f) {,建议确认是否应使用阈值/容差比较。
warning,SUP-CMP-001,Algorithm/FOC.cpp,536,浮点变量比较需确认容差或离散状态含义,} else if (HOLD_PWM_DUTY < 0.0f) {,建议确认是否应使用阈值/容差比较。
warning,SUP-CMP-001,Algorithm/FOC.cpp,569,浮点变量比较需确认容差或离散状态含义,if (voltage < 36.0f and voltage > 8.0f) {,建议确认是否应使用阈值/容差比较。
warning,SUP-CMP-001,Algorithm/FOC.cpp,763,浮点变量比较需确认容差或离散状态含义,if (target_velocity < -120.0f) {,建议确认是否应使用阈值/容差比较。
warning,SUP-CMP-001,Algorithm/FOC.cpp,765,浮点变量比较需确认容差或离散状态含义,} else if (target_velocity < -30.0f) {,建议确认是否应使用阈值/容差比较。
warning,SUP-CMP-001,Algorithm/Filter.cpp,190,浮点变量比较需确认容差或离散状态含义,if (error > 180.0f) error -= 360.0f;,建议确认是否应使用阈值/容差比较。
warning,SUP-CMP-001,Algorithm/Filter.cpp,191,浮点变量比较需确认容差或离散状态含义,else if (error < -180.0f) error += 360.0f;,建议确认是否应使用阈值/容差比较。
warning,SUP-CMP-001,sys/config.h,427,浮点变量比较需确认容差或离散状态含义,while (angle >= 360.0f) angle -= 360.0f;,建议确认是否应使用阈值/容差比较。
warning,SUP-CMP-001,sys/config.h,428,浮点变量比较需确认容差或离散状态含义,while (angle < 0.0f) angle += 360.0f;,建议确认是否应使用阈值/容差比较。
warning,SUP-GLB-001,Algorithm/FOC.cpp,23,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,FOC_Controller FOC;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/ADC.cpp,20,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float ADC_SCALE = 3.3f / 4096.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/ADC.cpp,22,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float TEMP_FACTOR = 1000.0f / 4.3f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/ADC.cpp,24,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float VCC_FACTOR = 11.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/ADC.cpp,26,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float CURRENT_FACTOR =,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/ADC.cpp,30,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,sampler sampler;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/ADC.cpp,33,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,static volatile u8 adc_current_frame_ready = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/Can.cpp,37,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 CANX = CAN0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/Can.cpp,48,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,dma_parameter_struct dma_rx_parameter;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/Can.cpp,51,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,static volatile bool can_rx_dma_busy = false;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/Can.cpp,52,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,static can_receive_message_struct can_rx_dma_message;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/Can.cpp,72,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,static volatile u8 rx_queue_head = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/Can.cpp,73,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,static volatile u8 rx_queue_tail = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/Can.cpp,74,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,static volatile u8 rx_queue_count = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/Can.cpp,77,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,static volatile u8 tx_queue_head = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/Can.cpp,78,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,static volatile u8 tx_queue_tail = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/Can.cpp,79,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,static volatile u8 tx_queue_count = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/Can.cpp,84,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,CAN_transmiter CAN0_transmiter;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/Timer.cpp,18,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,volatile u32 total_us100_counter = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/ang_sensor.cpp,38,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,volatile bool spi_dma_tx_complete = false;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/ang_sensor.cpp,39,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,volatile bool spi_dma_rx_complete = false;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,device/ang_sensor.cpp,41,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,angle_sensor KTH7823;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,main.cpp,39,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,TaskScheduler scheduler = {0};,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,main.cpp,40,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,u32 motor_runtime_50us = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,main.cpp,41,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,u32 cnt_test = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,32,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 SOFTWARE_VERSION_MAJOR = 26;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,34,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 SOFTWARE_VERSION_MINOR = 5;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,36,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 SOFTWARE_VERSION_PATCH = 19;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,38,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 SOFTWARE_VERSION_BUILD = 2;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,41,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 HARDWARE_VERSION_MAJOR = 25;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,43,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 HARDWARE_VERSION_MINOR = 12;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,45,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 HARDWARE_VERSION_PATCH = 01;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,47,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 HARDWARE_VERSION_BUILD = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,50,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 BOOT_VERSION_MAJOR = 26;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,52,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 BOOT_VERSION_MINOR = 1;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,54,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 BOOT_VERSION_PATCH = 12;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,56,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 BOOT_VERSION_BUILD = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,60,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 BOOTLOADER_SIZE = 0x6000;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,62,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 BOOTLOADER_START_ADDR = 0x08000000;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,64,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 APPLATEST_START_ADDR = 0x08012000;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,66,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 APPBACK_START_ADDR = 0x08006000;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,68,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 APP_MAX_SIZE = 0xC000;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,70,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 FMC_PAGE_SIZE = 0x400;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,72,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 SLEEP_CONFIG_START = 0x0801E400;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,74,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 SLEEP_CONFIG_END = 0x0801E800;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,76,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 FLASH_EMPTY = 0xFFFFFFFF;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,78,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 SLEEP_ENABLE = 0x11111111;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,80,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 SLEEP_DISABLE = 0x00000000;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,92,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 NODE_ID_PAGE_ADDR = 0x0801E800;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,94,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 NODE_ID_PRIMARY_ADDR = 0x0801E800;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,96,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 NODE_ID_BACKUP_ADDR = 0x0801E840;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,98,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 NODE_ID_MAGIC = 0x4E4F4445;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,100,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 DEFAULT_NODE_ID = 1;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,102,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 BROADCAST_NODE_ID = 0x1FFF;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,104,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 MAX_NODE_ID = 0x1FFE;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,113,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u8 NODE_ID_STRUCT_SIZE = 0x10;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,115,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u8 NODE_ID_MAGIC_OFFSET = 0x00;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,117,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u8 NODE_ID_VALUE_OFFSET = 0x04;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,119,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u8 NODE_ID_COUNTER_OFFSET = 0x08;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,121,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u8 NODE_ID_CRC_OFFSET = 0x0C;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,125,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 OTA_CONFIG_NUM = 6;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,127,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 n_APP_LATEST_AVAL_ADDR = 0x0801E000;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,129,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 n_APP_BACKUP_AVAL_ADDR = 0x0801E004;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,131,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 n_APP_LATEST_EN_ADDR = 0x0801E008;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,133,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 n_APP_BACKUP_EN_ADDR = 0x0801E00C;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,135,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 n_APP_LATEST_CHECK_ADDR = 0x0801E010;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,137,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 n_APP_BACKUP_CHECK_ADDR = 0x0801E014;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,139,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 OTA_NOT_AVAL = 0xFFFFFFFF;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,141,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 OTA_AVAL = 0x00000000;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,145,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u8 PP = 11;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,147,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float DIR = 1.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,149,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 REDUCTION_RATIO = 25;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,151,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float CURRENT_OFFSET = -3.31f / 2.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,153,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float HOLD_PWM_DUTY = 0.1f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,155,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 ANGLESENS_OFFSET = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,157,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float ANGLESENS_CALIBRATION_ANGLE = 83.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,159,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float KE_FACTOR = 0.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,163,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float ANGLE_KALMAN_INITIAL_STATE = 0.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,165,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float ANGLE_KALMAN_INITIAL_COVARIANCE = 0.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,167,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float ANGLE_KALMAN_PROCESS_NOISE_Q = 0.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,169,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float ANGLE_KALMAN_MEASUREMENT_NOISE_R = 0.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,171,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float ANGLE_OBSERVER_ALPHA = 0.75f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,173,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float ANGLE_OBSERVER_BETA = 0.002f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,177,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float VELOCITY_KALMAN_INITIAL_STATE = 0.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,179,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float VELOCITY_KALMAN_INITIAL_COVARIANCE = 1e-3f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,181,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float VELOCITY_KALMAN_PROCESS_NOISE_Q =,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,184,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float VELOCITY_KALMAN_MEASUREMENT_NOISE_R =,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,189,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float CURRENT_KALMAN_INITIAL_STATE = 0.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,191,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float CURRENT_KALMAN_INITIAL_COVARIANCE = 100.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,193,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float CURRENT_KALMAN_PROCESS_NOISE_Q = 10.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,195,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float CURRENT_KALMAN_MEASUREMENT_NOISE_R = 5e-5f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,199,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float DEFAULT_current_loop_p = 0.1f / 100 * 12;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,201,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float current_loop_Ki = 0.55f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,203,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float current_loop_Kd = 3e-4f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,206,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float DEFAULT_vel_loop_p = 0.018f / 100 * 12;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,208,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float vel_loop_Ku = 3.600000e-03 * 0.7 * 100 / 12;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,210,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float vel_loop_Tu = 17.0f * 1e-3f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,212,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float vel_loop_Ki = 1.2 * vel_loop_Ku / vel_loop_Tu;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,214,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float vel_loop_Kd = 0.075 * vel_loop_Ku * vel_loop_Tu * 2;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,217,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float DEFAULT_vel_angloop_p = 0.4f / 100;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,219,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float vel_angloop_Ki = 5.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,221,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float vel_angloop_Kd = 5e-05f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,224,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float DEFAULT_angle_angloop_p =,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,227,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float ang_angloop_Ki = 0.00f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,229,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float ang_angloop_Kd = 8e-04f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,232,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float DEFAULT_angle_loop_p = 60.0f / 100 * 12;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,235,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float DEFAULT_angle_MIT_p = 100.0f / 100 * 12;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,237,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float angle_MIT_Ki = 0.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,239,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float angle_MIT_Kd = 8e-04f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,242,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float DEFAULT_vel_MIT_p = 5.0f / 100;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,244,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float vel_MIT_Ki = 15.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,246,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float vel_MIT_Kd = 1e-04f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,249,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float DEFAULT_current_MIT_p = 0.2f / 100 * 12;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,251,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float current_MIT_Ki = 0.1f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,253,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float current_MIT_Kd = 3e-4f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,260,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float ADC_MAX = 65536.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,262,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float PI = 3.14159265358979323846f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,264,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float INV_PI_3 = 3.0f / PI;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,266,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float PI_3 = PI / 3.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,268,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float _1_SQRT3 = 0.57735026919f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,270,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float _3PI_2 = 4.71238898038f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,272,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float SQRT3 = 1.7320508075688772f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,274,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float SQRT3DV2 = 0.8660254037844386f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,276,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float COS_PI_3 = 0.5f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,278,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float ANGLE_FACTOR = 25.0f / 180.0f * PI;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,280,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float DEG2RAD = 1.0f / 180.0f * PI;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,282,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float RAD2DEG = 180.0f / PI;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,284,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u8 DEFAULT_VALUE = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,286,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u8 CONFIG_SAVED_NUM = 6;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,290,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 LUT_SIZE = 1024;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,301,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 DEV_CAN0_ID = 0x0000;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,303,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 DEV_CAN0_MASK = 0x0000;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,305,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 DEV_CAN_LOOPBACK_ID = 0x0000;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,308,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 CANFD_STATUS_ID = 0x0100;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,310,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 CANFD_CONFIG_ID = 0x0101;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,312,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 CANFD_VERSION_ID = 0x00FF;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,315,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 CANFD_CMD_ID = 0x0200;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,317,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 CANFD_RESET_ID = 0x0301;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,320,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 CANFD_SET_NODE_ID = 0x0400;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,322,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 CANFD_GET_NODE_ID = 0x0401;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,326,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 CANFD_BOOT_ID = 0x0000;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,328,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 CANFD_OTA_REQ_ID = 0x0100;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,330,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 CANFD_OTA_DATA_ID = 0x0101;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,332,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 CANFD_OTA_ACK_ID = 0x0102;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,334,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 CANFD_OTA_WAIT_ID = 0x0103;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,338,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u8 ADC_FILTER_SIZE = 6;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,340,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u8 BLOCK_SIZE = ADC_FILTER_SIZE * SIZE_FLOAT;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,342,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float ERROR_ADC_VAL = 255.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,344,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float MAX_TEMP = 150.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,346,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float MIN_TEMP = -40.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,348,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float MAX_CURRENT = 40.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,350,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float MIN_CURRENT = -40.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,352,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float MAX_VCC = 65.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,354,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float MIN_VCC = -0.1f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,358,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 VEL_FILTER_SIZE = 4;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,360,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 DEFAULT_COMMAND = 0x0000;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,362,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 FAULT_RECEIVE = 0xFFFF;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,364,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float ANGLE_WRAP_THRESHOLD = 300.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,366,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float ANGLE_WRAP_VALUE = 360.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,368,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float RAD_FACTOR = 1.0f / ADC_MAX * 2.0f * PI;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,370,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float ANGLESENS_FACTOR = 1.0f / ADC_MAX * 360.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,374,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr int TIMER2_PRESCALER = 119;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,376,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr int TIMER2_PERIOD = 49;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,378,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr int MOTOR_PERIOD = 1;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,380,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float TIME_SLICE =,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,383,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float TIMER2_FREQUENCY = 1 / TIME_SLICE;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,385,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float MOTOR_FREQUENCY = 1 / TIME_SLICE / MOTOR_PERIOD;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,389,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr int TIMER1_PRESCALER = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,391,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr int TIMER1_PERIOD = 2999;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,393,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr int TIMER1_DEFAULT_PULSE = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,395,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr int TIMER1_CH3_COMPARE_VALUE =,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,400,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 COGGING_TABLE_SIZE = 128;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,402,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float COGGING_COMP_SCALE = 0.005f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,413,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float VBUS_DROP_THRESHOLD = 5.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,415,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float VBUS_ABSOLUTE_MIN = 12.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,417,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u32 VBUS_DEBOUNCE_COUNT = 5;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/config.h,419,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr float VBUS_RECOVERY_RATIO = 0.9f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/health.cpp,19,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,ThermalController thermalController;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/health.cpp,25,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,constexpr u16 PROTECT_TIME = 6000;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/health.cpp,28,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,static VoltageState voltage_state = VoltageState::NORMAL;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/health.cpp,29,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,static float last_vbus_slow = 0.0f;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/initial.cpp,39,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,VersionManager Version;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/systick.cpp,53,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,volatile static uint32_t delay;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/systick.cpp,54,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,volatile static uint32_t systick_ms = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/systick.cpp,70,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,volatile static uint32_t task_enter_cyccnt = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/systick.cpp,71,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,volatile static uint32_t busy_cycles_accum = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/systick.cpp,72,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,volatile static uint16_t sample_seconds = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/systick.cpp,73,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,volatile static uint8_t cpu_usage = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-GLB-001,sys/systick.cpp,74,文件作用域可变全局对象,需确认封装、并发访问和初始化顺序,volatile static uint8_t dwt_initialized = 0;,建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
warning,SUP-IRQ-001,device/Can.cpp,709,关中断后未在短窗口内看到开中断,需人工确认成对性,__disable_irq();,确认所有路径均恢复中断;避免临界区过长。
warning,SUP-IRQ-001,sys/flash.cpp,888,关中断后未在短窗口内看到开中断,需人工确认成对性,__disable_irq();,确认所有路径均恢复中断;避免临界区过长。
warning,SUP-IRQ-001,sys/systick.cpp,256,关中断后未在短窗口内看到开中断,需人工确认成对性,__disable_irq();,确认所有路径均恢复中断;避免临界区过长。
warning,SUP-SW-001,Algorithm/FOC.cpp,89,switch 语句疑似缺少 default 分支,switch (cog_calib_state) {,MISRA 通常要求 default;如枚举已全覆盖也建议显式说明。
info,SUP-DOC-001,Algorithm/FOC.h,260,接口/函数缺少紧邻 Doxygen 注释,typedef float (FOC_Controller::*FOCFunctionPtr)(void);,建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
info,SUP-DOC-001,Algorithm/Filter.h,187,接口/函数缺少紧邻 Doxygen 注释,"u8 init(float init_velocity, float initial_error_covariance = 1.0f) {",建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
info,SUP-DOC-001,Algorithm/Filter.h,247,接口/函数缺少紧邻 Doxygen 注释,"u8 init(float init_angle, float initial_error_covariance = 1.0f) {",建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
info,SUP-DOC-001,Algorithm/Filter.h,296,接口/函数缺少紧邻 Doxygen 注释,"u8 init(float init_current, float initial_error_covariance = 1.0f) {",建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
info,SUP-DOC-001,Algorithm/pid.cpp,23,接口/函数缺少紧邻 Doxygen 注释,float PIDController::operator()(float error) {,建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
info,SUP-DOC-001,Algorithm/pid.h,18,接口/函数缺少紧邻 Doxygen 注释,float operator()(float error);,建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
info,SUP-DOC-001,device/Can.cpp,775,接口/函数缺少紧邻 Doxygen 注释,static void CAN_RX_ReleaseFifo0(void) { CAN_RFIFO0(CAN0) |= CAN_RFIFO0_RFD0; },建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
info,SUP-DOC-001,device/Can.cpp,1130,接口/函数缺少紧邻 Doxygen 注释,else if (base_id == CANFD_SET_NODE_ID) {,建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
info,SUP-DOC-001,device/Can.cpp,1292,接口/函数缺少紧邻 Doxygen 注释,else if (base_id == CANFD_GET_NODE_ID) {,建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
info,SUP-DOC-001,sys/flash.cpp,913,接口/函数缺少紧邻 Doxygen 注释,typedef void (*AppEntryFunc)(void);,建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
info,SUP-DOC-001,sys/flash.h,165,接口/函数缺少紧邻 Doxygen 注释,"u8 OTA_SET(u32 addr, u32 data);",建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
info,SUP-DOC-001,sys/initial.cpp,224,接口/函数缺少紧邻 Doxygen 注释,"int fputc(int ch, FILE *f) throw() {",建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
info,SUP-GLB-002,Algorithm/FOC.cpp,24,extern 全局对象引用,需确认单一定义和共享访问保护,extern sampler sampler;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,Algorithm/FOC.cpp,25,extern 全局对象引用,需确认单一定义和共享访问保护,extern angle_sensor KTH7823;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,Algorithm/FOC.cpp,26,extern 全局对象引用,需确认单一定义和共享访问保护,extern CAN_transmiter CAN0_transmiter;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,Algorithm/FOC.cpp,27,extern 全局对象引用,需确认单一定义和共享访问保护,extern EncoderVelocityKalman Vel_kalman;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,Algorithm/FOC.cpp,28,extern 全局对象引用,需确认单一定义和共享访问保护,extern CurrentKalman Current_kalman;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,Algorithm/Filter.cpp,14,extern 全局对象引用,需确认单一定义和共享访问保护,extern angle_sensor KTH7823;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,Algorithm/Filter.cpp,15,extern 全局对象引用,需确认单一定义和共享访问保护,extern CAN_transmiter CAN0_transmiter;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,Algorithm/Filter.cpp,16,extern 全局对象引用,需确认单一定义和共享访问保护,extern u32 motor_runtime_50us;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,Algorithm/Filter.h,24,extern 全局对象引用,需确认单一定义和共享访问保护,extern CAN_transmiter CAN0_transmiter;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,Algorithm/pid.cpp,14,extern 全局对象引用,需确认单一定义和共享访问保护,extern CAN_transmiter CAN0_transmiter;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/ADC.cpp,28,extern 全局对象引用,需确认单一定义和共享访问保护,extern CAN_transmiter CAN0_transmiter;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/ADC.cpp,29,extern 全局对象引用,需确认单一定义和共享访问保护,extern FOC_Controller FOC;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/Can.cpp,38,extern 全局对象引用,需确认单一定义和共享访问保护,extern FOC_Controller FOC;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/Can.cpp,39,extern 全局对象引用,需确认单一定义和共享访问保护,extern sampler sampler;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/Can.cpp,40,extern 全局对象引用,需确认单一定义和共享访问保护,extern angle_sensor KTH7823;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/Can.cpp,41,extern 全局对象引用,需确认单一定义和共享访问保护,extern EncoderAngleKalman Angle_kalman;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/Can.cpp,42,extern 全局对象引用,需确认单一定义和共享访问保护,extern EncoderVelocityKalman Vel_kalman;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/Can.cpp,43,extern 全局对象引用,需确认单一定义和共享访问保护,extern FlashEEPROM flashEEP;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/Can.cpp,44,extern 全局对象引用,需确认单一定义和共享访问保护,extern VersionManager Version;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/Can.cpp,45,extern 全局对象引用,需确认单一定义和共享访问保护,extern u32 motor_runtime_50us;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/Timer.cpp,20,extern 全局对象引用,需确认单一定义和共享访问保护,extern FOC_Controller FOC;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/Timer.cpp,21,extern 全局对象引用,需确认单一定义和共享访问保护,extern TaskScheduler scheduler;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/Timer.cpp,22,extern 全局对象引用,需确认单一定义和共享访问保护,extern CAN_transmiter CAN0_transmiter;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/Timer.cpp,24,extern 全局对象引用,需确认单一定义和共享访问保护,extern u32 cnt_test;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/ang_sensor.cpp,42,extern 全局对象引用,需确认单一定义和共享访问保护,extern FlashEEPROM flashEEP;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/ang_sensor.cpp,43,extern 全局对象引用,需确认单一定义和共享访问保护,extern EncoderAngleKalman Angle_kalman;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/ang_sensor.cpp,44,extern 全局对象引用,需确认单一定义和共享访问保护,extern EncoderVelocityKalman Vel_kalman;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,device/ang_sensor.cpp,45,extern 全局对象引用,需确认单一定义和共享访问保护,extern CAN_transmiter CAN0_transmiter;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,main.cpp,28,extern 全局对象引用,需确认单一定义和共享访问保护,extern CAN_transmiter CAN0_transmiter;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,main.cpp,29,extern 全局对象引用,需确认单一定义和共享访问保护,extern sampler sampler;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,main.cpp,30,extern 全局对象引用,需确认单一定义和共享访问保护,extern angle_sensor KTH7823;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,main.cpp,31,extern 全局对象引用,需确认单一定义和共享访问保护,extern EncoderVelocityKalman Vel_kalman;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,main.cpp,32,extern 全局对象引用,需确认单一定义和共享访问保护,extern EncoderAngleKalman Angle_kalman;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,main.cpp,33,extern 全局对象引用,需确认单一定义和共享访问保护,extern ThermalController thermalController;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,main.cpp,34,extern 全局对象引用,需确认单一定义和共享访问保护,extern FOC_Controller FOC;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,main.cpp,35,extern 全局对象引用,需确认单一定义和共享访问保护,extern FlashEEPROM flashEEP;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,main.cpp,36,extern 全局对象引用,需确认单一定义和共享访问保护,extern VersionManager Version;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,sys/flash.cpp,38,extern 全局对象引用,需确认单一定义和共享访问保护,extern angle_sensor KTH7823;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,sys/flash.cpp,39,extern 全局对象引用,需确认单一定义和共享访问保护,extern CAN_transmiter CAN0_transmiter;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,sys/flash.cpp,40,extern 全局对象引用,需确认单一定义和共享访问保护,extern FOC_Controller FOC;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,sys/health.cpp,15,extern 全局对象引用,需确认单一定义和共享访问保护,extern sampler sampler;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,sys/health.cpp,16,extern 全局对象引用,需确认单一定义和共享访问保护,extern CAN_transmiter CAN0_transmiter;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,sys/health.cpp,17,extern 全局对象引用,需确认单一定义和共享访问保护,extern FOC_Controller FOC;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,sys/health.cpp,18,extern 全局对象引用,需确认单一定义和共享访问保护,extern FlashEEPROM flashEEP;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,sys/initial.cpp,38,extern 全局对象引用,需确认单一定义和共享访问保护,extern CAN_transmiter CAN0_transmiter;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,sys/systick.cpp,75,extern 全局对象引用,需确认单一定义和共享访问保护,extern CAN_transmiter CAN0_transmiter;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-GLB-002,sys/systick.cpp,76,extern 全局对象引用,需确认单一定义和共享访问保护,extern FlashEEPROM flashEEP;,确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
info,SUP-ISR-001,device/ADC.cpp,317,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,"extern """" void ADC0_1_IRQHandler(void) {",人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,device/Can.cpp,1330,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,void CAN0_RX0_IRQHandler(void) {,人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,device/Can.cpp,1355,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,void DMA0_Channel4_IRQHandler(void) {,人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,device/Can.cpp,1389,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,void DMA0_Channel5_IRQHandler(void) {,人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,device/Can.cpp,1509,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,void CAN0_TX_IRQHandler(void) {,人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,device/Can.h,121,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,void CAN0_TX_IRQHandler(void);,人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,device/Can.h,126,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,void CAN0_RX0_IRQHandler(void);,人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,device/Can.h,131,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,void DMA0_Channel4_IRQHandler(void);,人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,device/Can.h,136,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,void DMA0_Channel5_IRQHandler(void);,人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,device/Timer.cpp,134,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,void TIMER2_IRQHandler(void) {,人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,device/Timer.cpp,281,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,void TIMER1_IRQHandler(void) {,人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,device/Timer.h,40,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,void TIMER2_IRQHandler(void);,人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,device/Timer.h,56,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,void TIMER1_IRQHandler(void);,人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,device/adc.h,91,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,void ADC0_1_IRQHandler(void);,人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,device/ang_sensor.cpp,145,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,"extern """" void DMA0_Channel2_IRQHandler(void) {",人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,device/ang_sensor.cpp,156,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,"extern """" void DMA0_Channel1_IRQHandler(void) {",人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,sys/systick.cpp,128,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,"extern """" void SysTick_Handler(void) {",人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-ISR-001,sys/systick.h,117,中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用,void EXTI5_9_IRQHandler(void);,人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
info,SUP-LOOP-001,device/Can.cpp,366,无限循环需确认退出策略、看门狗喂狗和低功耗策略,while (1),确认循环内任务调度、异常退出/复位策略和看门狗策略。
info,SUP-LOOP-001,main.cpp,71,无限循环需确认退出策略、看门狗喂狗和低功耗策略,while (1) {,确认循环内任务调度、异常退出/复位策略和看门狗策略。
info,SUP-LOOP-001,sys/systick.cpp,115,无限循环需确认退出策略、看门狗喂狗和低功耗策略,while (1) {,确认循环内任务调度、异常退出/复位策略和看门狗策略。
info,SUP-LOOP-001,sys/systick.cpp,233,无限循环需确认退出策略、看门狗喂狗和低功耗策略,while (1) {,确认循环内任务调度、异常退出/复位策略和看门狗策略。
info,SUP-MAG-001,Algorithm/FOC.cpp,29,业务代码中存在裸数字常量,需确认是否应命名化,extern u16 adc_value[3];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,46,业务代码中存在裸数字常量,需确认是否应命名化,float index_f = angle / 360.0f * (float)COGGING_TABLE_SIZE;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,53,业务代码中存在裸数字常量,需确认是否应命名化,if (rt_velocity < -0.5f) last_table = cogging_table_rev;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,54,业务代码中存在裸数字常量,需确认是否应命名化,else if (rt_velocity > 0.5f) last_table = cogging_table;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,66,业务代码中存在裸数字常量,需确认是否应命名化,float FOC_Controller::cog_calib_run_data[6][COGGING_TABLE_SIZE] = {};,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,77,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u32 SETTLE_TICKS = 16000;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,79,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u32 STOP_TICKS = 10000;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,81,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u32 TARGET_SAMPLES = 3 * COGGING_TABLE_SIZE * 8;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,85,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u32 SAMPLE_DIV = 20;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,87,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u8 TOTAL_RUNS = 6;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,102,业务代码中存在裸数字常量,需确认是否应命名化,control_mode = 6;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,131,业务代码中存在裸数字常量,需确认是否应命名化,if (fabsf(iq) < 5000.0f) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,132,业务代码中存在裸数字常量,需确认是否应命名化,u16 idx = (u16)(angle_el / 360.0f * (float)COGGING_TABLE_SIZE);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,167,业务代码中存在裸数字常量,需确认是否应命名化,control_mode = 6;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,168,业务代码中存在裸数字常量,需确认是否应命名化,target_velocity = (cog_calib_run < 3) ? SLOW_VEL : -SLOW_VEL;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,182,业务代码中存在裸数字常量,需确认是否应命名化,cog_calib_run_data[2][i]) / 3.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,186,业务代码中存在裸数字常量,需确认是否应命名化,cogging_table_rev[i] = (cog_calib_run_data[3][i] +,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,187,业务代码中存在裸数字常量,需确认是否应命名化,cog_calib_run_data[4][i] +,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,188,业务代码中存在裸数字常量,需确认是否应命名化,cog_calib_run_data[5][i]) / 3.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,197,业务代码中存在裸数字常量,需确认是否应命名化,float angle_deg = (float)i / (float)COGGING_TABLE_SIZE * 360.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,205,业务代码中存在裸数字常量,需确认是否应命名化,float angle_deg = (float)i / (float)COGGING_TABLE_SIZE * 360.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,214,业务代码中存在裸数字常量,需确认是否应命名化,"if (i % 8 == 0) printf("""");",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,217,业务代码中存在裸数字常量,需确认是否应命名化,"if (i % 8 == 7 || i == COGGING_TABLE_SIZE - 1) printf("""");",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,226,业务代码中存在裸数字常量,需确认是否应命名化,"if (i % 8 == 0) printf("""");",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,229,业务代码中存在裸数字常量,需确认是否应命名化,"if (i % 8 == 7 || i == COGGING_TABLE_SIZE - 1) printf("""");",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,293,业务代码中存在裸数字常量,需确认是否应命名化,const float current_avg = (current_a + current_b + current_c) / 3.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,301,业务代码中存在裸数字常量,需确认是否应命名化,I_alpha = (2.0f / 3.0f) * current_a - (1.0f / 3.0f) * current_b -,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,302,业务代码中存在裸数字常量,需确认是否应命名化,(1.0f / 3.0f) * current_c;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,313,业务代码中存在裸数字常量,需确认是否应命名化,return Current_kalman.update(I_q * 1000 - KE_FACTOR * rt_velocity);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,327,业务代码中存在裸数字常量,需确认是否应命名化,"29.28f, 28.84f, 28.26f, 28.83f, 29.79f, 30.26f, 29.52f, 28.77f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,328,业务代码中存在裸数字常量,需确认是否应命名化,"28.23f, 27.68f, 26.65f, 25.19f, 23.92f, 22.59f, 19.61f, 16.77f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,329,业务代码中存在裸数字常量,需确认是否应命名化,"13.32f, 10.40f, 7.64f, 3.51f, -0.83f, -4.96f, -8.19f, -11.11f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,330,业务代码中存在裸数字常量,需确认是否应命名化,"-13.40f, -14.39f, -15.69f, -15.99f, -16.39f, -15.50f, -14.76f, -14.21f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,331,业务代码中存在裸数字常量,需确认是否应命名化,"-13.76f, -13.88f, -13.22f, -11.18f, -10.65f, -10.54f, -10.62f, -10.23f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,332,业务代码中存在裸数字常量,需确认是否应命名化,"-9.52f, -8.19f, -6.31f, -4.14f, -1.94f, -0.25f, 2.06f, 4.08f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,333,业务代码中存在裸数字常量,需确认是否应命名化,"6.05f, 8.30f, 9.74f, 11.38f, 13.32f, 15.65f, 17.55f, 20.22f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,334,业务代码中存在裸数字常量,需确认是否应命名化,"21.72f, 22.28f, 23.30f, 24.78f, 23.53f, 23.35f, 23.00f, 21.42f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,335,业务代码中存在裸数字常量,需确认是否应命名化,"20.35f, 20.57f, 20.07f, 18.18f, 17.04f, 16.03f, 14.81f, 13.71f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,336,业务代码中存在裸数字常量,需确认是否应命名化,"12.47f, 10.93f, 9.38f, 6.53f, 4.63f, 3.37f, 1.29f, -1.28f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,337,业务代码中存在裸数字常量,需确认是否应命名化,"-5.08f, -11.11f, -16.35f, -21.00f, -24.61f, -28.30f, -31.11f, -33.48f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,338,业务代码中存在裸数字常量,需确认是否应命名化,"-35.25f, -36.54f, -38.01f, -38.69f, -39.27f, -39.52f, -38.18f, -36.55f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,339,业务代码中存在裸数字常量,需确认是否应命名化,"-34.96f, -33.14f, -31.92f, -31.45f, -31.32f, -30.25f, -29.60f, -28.72f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,340,业务代码中存在裸数字常量,需确认是否应命名化,"-27.51f, -25.30f, -22.66f, -20.87f, -18.19f, -16.10f, -13.25f, -10.81f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,341,业务代码中存在裸数字常量,需确认是否应命名化,"-8.00f, -4.67f, -2.28f, 0.87f, 3.83f, 7.25f, 10.56f, 13.70f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,342,业务代码中存在裸数字常量,需确认是否应命名化,"17.70f, 19.90f, 22.14f, 23.62f, 24.53f, 26.03f, 26.96f, 27.95f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,345,业务代码中存在裸数字常量,需确认是否应命名化,"22.45f, 24.95f, 26.05f, 26.01f, 26.11f, 25.87f, 26.20f, 26.23f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,346,业务代码中存在裸数字常量,需确认是否应命名化,"26.19f, 25.87f, 25.97f, 26.09f, 24.77f, 24.22f, 23.71f, 22.10f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,347,业务代码中存在裸数字常量,需确认是否应命名化,"19.84f, 17.60f, 15.36f, 12.99f, 9.54f, 5.35f, 1.71f, -1.94f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,348,业务代码中存在裸数字常量,需确认是否应命名化,"-4.15f, -6.16f, -7.93f, -9.10f, -10.01f, -10.25f, -10.85f, -11.74f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,349,业务代码中存在裸数字常量,需确认是否应命名化,"-11.98f, -10.78f, -9.65f, -8.89f, -8.14f, -6.85f, -5.94f, -5.37f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,350,业务代码中存在裸数字常量,需确认是否应命名化,"-4.28f, -3.38f, -3.36f, -3.40f, -2.81f, -2.36f, -1.04f, -0.18f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,351,业务代码中存在裸数字常量,需确认是否应命名化,"1.08f, 2.15f, 4.19f, 5.51f, 7.33f, 8.64f, 10.46f, 11.89f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,352,业务代码中存在裸数字常量,需确认是否应命名化,"13.42f, 14.83f, 17.11f, 19.12f, 20.76f, 21.88f, 22.35f, 22.86f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,353,业务代码中存在裸数字常量,需确认是否应命名化,"22.73f, 22.13f, 21.10f, 20.53f, 18.65f, 17.09f, 15.47f, 14.76f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,354,业务代码中存在裸数字常量,需确认是否应命名化,"14.02f, 12.94f, 11.98f, 10.29f, 8.11f, 5.83f, 4.23f, 2.42f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,355,业务代码中存在裸数字常量,需确认是否应命名化,"1.03f, -1.80f, -4.01f, -7.93f, -11.79f, -15.90f, -20.22f, -23.04f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,356,业务代码中存在裸数字常量,需确认是否应命名化,"-25.66f, -28.80f, -30.45f, -32.11f, -33.17f, -33.97f, -34.68f, -34.26f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,357,业务代码中存在裸数字常量,需确认是否应命名化,"-34.18f, -33.78f, -32.47f, -31.11f, -29.40f, -27.89f, -27.05f, -26.72f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,358,业务代码中存在裸数字常量,需确认是否应命名化,"-25.59f, -24.86f, -23.61f, -22.97f, -22.89f, -21.81f, -20.78f, -19.23f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,359,业务代码中存在裸数字常量,需确认是否应命名化,"-17.74f, -15.09f, -13.18f, -10.51f, -8.18f, -5.89f, -3.35f, -0.02f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,360,业务代码中存在裸数字常量,需确认是否应命名化,"2.02f, 3.87f, 6.37f, 9.11f, 12.33f, 14.63f, 17.12f, 19.12f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,366,业务代码中存在裸数字常量,需确认是否应命名化,FOC.cur_loop_p = DEFAULT_current_loop_p * 100 / limit_voltage;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,367,业务代码中存在裸数字常量,需确认是否应命名化,FOC.cur_MIT_p = DEFAULT_current_MIT_p * 100 / limit_voltage;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,368,业务代码中存在裸数字常量,需确认是否应命名化,FOC.vel_loop_p = DEFAULT_vel_loop_p * 100 / limit_voltage;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,369,业务代码中存在裸数字常量,需确认是否应命名化,FOC.vel_angloop_p = DEFAULT_vel_angloop_p * 100;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,370,业务代码中存在裸数字常量,需确认是否应命名化,FOC.vel_MIT_p = DEFAULT_vel_MIT_p * 100;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,371,业务代码中存在裸数字常量,需确认是否应命名化,FOC.ang_loop_p = DEFAULT_angle_loop_p * 100 / limit_voltage;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,372,业务代码中存在裸数字常量,需确认是否应命名化,FOC.ang_angloop_p = DEFAULT_angle_angloop_p * 100 / limit_voltage;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,373,业务代码中存在裸数字常量,需确认是否应命名化,FOC.ang_MIT_p = DEFAULT_angle_MIT_p * 100 / limit_voltage;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,401,业务代码中存在裸数字常量,需确认是否应命名化,float Y = SQRT3DV2 * Ualpha - 0.5f * Ubeta;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,402,业务代码中存在裸数字常量,需确认是否应命名化,float Z = -SQRT3DV2 * Ualpha - 0.5f * Ubeta;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,409,业务代码中存在裸数字常量,需确认是否应命名化,"static const u8 sector_lut[8] = {0, 2, 6, 1, 4, 3, 5, 0};",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,413,业务代码中存在裸数字常量,需确认是否应命名化,"Set_3Pwm(0.5f, 0.5f, 0.5f);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,431,业务代码中存在裸数字常量,需确认是否应命名化,static const float svpwm_coeff[6][4] = {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,432,业务代码中存在裸数字常量,需确认是否应命名化,"{ SQRT3DV2, -0.5f, 0.0f, 1.0f},",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,433,业务代码中存在裸数字常量,需确认是否应命名化,"{ SQRT3DV2, 0.5f, -SQRT3DV2, 0.5f},",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,434,业务代码中存在裸数字常量,需确认是否应命名化,"{ 0.0f, 1.0f, -SQRT3DV2, -0.5f},",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,435,业务代码中存在裸数字常量,需确认是否应命名化,"{ -SQRT3DV2, 0.5f, 0.0f, -1.0f},",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,436,业务代码中存在裸数字常量,需确认是否应命名化,"{ -SQRT3DV2, -0.5f, SQRT3DV2, -0.5f},",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,437,业务代码中存在裸数字常量,需确认是否应命名化,"{ 0.0f, -1.0f, SQRT3DV2, 0.5f},",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,441,业务代码中存在裸数字常量,需确认是否应命名化,float T2 = (svpwm_coeff[sector-1][2] * Ualpha + svpwm_coeff[sector-1][3] * Ubeta) * inv_Udc;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,454,业务代码中存在裸数字常量,需确认是否应命名化,duty_a = 0.5f * T0 + T1 + T2;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,455,业务代码中存在裸数字常量,需确认是否应命名化,duty_b = 0.5f * T0 + T2;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,456,业务代码中存在裸数字常量,需确认是否应命名化,duty_c = 0.5f * T0;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,458,业务代码中存在裸数字常量,需确认是否应命名化,case 2:,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,459,业务代码中存在裸数字常量,需确认是否应命名化,duty_a = 0.5f * T0 + T1;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,460,业务代码中存在裸数字常量,需确认是否应命名化,duty_b = 0.5f * T0 + T1 + T2;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,461,业务代码中存在裸数字常量,需确认是否应命名化,duty_c = 0.5f * T0;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,463,业务代码中存在裸数字常量,需确认是否应命名化,case 3:,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,464,业务代码中存在裸数字常量,需确认是否应命名化,duty_a = 0.5f * T0;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,465,业务代码中存在裸数字常量,需确认是否应命名化,duty_b = 0.5f * T0 + T1 + T2;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,466,业务代码中存在裸数字常量,需确认是否应命名化,duty_c = 0.5f * T0 + T2;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,468,业务代码中存在裸数字常量,需确认是否应命名化,case 4:,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,469,业务代码中存在裸数字常量,需确认是否应命名化,duty_a = 0.5f * T0;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,470,业务代码中存在裸数字常量,需确认是否应命名化,duty_b = 0.5f * T0 + T1;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,471,业务代码中存在裸数字常量,需确认是否应命名化,duty_c = 0.5f * T0 + T1 + T2;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,473,业务代码中存在裸数字常量,需确认是否应命名化,case 5:,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,474,业务代码中存在裸数字常量,需确认是否应命名化,duty_a = 0.5f * T0 + T2;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,475,业务代码中存在裸数字常量,需确认是否应命名化,duty_b = 0.5f * T0;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,476,业务代码中存在裸数字常量,需确认是否应命名化,duty_c = 0.5f * T0 + T1 + T2;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,478,业务代码中存在裸数字常量,需确认是否应命名化,case 6:,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,479,业务代码中存在裸数字常量,需确认是否应命名化,duty_a = 0.5f * T0 + T1 + T2;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,480,业务代码中存在裸数字常量,需确认是否应命名化,duty_b = 0.5f * T0;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,481,业务代码中存在裸数字常量,需确认是否应命名化,duty_c = 0.5f * T0 + T1;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,484,业务代码中存在裸数字常量,需确认是否应命名化,duty_a = 0.5f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,485,业务代码中存在裸数字常量,需确认是否应命名化,duty_b = 0.5f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,486,业务代码中存在裸数字常量,需确认是否应命名化,duty_c = 0.5f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,534,业务代码中存在裸数字常量,需确认是否应命名化,if (HOLD_PWM_DUTY > 0.95f) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,535,业务代码中存在裸数字常量,需确认是否应命名化,hold_pwm_duty = 0.95f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,548,业务代码中存在裸数字常量,需确认是否应命名化,float hold_pwm_duty = target_velocity/100;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,569,业务代码中存在裸数字常量,需确认是否应命名化,if (voltage < 36.0f and voltage > 8.0f) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,572,业务代码中存在裸数字常量,需确认是否应命名化,v_half = voltage * 0.5f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,605,业务代码中存在裸数字常量,需确认是否应命名化,float current_vbus = adc_value[2] * (3.3f / 4096.0f) * 11.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,661,业务代码中存在裸数字常量,需确认是否应命名化,"2.0f, voltage_power_supply * 0.5f);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,700,业务代码中存在裸数字常量,需确认是否应命名化,if (fabsf(target_delta) > 5.0f) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,763,业务代码中存在裸数字常量,需确认是否应命名化,if (target_velocity < -120.0f) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,764,业务代码中存在裸数字常量,需确认是否应命名化,vel_inVelAngloop.set_P(vel_angloop_p * 2.0f);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,765,业务代码中存在裸数字常量,需确认是否应命名化,} else if (target_velocity < -30.0f) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,766,业务代码中存在裸数字常量,需确认是否应命名化,vel_inVelAngloop.set_P(vel_angloop_p * 1.5f);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,774,业务代码中存在裸数字常量,需确认是否应命名化,if (fabsf(target_velocity - last_vang_target_vel) > 5.0f) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.cpp,817,业务代码中存在裸数字常量,需确认是否应命名化,if (fabsf(target_velocity - last_mit_target_vel) > 5.0f) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,48,业务代码中存在裸数字常量,需确认是否应命名化,float voltage_power_supply = 24.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,191,业务代码中存在裸数字常量,需确认是否应命名化,static float cog_calib_run_data[6][COGGING_TABLE_SIZE];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,198,业务代码中存在裸数字常量,需确认是否应命名化,"PIDController{DEFAULT_vel_loop_p * 100 / limit_voltage, vel_loop_Ki,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,199,业务代码中存在裸数字常量,需确认是否应命名化,"vel_loop_Kd, 10000, voltage_power_supply};",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,201,业务代码中存在裸数字常量,需确认是否应命名化,"PIDController{DEFAULT_angle_loop_p * 100 / limit_voltage, 100.0f, 0.2f,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,202,业务代码中存在裸数字常量,需确认是否应命名化,"10000000, voltage_power_supply};",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,204,业务代码中存在裸数字常量,需确认是否应命名化,"DEFAULT_current_loop_p * 100 / limit_voltage, current_loop_Ki,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,205,业务代码中存在裸数字常量,需确认是否应命名化,"current_loop_Kd, 1500, voltage_power_supply};",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,207,业务代码中存在裸数字常量,需确认是否应命名化,"PIDController{DEFAULT_vel_angloop_p * 100, vel_angloop_Ki,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,210,业务代码中存在裸数字常量,需确认是否应命名化,"PIDController{DEFAULT_angle_angloop_p * 100 / voltage_power_supply,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,211,业务代码中存在裸数字常量,需确认是否应命名化,"ang_angloop_Ki, ang_angloop_Kd, 1e4, 100};",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,214,业务代码中存在裸数字常量,需确认是否应命名化,"PIDController{DEFAULT_angle_MIT_p * 100 / limit_voltage, angle_MIT_Ki,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,215,业务代码中存在裸数字常量,需确认是否应命名化,"angle_MIT_Kd, 1e5, 100};",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,217,业务代码中存在裸数字常量,需确认是否应命名化,"DEFAULT_vel_MIT_p * 100, vel_MIT_Ki, vel_MIT_Kd, 1e9, 1000};",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,219,业务代码中存在裸数字常量,需确认是否应命名化,"DEFAULT_current_loop_p * 100 / limit_voltage, current_loop_Ki,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,220,业务代码中存在裸数字常量,需确认是否应命名化,"current_loop_Kd, 1500, voltage_power_supply};",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/FOC.h,237,业务代码中存在裸数字常量,需确认是否应命名化,float v_half = voltage_power_supply * 0.5f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/Filter.cpp,69,业务代码中存在裸数字常量,需确认是否应命名化,"std::nth_element(sorted, sorted + size / 2, sorted + size);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/Filter.cpp,71,业务代码中存在裸数字常量,需确认是否应命名化,return sorted[size / 2];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/Filter.cpp,190,业务代码中存在裸数字常量,需确认是否应命名化,if (error > 180.0f) error -= 360.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/Filter.cpp,191,业务代码中存在裸数字常量,需确认是否应命名化,else if (error < -180.0f) error += 360.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/Filter.h,99,业务代码中存在裸数字常量,需确认是否应命名化,const T MIN_COVARIANCE = static_cast<T>(1e-6);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,Algorithm/pid.cpp,30,业务代码中存在裸数字常量,需确认是否应命名化,integral_prev + I * TIME_SLICE * 0.5f * (error + error_prev);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,20,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float ADC_SCALE = 3.3f / 4096.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,22,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float TEMP_FACTOR = 1000.0f / 4.3f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,24,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float VCC_FACTOR = 11.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,27,业务代码中存在裸数字常量,需确认是否应命名化,1.0f / 50.0f * 100.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,31,业务代码中存在裸数字常量,需确认是否应命名化,u16 adc_value[3] = {0};,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,32,业务代码中存在裸数字常量,需确认是否应命名化,static volatile u16 adc_current_value[3] = {0};,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,67,业务代码中存在裸数字常量,需确认是否应命名化,dma_data_parameter.number = 3;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,104,业务代码中存在裸数字常量,需确认是否应命名化,"adc_channel_length_config(ADC0, ADC_REGULAR_CHANNEL, 3);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,109,业务代码中存在裸数字常量,需确认是否应命名化,"adc_regular_channel_config(ADC0, 2, ADC_CHANNEL_6, ADC_SAMPLETIME_28POINT5);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,117,业务代码中存在裸数字常量,需确认是否应命名化,"adc_channel_length_config(ADC0, ADC_INSERTED_CHANNEL, 4);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,120,业务代码中存在裸数字常量,需确认是否应命名化,"adc_inserted_channel_config(ADC0, 2, ADC_CHANNEL_4, ADC_SAMPLETIME_55POINT5);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,121,业务代码中存在裸数字常量,需确认是否应命名化,"adc_inserted_channel_config(ADC0, 3, ADC_CHANNEL_5, ADC_SAMPLETIME_55POINT5);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,148,业务代码中存在裸数字常量,需确认是否应命名化,static_cast<u16>((-CURRENT_OFFSET / ADC_SCALE) + 0.5f));,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,152,业务代码中存在裸数字常量,需确认是否应命名化,(1.43f - adc_value[0] * ADC_SCALE) * TEMP_FACTOR + 35.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,158,业务代码中存在裸数字常量,需确认是否应命名化,vbus_samples[i] = adc_value[2] * ADC_SCALE * VCC_FACTOR;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,160,业务代码中存在裸数字常量,需确认是否应命名化,float R_now = (float)adc_value[1] / (4096 - (float)adc_value[1]) * 4700;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,162,业务代码中存在裸数字常量,需确认是否应命名化,1.0f / (0.00335f + 0.00025f * log(R_now / 10000.0f)) - 273.15f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,241,业务代码中存在裸数字常量,需确认是否应命名化,(1.43f - adc_value[0] * ADC_SCALE) * TEMP_FACTOR + 35.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,259,业务代码中存在裸数字常量,需确认是否应命名化,float R_now = (float)adc_value[1] / (4096 - (float)adc_value[1]) * 4700;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,261,业务代码中存在裸数字常量,需确认是否应命名化,1.0f / (0.00335f + 0.00025f * log(R_now / 10000.0f)) - 273.15f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,285,业务代码中存在裸数字常量,需确认是否应命名化,currW_samples[idx] = current_adc_to_ma(adc_current_value[2]);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,299,业务代码中存在裸数字常量,需确认是否应命名化,vbus_samples[temp_vbus_head] = adc_value[2] * ADC_SCALE * VCC_FACTOR;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,305,业务代码中存在裸数字常量,需确认是否应命名化,const u8 mid = ADC_FILTER_SIZE / 2;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ADC.cpp,323,业务代码中存在裸数字常量,需确认是否应命名化,"adc_current_value[2] = adc_inserted_data_read(ADC0, ADC_INSERTED_CHANNEL_3);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,49,业务代码中存在裸数字常量,需确认是否应命名化,uint8_t can_rx_buffer[64];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,50,业务代码中存在裸数字常量,需确认是否应命名化,static uint32_t can_rx_dma_words[16];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,63,业务代码中存在裸数字常量,需确认是否应命名化,u8 data[64];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,82,业务代码中存在裸数字常量,需确认是否应命名化,"static constexpr u8 CANFD_DLC_LENGTH_TABLE[7] = {12, 16, 20, 24, 32, 48, 64};",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,103,业务代码中存在裸数字常量,需确认是否应命名化,return ((u32)node_id << 16) | (base_id & 0xFFFF);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,116,业务代码中存在裸数字常量,需确认是否应命名化,u16 rx_node_id = (u16)((received_id >> 16) & 0xFFFF);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,323,业务代码中存在裸数字常量,需确认是否应命名化,dma_rx_parameter.number = 16;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,363,业务代码中存在裸数字常量,需确认是否应命名化,can_parameter.prescaler = 6;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,426,业务代码中存在裸数字常量,需确认是否应命名化,can_parameter.prescaler = 6;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,445,业务代码中存在裸数字常量,需确认是否应命名化,can_fd_parameter.data_prescaler = 6;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,499,业务代码中存在裸数字常量,需确认是否应命名化,can_parameter.prescaler = 6;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,501,业务代码中存在裸数字常量,需确认是否应命名化,u16 i = 200;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,503,业务代码中存在裸数字常量,需确认是否应命名化,delay_1ms(10);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,516,业务代码中存在裸数字常量,需确认是否应命名化,((uint16_t)(DEV_CAN_LOOPBACK_ID)) << 3U | (1U << 2);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,545,业务代码中存在裸数字常量,需确认是否应命名化,"std::uniform_int_distribution<int> dis(0, 255);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,552,业务代码中存在裸数字常量,需确认是否应命名化,transmit_message.tx_dlen = 7;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,621,业务代码中存在裸数字常量,需确认是否应命名化,transmit_message.tx_dlen = 7;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,762,业务代码中存在裸数字常量,需确认是否应命名化,if (rx_queue[rx_queue_tail].length > 64) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,763,业务代码中存在裸数字常量,需确认是否应命名化,rx_queue[rx_queue_tail].length = 64;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,815,业务代码中存在裸数字常量,需确认是否应命名化,message->fd_flag = (uint8_t)((CAN_RFIFOMP_FDF & rfifomp) >> 7);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,819,业务代码中存在裸数字常量,需确认是否应命名化,message->fd_brs = (uint8_t)((rfifomp & CAN_RFIFOMP_BRS) >> 5);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,820,业务代码中存在裸数字常量,需确认是否应命名化,message->fd_esi = (uint8_t)((rfifomp & CAN_RFIFOMP_ESI) >> 4);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,833,业务代码中存在裸数字常量,需确认是否应命名化,if (can_rx_dma_message.rx_dlen > 64) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,834,业务代码中存在裸数字常量,需确认是否应命名化,can_rx_dma_message.rx_dlen = 64;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1004,业务代码中存在裸数字常量,需确认是否应命名化,limit_voltage = FOC.limit_voltage * 1000;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1005,业务代码中存在裸数字常量,需确认是否应命名化,mcu_temp = sampler.get_mcu_temp() * 100;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1006,业务代码中存在裸数字常量,需确认是否应命名化,motor_temp = sampler.get_drv_temp() * 100;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1007,业务代码中存在裸数字常量,需确认是否应命名化,Power_Voltage = sampler.get_vbus_voltage() * 1000;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1015,业务代码中存在裸数字常量,需确认是否应命名化,u_current_union.f = sampler.get_current('') * 1000;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1016,业务代码中存在裸数字常量,需确认是否应命名化,w_current_union.f = sampler.get_current('') * 1000;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1017,业务代码中存在裸数字常量,需确认是否应命名化,v_current_union.f = sampler.get_current('') * 1000;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1035,业务代码中存在裸数字常量,需确认是否应命名化,"memset(transmit_data, 0, 32);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1037,业务代码中存在裸数字常量,需确认是否应命名化,"pack_u16_to_bytes(transmit_data, 2, motor_temp);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1038,业务代码中存在裸数字常量,需确认是否应命名化,"pack_u16_to_bytes(transmit_data, 4, u16(u_current_union.f));",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1039,业务代码中存在裸数字常量,需确认是否应命名化,"pack_u16_to_bytes(transmit_data, 6, u16(v_current_union.f));",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1040,业务代码中存在裸数字常量,需确认是否应命名化,"pack_u16_to_bytes(transmit_data, 8, u16(w_current_union.f));",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1041,业务代码中存在裸数字常量,需确认是否应命名化,transmit_data[10] =,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1042,业务代码中存在裸数字常量,需确认是否应命名化,(transmit_data[10] & ~0x07) |,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1044,业务代码中存在裸数字常量,需确认是否应命名化,((ThermalStatus & 0x01) << 2) | ((EEPROMStatus & 0x07) << 3));,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1045,业务代码中存在裸数字常量,需确认是否应命名化,"pack_u16_to_bytes(transmit_data, 11, Power_Voltage);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1046,业务代码中存在裸数字常量,需确认是否应命名化,"pack_float_to_bytes(transmit_data, 13, rt_angle_union);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1047,业务代码中存在裸数字常量,需确认是否应命名化,"pack_float_to_bytes(transmit_data, 17, rt_velocity_union);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1048,业务代码中存在裸数字常量,需确认是否应命名化,"pack_float_to_bytes(transmit_data, 21, rt_current_union);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1049,业务代码中存在裸数字常量,需确认是否应命名化,"pack_float_to_bytes(transmit_data, 25, testfloat_union);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1050,业务代码中存在裸数字常量,需确认是否应命名化,transmit_data[29] = test_u16 & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1051,业务代码中存在裸数字常量,需确认是否应命名化,transmit_data[30] = (test_u16 >> 8) & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1052,业务代码中存在裸数字常量,需确认是否应命名化,transmit_data[31] = cpu_usage;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1055,业务代码中存在裸数字常量,需确认是否应命名化,"CANFD_AsyncSend(build_can_id(CANFD_STATUS_ID), 32, transmit_data);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1058,业务代码中存在裸数字常量,需确认是否应命名化,"memset(transmit_data, 0, 24);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1061,业务代码中存在裸数字常量,需确认是否应命名化,"pack_float_to_bytes(transmit_data, 3, target_current_union);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1062,业务代码中存在裸数字常量,需确认是否应命名化,"pack_float_to_bytes(transmit_data, 7, target_velocity_union);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1063,业务代码中存在裸数字常量,需确认是否应命名化,"pack_float_to_bytes(transmit_data, 11, target_angle_union);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1066,业务代码中存在裸数字常量,需确认是否应命名化,"CANFD_AsyncSend(build_can_id(CANFD_CONFIG_ID), 24, transmit_data);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1102,业务代码中存在裸数字常量,需确认是否应命名化,u16 sender_node_id = (u16)((current_message.rx_efid >> 16) & 0xFFFF);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1138,业务代码中存在裸数字常量,需确认是否应命名化,if (current_message.rx_dlen >= 2) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1153,业务代码中存在裸数字常量,需确认是否应命名化,transmit_data[2] =,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1154,业务代码中存在裸数字常量,需确认是否应命名化,(u8)((new_node_id >> 8) & 0xFF);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1158,业务代码中存在裸数字常量,需确认是否应命名化,"u8 send_result = CANFD_AsyncSend(build_can_id(CANFD_SET_NODE_ID), 3,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1179,业务代码中存在裸数字常量,需确认是否应命名化,"CANFD_AsyncSend(build_can_id(CANFD_SET_NODE_ID), 3,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1188,业务代码中存在裸数字常量,需确认是否应命名化,transmit_data[2] = (u8)((new_node_id >> 8) & 0xFF);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1190,业务代码中存在裸数字常量,需确认是否应命名化,"CANFD_AsyncSend(build_can_id(CANFD_SET_NODE_ID), 3,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1207,业务代码中存在裸数字常量,需确认是否应命名化,"float(unpack_bytes_to_u16(current_message.rx_data, 1)) / 1000;",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1210,业务代码中存在裸数字常量,需确认是否应命名化,"unpack_bytes_to_float(current_message.rx_data, 3).f;",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1215,业务代码中存在裸数字常量,需确认是否应命名化,"unpack_bytes_to_float(current_message.rx_data, 7).f;",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1220,业务代码中存在裸数字常量,需确认是否应命名化,"unpack_bytes_to_float(current_message.rx_data, 11).f;",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1229,业务代码中存在裸数字常量,需确认是否应命名化,"u16 P_config = unpack_bytes_to_u16(current_message.rx_data, 15);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1233,业务代码中存在裸数字常量,需确认是否应命名化,"P_config = unpack_bytes_to_u16(current_message.rx_data, 17);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1238,业务代码中存在裸数字常量,需确认是否应命名化,"P_config = unpack_bytes_to_u16(current_message.rx_data, 19);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1244,业务代码中存在裸数字常量,需确认是否应命名化,u8 eigth_byte = current_message.rx_data[7];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1255,业务代码中存在裸数字常量,需确认是否应命名化,if (first_byte >> 2 & 0x01) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1259,业务代码中存在裸数字常量,需确认是否应命名化,if (first_byte >> 3 & 0x01) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1266,业务代码中存在裸数字常量,需确认是否应命名化,if (first_byte >> 4 & 0x01) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1271,业务代码中存在裸数字常量,需确认是否应命名化,if (eigth_byte & 0x80 >> 7) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1287,业务代码中存在裸数字常量,需确认是否应命名化,"CANFD_AsyncSend(build_can_id(CANFD_OTA_ACK_ID), 2,",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1294,业务代码中存在裸数字常量,需确认是否应命名化,"CANFD_AsyncSend(build_can_id(CANFD_GET_NODE_ID), 2, transmit_data);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1401,业务代码中存在裸数字常量,需确认是否应命名化,if (length > 8) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.cpp,1419,业务代码中存在裸数字常量,需确认是否应命名化,for (int i = 0; i < length && i < 8; i++) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.h,25,业务代码中存在裸数字常量,需确认是否应命名化,u8 b[4];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.h,38,业务代码中存在裸数字常量,需确认是否应命名化,buffer[offset + 1] = (u8)((value >> 8) & 0xFF);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.h,53,业务代码中存在裸数字常量,需确认是否应命名化,buffer[offset + 2] = float_union.b[2];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.h,54,业务代码中存在裸数字常量,需确认是否应命名化,buffer[offset + 3] = float_union.b[3];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.h,65,业务代码中存在裸数字常量,需确认是否应命名化,short value = (short)(buffer[offset] | (buffer[offset + 1] << 8));,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.h,77,业务代码中存在裸数字常量,需确认是否应命名化,u16 value = (u16)(buffer[offset] | (buffer[offset + 1] << 8));,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.h,92,业务代码中存在裸数字常量,需确认是否应命名化,float_union.b[2] = buffer[offset + 2];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.h,93,业务代码中存在裸数字常量,需确认是否应命名化,float_union.b[3] = buffer[offset + 3];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.h,161,业务代码中存在裸数字常量,需确认是否应命名化,static const uint8_t CAN_RX_BUFFER_SIZE = 8;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.h,162,业务代码中存在裸数字常量,需确认是否应命名化,static const u32 CAN_SILENT_DURATION_MS = 10000;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Can.h,195,业务代码中存在裸数字常量,需确认是否应命名化,u8 transmit_data[64];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Timer.cpp,19,业务代码中存在裸数字常量,需确认是否应命名化,extern u16 adc_value[3];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Timer.cpp,27,业务代码中存在裸数字常量,需确认是否应命名化,static const u32 task_schedule_100us[10] = {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Timer.cpp,41,业务代码中存在裸数字常量,需确认是否应命名化,static const u32 task_schedule_1ms[10] = {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Timer.cpp,48,业务代码中存在裸数字常量,需确认是否应命名化,static const u32 task_schedule_10ms[10] = {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Timer.cpp,53,业务代码中存在裸数字常量,需确认是否应命名化,static const u32 task_schedule_100ms[10] = {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Timer.cpp,69,业务代码中存在裸数字常量,需确认是否应命名化,"nvic_irq_enable(TIMER1_IRQn, 0, 2);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/Timer.cpp,299,业务代码中存在裸数字常量,需确认是否应命名化,if (channel <= 3) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ang_sensor.cpp,124,业务代码中存在裸数字常量,需确认是否应命名化,uint32_t timeout = 100;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,device/ang_sensor.cpp,203,业务代码中存在裸数字常量,需确认是否应命名化,spi_init_str.prescale = 24;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,main.cpp,69,业务代码中存在裸数字常量,需确认是否应命名化,watchdog_init(50);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,main.cpp,150,业务代码中存在裸数字常量,需确认是否应命名化,FOC.control_mode < 8) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,32,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u16 SOFTWARE_VERSION_MAJOR = 26;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,34,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u16 SOFTWARE_VERSION_MINOR = 5;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,36,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u16 SOFTWARE_VERSION_PATCH = 19;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,38,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u16 SOFTWARE_VERSION_BUILD = 2;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,41,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u16 HARDWARE_VERSION_MAJOR = 25;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,43,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u16 HARDWARE_VERSION_MINOR = 12;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,50,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u16 BOOT_VERSION_MAJOR = 26;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,54,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u16 BOOT_VERSION_PATCH = 12;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,125,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u32 OTA_CONFIG_NUM = 6;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,145,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u8 PP = 11;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,149,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u16 REDUCTION_RATIO = 25;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,151,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float CURRENT_OFFSET = -3.31f / 2.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,157,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float ANGLESENS_CALIBRATION_ANGLE = 83.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,171,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float ANGLE_OBSERVER_ALPHA = 0.75f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,179,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float VELOCITY_KALMAN_INITIAL_COVARIANCE = 1e-3f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,182,业务代码中存在裸数字常量,需确认是否应命名化,5e-4f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,191,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float CURRENT_KALMAN_INITIAL_COVARIANCE = 100.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,193,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float CURRENT_KALMAN_PROCESS_NOISE_Q = 10.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,195,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float CURRENT_KALMAN_MEASUREMENT_NOISE_R = 5e-5f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,199,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float DEFAULT_current_loop_p = 0.1f / 100 * 12;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,201,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float current_loop_Ki = 0.55f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,203,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float current_loop_Kd = 3e-4f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,206,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float DEFAULT_vel_loop_p = 0.018f / 100 * 12;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,208,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float vel_loop_Ku = 3.600000e-03 * 0.7 * 100 / 12;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,210,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float vel_loop_Tu = 17.0f * 1e-3f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,212,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float vel_loop_Ki = 1.2 * vel_loop_Ku / vel_loop_Tu;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,214,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float vel_loop_Kd = 0.075 * vel_loop_Ku * vel_loop_Tu * 2;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,217,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float DEFAULT_vel_angloop_p = 0.4f / 100;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,219,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float vel_angloop_Ki = 5.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,225,业务代码中存在裸数字常量,需确认是否应命名化,150.0f / 100 * 12;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,232,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float DEFAULT_angle_loop_p = 60.0f / 100 * 12;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,235,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float DEFAULT_angle_MIT_p = 100.0f / 100 * 12;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,242,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float DEFAULT_vel_MIT_p = 5.0f / 100;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,244,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float vel_MIT_Ki = 15.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,249,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float DEFAULT_current_MIT_p = 0.2f / 100 * 12;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,253,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float current_MIT_Kd = 3e-4f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,260,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float ADC_MAX = 65536.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,262,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float PI = 3.14159265358979323846f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,264,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float INV_PI_3 = 3.0f / PI;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,266,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float PI_3 = PI / 3.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,268,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float _1_SQRT3 = 0.57735026919f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,270,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float _3PI_2 = 4.71238898038f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,272,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float SQRT3 = 1.7320508075688772f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,274,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float SQRT3DV2 = 0.8660254037844386f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,276,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float COS_PI_3 = 0.5f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,278,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float ANGLE_FACTOR = 25.0f / 180.0f * PI;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,280,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float DEG2RAD = 1.0f / 180.0f * PI;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,282,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float RAD2DEG = 180.0f / PI;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,286,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u8 CONFIG_SAVED_NUM = 6;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,290,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u16 LUT_SIZE = 1024;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,294,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u16 LUT_SCALE = (LUT_SIZE / (2.0f * PI));,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,338,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u8 ADC_FILTER_SIZE = 6;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,342,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float ERROR_ADC_VAL = 255.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,344,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float MAX_TEMP = 150.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,346,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float MIN_TEMP = -40.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,348,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float MAX_CURRENT = 40.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,350,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float MIN_CURRENT = -40.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,352,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float MAX_VCC = 65.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,358,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u16 VEL_FILTER_SIZE = 4;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,364,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float ANGLE_WRAP_THRESHOLD = 300.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,366,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float ANGLE_WRAP_VALUE = 360.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,368,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float RAD_FACTOR = 1.0f / ADC_MAX * 2.0f * PI;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,370,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float ANGLESENS_FACTOR = 1.0f / ADC_MAX * 360.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,374,业务代码中存在裸数字常量,需确认是否应命名化,constexpr int TIMER2_PRESCALER = 119;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,376,业务代码中存在裸数字常量,需确认是否应命名化,constexpr int TIMER2_PERIOD = 49;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,381,业务代码中存在裸数字常量,需确认是否应命名化,(TIMER2_PERIOD + 1) * (TIMER2_PRESCALER + 1) / 120000000.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,391,业务代码中存在裸数字常量,需确认是否应命名化,constexpr int TIMER1_PERIOD = 2999;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,396,业务代码中存在裸数字常量,需确认是否应命名化,(TIMER1_PERIOD + 1) * 0.41 - 1;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,400,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u16 COGGING_TABLE_SIZE = 128;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,413,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float VBUS_DROP_THRESHOLD = 5.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,415,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float VBUS_ABSOLUTE_MIN = 12.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,417,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u32 VBUS_DEBOUNCE_COUNT = 5;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,419,业务代码中存在裸数字常量,需确认是否应命名化,constexpr float VBUS_RECOVERY_RATIO = 0.9f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,427,业务代码中存在裸数字常量,需确认是否应命名化,while (angle >= 360.0f) angle -= 360.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/config.h,428,业务代码中存在裸数字常量,需确认是否应命名化,while (angle < 0.0f) angle += 360.0f;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,97,业务代码中存在裸数字常量,需确认是否应命名化,"status_read[2] = readFloat(ADDR_VOLTAGE_LIMIT, &data[1]);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,98,业务代码中存在裸数字常量,需确认是否应命名化,"status_read[3] = readFloat(ADDR_VEL_LIMIT, &data[2]);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,99,业务代码中存在裸数字常量,需确认是否应命名化,"status_read[4] = readFloat(ADDR_ANGLE, &data[3]);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,100,业务代码中存在裸数字常量,需确认是否应命名化,"status_read[5] = readFloat(ADDR_TARGET_ANGLE, &data[4]);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,101,业务代码中存在裸数字常量,需确认是否应命名化,"status_read[6] = readFloat(ADDR_TARGET_VEL, &data[5]);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,156,业务代码中存在裸数字常量,需确认是否应命名化,FOC.target_current = data[2];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,157,业务代码中存在裸数字常量,需确认是否应命名化,KTH7823.angle_set(data[3]);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,158,业务代码中存在裸数字常量,需确认是否应命名化,FOC.target_angle = data[4];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,159,业务代码中存在裸数字常量,需确认是否应命名化,FOC.target_velocity = data[5];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,185,业务代码中存在裸数字常量,需确认是否应命名化,*data = (u16)((data_word & DATA_U16_MASK) >> 16);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,242,业务代码中存在裸数字常量,需确认是否应命名化,u32 data_word_to_write = ((u32)data << 16) | (u32)virtualAddr;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,441,业务代码中存在裸数字常量,需确认是否应命名化,"status = writeFloat(ADDR_VEL_LIMIT, data[2]);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,447,业务代码中存在裸数字常量,需确认是否应命名化,"status = writeFloat(ADDR_ANGLE, data[3]);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,453,业务代码中存在裸数字常量,需确认是否应命名化,"status = writeFloat(ADDR_TARGET_ANGLE, data[4]);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,459,业务代码中存在裸数字常量,需确认是否应命名化,"status = writeFloat(ADDR_TARGET_VEL, data[5]);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,507,业务代码中存在裸数字常量,需确认是否应命名化,u32 crc_data[2];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,511,业务代码中存在裸数字常量,需确认是否应命名化,"return crc_block_data_calculate(crc_data, 2);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,577,业务代码中存在裸数字常量,需确认是否应命名化,u32 write_data[4];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,580,业务代码中存在裸数字常量,需确认是否应命名化,write_data[2] = counter;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,581,业务代码中存在裸数字常量,需确认是否应命名化,write_data[3] = crc;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,588,业务代码中存在裸数字常量,需确认是否应命名化,for (u8 i = 0; i < 4; i++) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,820,业务代码中存在裸数字常量,需确认是否应命名化,temp_val[2] = *flash_ptr;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,822,业务代码中存在裸数字常量,需确认是否应命名化,temp_val[3] = *flash_ptr;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,824,业务代码中存在裸数字常量,需确认是否应命名化,temp_val[4] = *flash_ptr;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,826,业务代码中存在裸数字常量,需确认是否应命名化,temp_val[5] = *flash_ptr;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,832,业务代码中存在裸数字常量,需确认是否应命名化,"temp_val[0], temp_val[1], temp_val[2], temp_val[3],",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,833,业务代码中存在裸数字常量,需确认是否应命名化,"temp_val[4], temp_val[5]);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,845,业务代码中存在裸数字常量,需确认是否应命名化,u32 current_addr = n_APP_LATEST_AVAL_ADDR + 4 * i;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,864,业务代码中存在裸数字常量,需确认是否应命名化,temp_val[2] = *flash_ptr;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,866,业务代码中存在裸数字常量,需确认是否应命名化,temp_val[3] = *flash_ptr;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,868,业务代码中存在裸数字常量,需确认是否应命名化,temp_val[4] = *flash_ptr;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,870,业务代码中存在裸数字常量,需确认是否应命名化,temp_val[5] = *flash_ptr;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,874,业务代码中存在裸数字常量,需确认是否应命名化,"temp_val[0], temp_val[1], temp_val[2], temp_val[3],",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,875,业务代码中存在裸数字常量,需确认是否应命名化,"temp_val[4], temp_val[5]);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,889,业务代码中存在裸数字常量,需确认是否应命名化,for (int i = 0; i < 8; i++) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,912,业务代码中存在裸数字常量,需确认是否应命名化,uint32_t reset_handler = *(__IO uint32_t *)(BOOTLOADER_START_ADDR + 4);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,952,业务代码中存在裸数字常量,需确认是否应命名化,delay_1ms(1000);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,969,业务代码中存在裸数字常量,需确认是否应命名化,"(uint32_t *)APPLATEST_START_ADDR, APP_MAX_SIZE / 4);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,972,业务代码中存在裸数字常量,需确认是否应命名化,uint32_t src_data = src_ptr[offset / 4];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,989,业务代码中存在裸数字常量,需确认是否应命名化,delay_1ms(1000);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,997,业务代码中存在裸数字常量,需确认是否应命名化,offset += 4;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,1000,业务代码中存在裸数字常量,需确认是否应命名化,if ((offset % 4096) == 0) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/flash.cpp,1013,业务代码中存在裸数字常量,需确认是否应命名化,APP_MAX_SIZE / 4);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/health.cpp,25,业务代码中存在裸数字常量,需确认是否应命名化,constexpr u16 PROTECT_TIME = 6000;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/health.cpp,40,业务代码中存在裸数字常量,需确认是否应命名化,if (drv_temp == 255),安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/health.cpp,42,业务代码中存在裸数字常量,需确认是否应命名化,if (mcu_temp == 255),安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/health.cpp,63,业务代码中存在裸数字常量,需确认是否应命名化,"u32 currents[3] = {(u32)(sampler.get_current('') * 1000),",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/health.cpp,64,业务代码中存在裸数字常量,需确认是否应命名化,"(u32)(sampler.get_current('') * 1000),",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/health.cpp,65,业务代码中存在裸数字常量,需确认是否应命名化,(u32)(sampler.get_current('') * 1000)};,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/health.cpp,68,业务代码中存在裸数字常量,需确认是否应命名化,"current_max = max(currents[0], currents[1], currents[2]);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/health.cpp,69,业务代码中存在裸数字常量,需确认是否应命名化,if (current_max < 2000) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/health.cpp,72,业务代码中存在裸数字常量,需确认是否应命名化,} else if (current_max > 3800) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/health.cpp,75,业务代码中存在裸数字常量,需确认是否应命名化,} else if (current_max > 3400) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/health.cpp,78,业务代码中存在裸数字常量,需确认是否应命名化,} else if (current_max > 3000) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/health.cpp,81,业务代码中存在裸数字常量,需确认是否应命名化,} else if (current_max > 2000) {,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/health.h,46,业务代码中存在裸数字常量,需确认是否应命名化,u32 thermal_capacity = 3600000;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/health.h,48,业务代码中存在裸数字常量,需确认是否应命名化,u16 gapTimeMs = 10;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/health.h,52,业务代码中存在裸数字常量,需确认是否应命名化,": thermalRate(FLOAT_TO_Q16_16(0.995f)),",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/health.h,53,业务代码中存在裸数字常量,需确认是否应命名化,recoveryRate(FLOAT_TO_Q16_16(0.33f)) {},安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,142,业务代码中存在裸数字常量,需确认是否应命名化,u8 versionData[24] = {0};,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,147,业务代码中存在裸数字常量,需确认是否应命名化,versionData[1] = (softwareVersion.major >> 8) & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,148,业务代码中存在裸数字常量,需确认是否应命名化,versionData[2] = softwareVersion.minor & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,149,业务代码中存在裸数字常量,需确认是否应命名化,versionData[3] = (softwareVersion.minor >> 8) & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,150,业务代码中存在裸数字常量,需确认是否应命名化,versionData[4] = softwareVersion.patch & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,151,业务代码中存在裸数字常量,需确认是否应命名化,versionData[5] = (softwareVersion.patch >> 8) & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,152,业务代码中存在裸数字常量,需确认是否应命名化,versionData[6] = softwareVersion.build & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,153,业务代码中存在裸数字常量,需确认是否应命名化,versionData[7] = (softwareVersion.build >> 8) & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,156,业务代码中存在裸数字常量,需确认是否应命名化,versionData[8] = hardwareVersion.major & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,157,业务代码中存在裸数字常量,需确认是否应命名化,versionData[9] = (hardwareVersion.major >> 8) & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,158,业务代码中存在裸数字常量,需确认是否应命名化,versionData[10] = hardwareVersion.minor & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,159,业务代码中存在裸数字常量,需确认是否应命名化,versionData[11] = (hardwareVersion.minor >> 8) & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,160,业务代码中存在裸数字常量,需确认是否应命名化,versionData[12] = hardwareVersion.patch & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,161,业务代码中存在裸数字常量,需确认是否应命名化,versionData[13] = (hardwareVersion.patch >> 8) & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,162,业务代码中存在裸数字常量,需确认是否应命名化,versionData[14] = hardwareVersion.build & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,163,业务代码中存在裸数字常量,需确认是否应命名化,versionData[15] = (hardwareVersion.build >> 8) & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,166,业务代码中存在裸数字常量,需确认是否应命名化,versionData[16] = bootVersion.major & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,167,业务代码中存在裸数字常量,需确认是否应命名化,versionData[17] = (bootVersion.major >> 8) & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,168,业务代码中存在裸数字常量,需确认是否应命名化,versionData[18] = bootVersion.minor & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,169,业务代码中存在裸数字常量,需确认是否应命名化,versionData[19] = (bootVersion.minor >> 8) & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,170,业务代码中存在裸数字常量,需确认是否应命名化,versionData[20] = bootVersion.patch & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,171,业务代码中存在裸数字常量,需确认是否应命名化,versionData[21] = (bootVersion.patch >> 8) & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,172,业务代码中存在裸数字常量,需确认是否应命名化,versionData[22] = bootVersion.build & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,173,业务代码中存在裸数字常量,需确认是否应命名化,versionData[23] = (bootVersion.build >> 8) & 0xFF;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,178,业务代码中存在裸数字常量,需确认是否应命名化,"CAN0_transmiter.build_can_id(CANFD_VERSION_ID), 24, versionData);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,186,业务代码中存在裸数字常量,需确认是否应命名化,char versionStr[32];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,219,业务代码中存在裸数字常量,需确认是否应命名化,"status = fwdgt_config(time * 0.625, FWDGT_PSC_DIV64);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,298,业务代码中存在裸数字常量,需确认是否应命名化,u32 temp_val[6];,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,305,业务代码中存在裸数字常量,需确认是否应命名化,temp_val[2] = *flash_ptr1;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,307,业务代码中存在裸数字常量,需确认是否应命名化,temp_val[3] = *flash_ptr1;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,309,业务代码中存在裸数字常量,需确认是否应命名化,temp_val[4] = *flash_ptr1;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,311,业务代码中存在裸数字常量,需确认是否应命名化,temp_val[5] = *flash_ptr1;,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,316,业务代码中存在裸数字常量,需确认是否应命名化,"temp_val[0], temp_val[1], temp_val[2], temp_val[3], temp_val[4],",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,317,业务代码中存在裸数字常量,需确认是否应命名化,temp_val[5]);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,332,业务代码中存在裸数字常量,需确认是否应命名化,"u8 transmit_data[2] = {0x0A, 0xAC};",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/initial.cpp,334,业务代码中存在裸数字常量,需确认是否应命名化,"CAN0_transmiter.CANFD_AsyncSend(CANFD_OTA_ACK_ID, 2, transmit_data);",安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/systick.cpp,159,业务代码中存在裸数字常量,需确认是否应命名化,delay_1ms(1000);,安全相关阈值/时间/比例建议用具名常量或配置宏。
info,SUP-MAG-001,sys/systick.cpp,227,业务代码中存在裸数字常量,需确认是否应命名化,SCB->AIRCR = (0x05FA0000U | (SCB->AIRCR & (0x700U)) | (1U << 2));,安全相关阈值/时间/比例建议用具名常量或配置宏。
1 severity rule_id file line description evidence recommendation
2 warning SUP-CMP-001 Algorithm/FOC.cpp 53 浮点变量比较需确认容差或离散状态含义 if (rt_velocity < -0.5f) last_table = cogging_table_rev; 建议确认是否应使用阈值/容差比较。
3 warning SUP-CMP-001 Algorithm/FOC.cpp 54 浮点变量比较需确认容差或离散状态含义 else if (rt_velocity > 0.5f) last_table = cogging_table; 建议确认是否应使用阈值/容差比较。
4 warning SUP-CMP-001 Algorithm/FOC.cpp 404 浮点变量比较需确认容差或离散状态含义 u8 sector_code = (X > 0.0f ? 1u : 0u) 建议确认是否应使用阈值/容差比较。
5 warning SUP-CMP-001 Algorithm/FOC.cpp 405 浮点变量比较需确认容差或离散状态含义 + (Y > 0.0f ? 2u : 0u) 建议确认是否应使用阈值/容差比较。
6 warning SUP-CMP-001 Algorithm/FOC.cpp 406 浮点变量比较需确认容差或离散状态含义 + (Z > 0.0f ? 4u : 0u); 建议确认是否应使用阈值/容差比较。
7 warning SUP-CMP-001 Algorithm/FOC.cpp 534 浮点变量比较需确认容差或离散状态含义 if (HOLD_PWM_DUTY > 0.95f) { 建议确认是否应使用阈值/容差比较。
8 warning SUP-CMP-001 Algorithm/FOC.cpp 536 浮点变量比较需确认容差或离散状态含义 } else if (HOLD_PWM_DUTY < 0.0f) { 建议确认是否应使用阈值/容差比较。
9 warning SUP-CMP-001 Algorithm/FOC.cpp 569 浮点变量比较需确认容差或离散状态含义 if (voltage < 36.0f and voltage > 8.0f) { 建议确认是否应使用阈值/容差比较。
10 warning SUP-CMP-001 Algorithm/FOC.cpp 763 浮点变量比较需确认容差或离散状态含义 if (target_velocity < -120.0f) { 建议确认是否应使用阈值/容差比较。
11 warning SUP-CMP-001 Algorithm/FOC.cpp 765 浮点变量比较需确认容差或离散状态含义 } else if (target_velocity < -30.0f) { 建议确认是否应使用阈值/容差比较。
12 warning SUP-CMP-001 Algorithm/Filter.cpp 190 浮点变量比较需确认容差或离散状态含义 if (error > 180.0f) error -= 360.0f; 建议确认是否应使用阈值/容差比较。
13 warning SUP-CMP-001 Algorithm/Filter.cpp 191 浮点变量比较需确认容差或离散状态含义 else if (error < -180.0f) error += 360.0f; 建议确认是否应使用阈值/容差比较。
14 warning SUP-CMP-001 sys/config.h 427 浮点变量比较需确认容差或离散状态含义 while (angle >= 360.0f) angle -= 360.0f; 建议确认是否应使用阈值/容差比较。
15 warning SUP-CMP-001 sys/config.h 428 浮点变量比较需确认容差或离散状态含义 while (angle < 0.0f) angle += 360.0f; 建议确认是否应使用阈值/容差比较。
16 warning SUP-GLB-001 Algorithm/FOC.cpp 23 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 FOC_Controller FOC; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
17 warning SUP-GLB-001 device/ADC.cpp 20 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float ADC_SCALE = 3.3f / 4096.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
18 warning SUP-GLB-001 device/ADC.cpp 22 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float TEMP_FACTOR = 1000.0f / 4.3f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
19 warning SUP-GLB-001 device/ADC.cpp 24 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float VCC_FACTOR = 11.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
20 warning SUP-GLB-001 device/ADC.cpp 26 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float CURRENT_FACTOR = 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
21 warning SUP-GLB-001 device/ADC.cpp 30 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 sampler sampler; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
22 warning SUP-GLB-001 device/ADC.cpp 33 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 static volatile u8 adc_current_frame_ready = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
23 warning SUP-GLB-001 device/Can.cpp 37 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 CANX = CAN0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
24 warning SUP-GLB-001 device/Can.cpp 48 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 dma_parameter_struct dma_rx_parameter; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
25 warning SUP-GLB-001 device/Can.cpp 51 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 static volatile bool can_rx_dma_busy = false; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
26 warning SUP-GLB-001 device/Can.cpp 52 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 static can_receive_message_struct can_rx_dma_message; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
27 warning SUP-GLB-001 device/Can.cpp 72 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 static volatile u8 rx_queue_head = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
28 warning SUP-GLB-001 device/Can.cpp 73 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 static volatile u8 rx_queue_tail = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
29 warning SUP-GLB-001 device/Can.cpp 74 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 static volatile u8 rx_queue_count = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
30 warning SUP-GLB-001 device/Can.cpp 77 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 static volatile u8 tx_queue_head = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
31 warning SUP-GLB-001 device/Can.cpp 78 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 static volatile u8 tx_queue_tail = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
32 warning SUP-GLB-001 device/Can.cpp 79 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 static volatile u8 tx_queue_count = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
33 warning SUP-GLB-001 device/Can.cpp 84 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 CAN_transmiter CAN0_transmiter; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
34 warning SUP-GLB-001 device/Timer.cpp 18 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 volatile u32 total_us100_counter = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
35 warning SUP-GLB-001 device/ang_sensor.cpp 38 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 volatile bool spi_dma_tx_complete = false; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
36 warning SUP-GLB-001 device/ang_sensor.cpp 39 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 volatile bool spi_dma_rx_complete = false; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
37 warning SUP-GLB-001 device/ang_sensor.cpp 41 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 angle_sensor KTH7823; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
38 warning SUP-GLB-001 main.cpp 39 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 TaskScheduler scheduler = {0}; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
39 warning SUP-GLB-001 main.cpp 40 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 u32 motor_runtime_50us = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
40 warning SUP-GLB-001 main.cpp 41 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 u32 cnt_test = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
41 warning SUP-GLB-001 sys/config.h 32 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 SOFTWARE_VERSION_MAJOR = 26; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
42 warning SUP-GLB-001 sys/config.h 34 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 SOFTWARE_VERSION_MINOR = 5; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
43 warning SUP-GLB-001 sys/config.h 36 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 SOFTWARE_VERSION_PATCH = 19; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
44 warning SUP-GLB-001 sys/config.h 38 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 SOFTWARE_VERSION_BUILD = 2; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
45 warning SUP-GLB-001 sys/config.h 41 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 HARDWARE_VERSION_MAJOR = 25; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
46 warning SUP-GLB-001 sys/config.h 43 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 HARDWARE_VERSION_MINOR = 12; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
47 warning SUP-GLB-001 sys/config.h 45 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 HARDWARE_VERSION_PATCH = 01; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
48 warning SUP-GLB-001 sys/config.h 47 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 HARDWARE_VERSION_BUILD = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
49 warning SUP-GLB-001 sys/config.h 50 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 BOOT_VERSION_MAJOR = 26; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
50 warning SUP-GLB-001 sys/config.h 52 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 BOOT_VERSION_MINOR = 1; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
51 warning SUP-GLB-001 sys/config.h 54 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 BOOT_VERSION_PATCH = 12; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
52 warning SUP-GLB-001 sys/config.h 56 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 BOOT_VERSION_BUILD = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
53 warning SUP-GLB-001 sys/config.h 60 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 BOOTLOADER_SIZE = 0x6000; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
54 warning SUP-GLB-001 sys/config.h 62 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 BOOTLOADER_START_ADDR = 0x08000000; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
55 warning SUP-GLB-001 sys/config.h 64 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 APPLATEST_START_ADDR = 0x08012000; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
56 warning SUP-GLB-001 sys/config.h 66 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 APPBACK_START_ADDR = 0x08006000; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
57 warning SUP-GLB-001 sys/config.h 68 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 APP_MAX_SIZE = 0xC000; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
58 warning SUP-GLB-001 sys/config.h 70 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 FMC_PAGE_SIZE = 0x400; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
59 warning SUP-GLB-001 sys/config.h 72 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 SLEEP_CONFIG_START = 0x0801E400; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
60 warning SUP-GLB-001 sys/config.h 74 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 SLEEP_CONFIG_END = 0x0801E800; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
61 warning SUP-GLB-001 sys/config.h 76 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 FLASH_EMPTY = 0xFFFFFFFF; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
62 warning SUP-GLB-001 sys/config.h 78 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 SLEEP_ENABLE = 0x11111111; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
63 warning SUP-GLB-001 sys/config.h 80 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 SLEEP_DISABLE = 0x00000000; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
64 warning SUP-GLB-001 sys/config.h 92 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 NODE_ID_PAGE_ADDR = 0x0801E800; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
65 warning SUP-GLB-001 sys/config.h 94 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 NODE_ID_PRIMARY_ADDR = 0x0801E800; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
66 warning SUP-GLB-001 sys/config.h 96 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 NODE_ID_BACKUP_ADDR = 0x0801E840; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
67 warning SUP-GLB-001 sys/config.h 98 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 NODE_ID_MAGIC = 0x4E4F4445; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
68 warning SUP-GLB-001 sys/config.h 100 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 DEFAULT_NODE_ID = 1; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
69 warning SUP-GLB-001 sys/config.h 102 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 BROADCAST_NODE_ID = 0x1FFF; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
70 warning SUP-GLB-001 sys/config.h 104 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 MAX_NODE_ID = 0x1FFE; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
71 warning SUP-GLB-001 sys/config.h 113 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u8 NODE_ID_STRUCT_SIZE = 0x10; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
72 warning SUP-GLB-001 sys/config.h 115 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u8 NODE_ID_MAGIC_OFFSET = 0x00; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
73 warning SUP-GLB-001 sys/config.h 117 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u8 NODE_ID_VALUE_OFFSET = 0x04; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
74 warning SUP-GLB-001 sys/config.h 119 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u8 NODE_ID_COUNTER_OFFSET = 0x08; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
75 warning SUP-GLB-001 sys/config.h 121 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u8 NODE_ID_CRC_OFFSET = 0x0C; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
76 warning SUP-GLB-001 sys/config.h 125 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 OTA_CONFIG_NUM = 6; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
77 warning SUP-GLB-001 sys/config.h 127 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 n_APP_LATEST_AVAL_ADDR = 0x0801E000; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
78 warning SUP-GLB-001 sys/config.h 129 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 n_APP_BACKUP_AVAL_ADDR = 0x0801E004; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
79 warning SUP-GLB-001 sys/config.h 131 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 n_APP_LATEST_EN_ADDR = 0x0801E008; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
80 warning SUP-GLB-001 sys/config.h 133 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 n_APP_BACKUP_EN_ADDR = 0x0801E00C; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
81 warning SUP-GLB-001 sys/config.h 135 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 n_APP_LATEST_CHECK_ADDR = 0x0801E010; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
82 warning SUP-GLB-001 sys/config.h 137 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 n_APP_BACKUP_CHECK_ADDR = 0x0801E014; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
83 warning SUP-GLB-001 sys/config.h 139 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 OTA_NOT_AVAL = 0xFFFFFFFF; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
84 warning SUP-GLB-001 sys/config.h 141 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 OTA_AVAL = 0x00000000; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
85 warning SUP-GLB-001 sys/config.h 145 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u8 PP = 11; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
86 warning SUP-GLB-001 sys/config.h 147 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float DIR = 1.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
87 warning SUP-GLB-001 sys/config.h 149 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 REDUCTION_RATIO = 25; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
88 warning SUP-GLB-001 sys/config.h 151 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float CURRENT_OFFSET = -3.31f / 2.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
89 warning SUP-GLB-001 sys/config.h 153 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float HOLD_PWM_DUTY = 0.1f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
90 warning SUP-GLB-001 sys/config.h 155 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 ANGLESENS_OFFSET = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
91 warning SUP-GLB-001 sys/config.h 157 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float ANGLESENS_CALIBRATION_ANGLE = 83.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
92 warning SUP-GLB-001 sys/config.h 159 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float KE_FACTOR = 0.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
93 warning SUP-GLB-001 sys/config.h 163 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float ANGLE_KALMAN_INITIAL_STATE = 0.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
94 warning SUP-GLB-001 sys/config.h 165 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float ANGLE_KALMAN_INITIAL_COVARIANCE = 0.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
95 warning SUP-GLB-001 sys/config.h 167 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float ANGLE_KALMAN_PROCESS_NOISE_Q = 0.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
96 warning SUP-GLB-001 sys/config.h 169 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float ANGLE_KALMAN_MEASUREMENT_NOISE_R = 0.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
97 warning SUP-GLB-001 sys/config.h 171 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float ANGLE_OBSERVER_ALPHA = 0.75f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
98 warning SUP-GLB-001 sys/config.h 173 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float ANGLE_OBSERVER_BETA = 0.002f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
99 warning SUP-GLB-001 sys/config.h 177 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float VELOCITY_KALMAN_INITIAL_STATE = 0.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
100 warning SUP-GLB-001 sys/config.h 179 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float VELOCITY_KALMAN_INITIAL_COVARIANCE = 1e-3f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
101 warning SUP-GLB-001 sys/config.h 181 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float VELOCITY_KALMAN_PROCESS_NOISE_Q = 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
102 warning SUP-GLB-001 sys/config.h 184 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float VELOCITY_KALMAN_MEASUREMENT_NOISE_R = 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
103 warning SUP-GLB-001 sys/config.h 189 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float CURRENT_KALMAN_INITIAL_STATE = 0.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
104 warning SUP-GLB-001 sys/config.h 191 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float CURRENT_KALMAN_INITIAL_COVARIANCE = 100.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
105 warning SUP-GLB-001 sys/config.h 193 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float CURRENT_KALMAN_PROCESS_NOISE_Q = 10.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
106 warning SUP-GLB-001 sys/config.h 195 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float CURRENT_KALMAN_MEASUREMENT_NOISE_R = 5e-5f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
107 warning SUP-GLB-001 sys/config.h 199 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float DEFAULT_current_loop_p = 0.1f / 100 * 12; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
108 warning SUP-GLB-001 sys/config.h 201 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float current_loop_Ki = 0.55f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
109 warning SUP-GLB-001 sys/config.h 203 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float current_loop_Kd = 3e-4f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
110 warning SUP-GLB-001 sys/config.h 206 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float DEFAULT_vel_loop_p = 0.018f / 100 * 12; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
111 warning SUP-GLB-001 sys/config.h 208 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float vel_loop_Ku = 3.600000e-03 * 0.7 * 100 / 12; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
112 warning SUP-GLB-001 sys/config.h 210 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float vel_loop_Tu = 17.0f * 1e-3f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
113 warning SUP-GLB-001 sys/config.h 212 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float vel_loop_Ki = 1.2 * vel_loop_Ku / vel_loop_Tu; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
114 warning SUP-GLB-001 sys/config.h 214 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float vel_loop_Kd = 0.075 * vel_loop_Ku * vel_loop_Tu * 2; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
115 warning SUP-GLB-001 sys/config.h 217 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float DEFAULT_vel_angloop_p = 0.4f / 100; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
116 warning SUP-GLB-001 sys/config.h 219 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float vel_angloop_Ki = 5.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
117 warning SUP-GLB-001 sys/config.h 221 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float vel_angloop_Kd = 5e-05f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
118 warning SUP-GLB-001 sys/config.h 224 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float DEFAULT_angle_angloop_p = 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
119 warning SUP-GLB-001 sys/config.h 227 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float ang_angloop_Ki = 0.00f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
120 warning SUP-GLB-001 sys/config.h 229 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float ang_angloop_Kd = 8e-04f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
121 warning SUP-GLB-001 sys/config.h 232 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float DEFAULT_angle_loop_p = 60.0f / 100 * 12; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
122 warning SUP-GLB-001 sys/config.h 235 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float DEFAULT_angle_MIT_p = 100.0f / 100 * 12; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
123 warning SUP-GLB-001 sys/config.h 237 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float angle_MIT_Ki = 0.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
124 warning SUP-GLB-001 sys/config.h 239 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float angle_MIT_Kd = 8e-04f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
125 warning SUP-GLB-001 sys/config.h 242 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float DEFAULT_vel_MIT_p = 5.0f / 100; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
126 warning SUP-GLB-001 sys/config.h 244 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float vel_MIT_Ki = 15.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
127 warning SUP-GLB-001 sys/config.h 246 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float vel_MIT_Kd = 1e-04f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
128 warning SUP-GLB-001 sys/config.h 249 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float DEFAULT_current_MIT_p = 0.2f / 100 * 12; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
129 warning SUP-GLB-001 sys/config.h 251 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float current_MIT_Ki = 0.1f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
130 warning SUP-GLB-001 sys/config.h 253 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float current_MIT_Kd = 3e-4f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
131 warning SUP-GLB-001 sys/config.h 260 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float ADC_MAX = 65536.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
132 warning SUP-GLB-001 sys/config.h 262 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float PI = 3.14159265358979323846f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
133 warning SUP-GLB-001 sys/config.h 264 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float INV_PI_3 = 3.0f / PI; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
134 warning SUP-GLB-001 sys/config.h 266 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float PI_3 = PI / 3.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
135 warning SUP-GLB-001 sys/config.h 268 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float _1_SQRT3 = 0.57735026919f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
136 warning SUP-GLB-001 sys/config.h 270 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float _3PI_2 = 4.71238898038f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
137 warning SUP-GLB-001 sys/config.h 272 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float SQRT3 = 1.7320508075688772f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
138 warning SUP-GLB-001 sys/config.h 274 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float SQRT3DV2 = 0.8660254037844386f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
139 warning SUP-GLB-001 sys/config.h 276 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float COS_PI_3 = 0.5f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
140 warning SUP-GLB-001 sys/config.h 278 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float ANGLE_FACTOR = 25.0f / 180.0f * PI; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
141 warning SUP-GLB-001 sys/config.h 280 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float DEG2RAD = 1.0f / 180.0f * PI; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
142 warning SUP-GLB-001 sys/config.h 282 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float RAD2DEG = 180.0f / PI; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
143 warning SUP-GLB-001 sys/config.h 284 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u8 DEFAULT_VALUE = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
144 warning SUP-GLB-001 sys/config.h 286 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u8 CONFIG_SAVED_NUM = 6; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
145 warning SUP-GLB-001 sys/config.h 290 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 LUT_SIZE = 1024; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
146 warning SUP-GLB-001 sys/config.h 301 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 DEV_CAN0_ID = 0x0000; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
147 warning SUP-GLB-001 sys/config.h 303 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 DEV_CAN0_MASK = 0x0000; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
148 warning SUP-GLB-001 sys/config.h 305 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 DEV_CAN_LOOPBACK_ID = 0x0000; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
149 warning SUP-GLB-001 sys/config.h 308 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 CANFD_STATUS_ID = 0x0100; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
150 warning SUP-GLB-001 sys/config.h 310 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 CANFD_CONFIG_ID = 0x0101; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
151 warning SUP-GLB-001 sys/config.h 312 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 CANFD_VERSION_ID = 0x00FF; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
152 warning SUP-GLB-001 sys/config.h 315 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 CANFD_CMD_ID = 0x0200; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
153 warning SUP-GLB-001 sys/config.h 317 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 CANFD_RESET_ID = 0x0301; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
154 warning SUP-GLB-001 sys/config.h 320 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 CANFD_SET_NODE_ID = 0x0400; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
155 warning SUP-GLB-001 sys/config.h 322 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 CANFD_GET_NODE_ID = 0x0401; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
156 warning SUP-GLB-001 sys/config.h 326 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 CANFD_BOOT_ID = 0x0000; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
157 warning SUP-GLB-001 sys/config.h 328 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 CANFD_OTA_REQ_ID = 0x0100; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
158 warning SUP-GLB-001 sys/config.h 330 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 CANFD_OTA_DATA_ID = 0x0101; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
159 warning SUP-GLB-001 sys/config.h 332 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 CANFD_OTA_ACK_ID = 0x0102; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
160 warning SUP-GLB-001 sys/config.h 334 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 CANFD_OTA_WAIT_ID = 0x0103; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
161 warning SUP-GLB-001 sys/config.h 338 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u8 ADC_FILTER_SIZE = 6; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
162 warning SUP-GLB-001 sys/config.h 340 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u8 BLOCK_SIZE = ADC_FILTER_SIZE * SIZE_FLOAT; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
163 warning SUP-GLB-001 sys/config.h 342 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float ERROR_ADC_VAL = 255.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
164 warning SUP-GLB-001 sys/config.h 344 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float MAX_TEMP = 150.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
165 warning SUP-GLB-001 sys/config.h 346 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float MIN_TEMP = -40.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
166 warning SUP-GLB-001 sys/config.h 348 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float MAX_CURRENT = 40.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
167 warning SUP-GLB-001 sys/config.h 350 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float MIN_CURRENT = -40.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
168 warning SUP-GLB-001 sys/config.h 352 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float MAX_VCC = 65.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
169 warning SUP-GLB-001 sys/config.h 354 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float MIN_VCC = -0.1f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
170 warning SUP-GLB-001 sys/config.h 358 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 VEL_FILTER_SIZE = 4; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
171 warning SUP-GLB-001 sys/config.h 360 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 DEFAULT_COMMAND = 0x0000; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
172 warning SUP-GLB-001 sys/config.h 362 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 FAULT_RECEIVE = 0xFFFF; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
173 warning SUP-GLB-001 sys/config.h 364 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float ANGLE_WRAP_THRESHOLD = 300.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
174 warning SUP-GLB-001 sys/config.h 366 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float ANGLE_WRAP_VALUE = 360.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
175 warning SUP-GLB-001 sys/config.h 368 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float RAD_FACTOR = 1.0f / ADC_MAX * 2.0f * PI; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
176 warning SUP-GLB-001 sys/config.h 370 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float ANGLESENS_FACTOR = 1.0f / ADC_MAX * 360.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
177 warning SUP-GLB-001 sys/config.h 374 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr int TIMER2_PRESCALER = 119; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
178 warning SUP-GLB-001 sys/config.h 376 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr int TIMER2_PERIOD = 49; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
179 warning SUP-GLB-001 sys/config.h 378 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr int MOTOR_PERIOD = 1; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
180 warning SUP-GLB-001 sys/config.h 380 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float TIME_SLICE = 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
181 warning SUP-GLB-001 sys/config.h 383 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float TIMER2_FREQUENCY = 1 / TIME_SLICE; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
182 warning SUP-GLB-001 sys/config.h 385 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float MOTOR_FREQUENCY = 1 / TIME_SLICE / MOTOR_PERIOD; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
183 warning SUP-GLB-001 sys/config.h 389 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr int TIMER1_PRESCALER = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
184 warning SUP-GLB-001 sys/config.h 391 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr int TIMER1_PERIOD = 2999; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
185 warning SUP-GLB-001 sys/config.h 393 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr int TIMER1_DEFAULT_PULSE = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
186 warning SUP-GLB-001 sys/config.h 395 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr int TIMER1_CH3_COMPARE_VALUE = 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
187 warning SUP-GLB-001 sys/config.h 400 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 COGGING_TABLE_SIZE = 128; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
188 warning SUP-GLB-001 sys/config.h 402 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float COGGING_COMP_SCALE = 0.005f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
189 warning SUP-GLB-001 sys/config.h 413 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float VBUS_DROP_THRESHOLD = 5.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
190 warning SUP-GLB-001 sys/config.h 415 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float VBUS_ABSOLUTE_MIN = 12.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
191 warning SUP-GLB-001 sys/config.h 417 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u32 VBUS_DEBOUNCE_COUNT = 5; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
192 warning SUP-GLB-001 sys/config.h 419 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr float VBUS_RECOVERY_RATIO = 0.9f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
193 warning SUP-GLB-001 sys/health.cpp 19 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 ThermalController thermalController; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
194 warning SUP-GLB-001 sys/health.cpp 25 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 constexpr u16 PROTECT_TIME = 6000; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
195 warning SUP-GLB-001 sys/health.cpp 28 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 static VoltageState voltage_state = VoltageState::NORMAL; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
196 warning SUP-GLB-001 sys/health.cpp 29 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 static float last_vbus_slow = 0.0f; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
197 warning SUP-GLB-001 sys/initial.cpp 39 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 VersionManager Version; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
198 warning SUP-GLB-001 sys/systick.cpp 53 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 volatile static uint32_t delay; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
199 warning SUP-GLB-001 sys/systick.cpp 54 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 volatile static uint32_t systick_ms = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
200 warning SUP-GLB-001 sys/systick.cpp 70 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 volatile static uint32_t task_enter_cyccnt = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
201 warning SUP-GLB-001 sys/systick.cpp 71 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 volatile static uint32_t busy_cycles_accum = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
202 warning SUP-GLB-001 sys/systick.cpp 72 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 volatile static uint16_t sample_seconds = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
203 warning SUP-GLB-001 sys/systick.cpp 73 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 volatile static uint8_t cpu_usage = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
204 warning SUP-GLB-001 sys/systick.cpp 74 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序 volatile static uint8_t dwt_initialized = 0; 建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
205 warning SUP-IRQ-001 device/Can.cpp 709 关中断后未在短窗口内看到开中断,需人工确认成对性 __disable_irq(); 确认所有路径均恢复中断;避免临界区过长。
206 warning SUP-IRQ-001 sys/flash.cpp 888 关中断后未在短窗口内看到开中断,需人工确认成对性 __disable_irq(); 确认所有路径均恢复中断;避免临界区过长。
207 warning SUP-IRQ-001 sys/systick.cpp 256 关中断后未在短窗口内看到开中断,需人工确认成对性 __disable_irq(); 确认所有路径均恢复中断;避免临界区过长。
208 warning SUP-SW-001 Algorithm/FOC.cpp 89 switch 语句疑似缺少 default 分支 switch (cog_calib_state) { MISRA 通常要求 default;如枚举已全覆盖也建议显式说明。
209 info SUP-DOC-001 Algorithm/FOC.h 260 接口/函数缺少紧邻 Doxygen 注释 typedef float (FOC_Controller::*FOCFunctionPtr)(void); 建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
210 info SUP-DOC-001 Algorithm/Filter.h 187 接口/函数缺少紧邻 Doxygen 注释 u8 init(float init_velocity, float initial_error_covariance = 1.0f) { 建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
211 info SUP-DOC-001 Algorithm/Filter.h 247 接口/函数缺少紧邻 Doxygen 注释 u8 init(float init_angle, float initial_error_covariance = 1.0f) { 建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
212 info SUP-DOC-001 Algorithm/Filter.h 296 接口/函数缺少紧邻 Doxygen 注释 u8 init(float init_current, float initial_error_covariance = 1.0f) { 建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
213 info SUP-DOC-001 Algorithm/pid.cpp 23 接口/函数缺少紧邻 Doxygen 注释 float PIDController::operator()(float error) { 建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
214 info SUP-DOC-001 Algorithm/pid.h 18 接口/函数缺少紧邻 Doxygen 注释 float operator()(float error); 建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
215 info SUP-DOC-001 device/Can.cpp 775 接口/函数缺少紧邻 Doxygen 注释 static void CAN_RX_ReleaseFifo0(void) { CAN_RFIFO0(CAN0) |= CAN_RFIFO0_RFD0; } 建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
216 info SUP-DOC-001 device/Can.cpp 1130 接口/函数缺少紧邻 Doxygen 注释 else if (base_id == CANFD_SET_NODE_ID) { 建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
217 info SUP-DOC-001 device/Can.cpp 1292 接口/函数缺少紧邻 Doxygen 注释 else if (base_id == CANFD_GET_NODE_ID) { 建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
218 info SUP-DOC-001 sys/flash.cpp 913 接口/函数缺少紧邻 Doxygen 注释 typedef void (*AppEntryFunc)(void); 建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
219 info SUP-DOC-001 sys/flash.h 165 接口/函数缺少紧邻 Doxygen 注释 u8 OTA_SET(u32 addr, u32 data); 建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
220 info SUP-DOC-001 sys/initial.cpp 224 接口/函数缺少紧邻 Doxygen 注释 int fputc(int ch, FILE *f) throw() { 建议补充 @brief/@param/@return;内部小函数可按项目规范豁免。
221 info SUP-GLB-002 Algorithm/FOC.cpp 24 extern 全局对象引用,需确认单一定义和共享访问保护 extern sampler sampler; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
222 info SUP-GLB-002 Algorithm/FOC.cpp 25 extern 全局对象引用,需确认单一定义和共享访问保护 extern angle_sensor KTH7823; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
223 info SUP-GLB-002 Algorithm/FOC.cpp 26 extern 全局对象引用,需确认单一定义和共享访问保护 extern CAN_transmiter CAN0_transmiter; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
224 info SUP-GLB-002 Algorithm/FOC.cpp 27 extern 全局对象引用,需确认单一定义和共享访问保护 extern EncoderVelocityKalman Vel_kalman; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
225 info SUP-GLB-002 Algorithm/FOC.cpp 28 extern 全局对象引用,需确认单一定义和共享访问保护 extern CurrentKalman Current_kalman; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
226 info SUP-GLB-002 Algorithm/Filter.cpp 14 extern 全局对象引用,需确认单一定义和共享访问保护 extern angle_sensor KTH7823; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
227 info SUP-GLB-002 Algorithm/Filter.cpp 15 extern 全局对象引用,需确认单一定义和共享访问保护 extern CAN_transmiter CAN0_transmiter; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
228 info SUP-GLB-002 Algorithm/Filter.cpp 16 extern 全局对象引用,需确认单一定义和共享访问保护 extern u32 motor_runtime_50us; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
229 info SUP-GLB-002 Algorithm/Filter.h 24 extern 全局对象引用,需确认单一定义和共享访问保护 extern CAN_transmiter CAN0_transmiter; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
230 info SUP-GLB-002 Algorithm/pid.cpp 14 extern 全局对象引用,需确认单一定义和共享访问保护 extern CAN_transmiter CAN0_transmiter; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
231 info SUP-GLB-002 device/ADC.cpp 28 extern 全局对象引用,需确认单一定义和共享访问保护 extern CAN_transmiter CAN0_transmiter; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
232 info SUP-GLB-002 device/ADC.cpp 29 extern 全局对象引用,需确认单一定义和共享访问保护 extern FOC_Controller FOC; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
233 info SUP-GLB-002 device/Can.cpp 38 extern 全局对象引用,需确认单一定义和共享访问保护 extern FOC_Controller FOC; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
234 info SUP-GLB-002 device/Can.cpp 39 extern 全局对象引用,需确认单一定义和共享访问保护 extern sampler sampler; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
235 info SUP-GLB-002 device/Can.cpp 40 extern 全局对象引用,需确认单一定义和共享访问保护 extern angle_sensor KTH7823; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
236 info SUP-GLB-002 device/Can.cpp 41 extern 全局对象引用,需确认单一定义和共享访问保护 extern EncoderAngleKalman Angle_kalman; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
237 info SUP-GLB-002 device/Can.cpp 42 extern 全局对象引用,需确认单一定义和共享访问保护 extern EncoderVelocityKalman Vel_kalman; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
238 info SUP-GLB-002 device/Can.cpp 43 extern 全局对象引用,需确认单一定义和共享访问保护 extern FlashEEPROM flashEEP; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
239 info SUP-GLB-002 device/Can.cpp 44 extern 全局对象引用,需确认单一定义和共享访问保护 extern VersionManager Version; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
240 info SUP-GLB-002 device/Can.cpp 45 extern 全局对象引用,需确认单一定义和共享访问保护 extern u32 motor_runtime_50us; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
241 info SUP-GLB-002 device/Timer.cpp 20 extern 全局对象引用,需确认单一定义和共享访问保护 extern FOC_Controller FOC; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
242 info SUP-GLB-002 device/Timer.cpp 21 extern 全局对象引用,需确认单一定义和共享访问保护 extern TaskScheduler scheduler; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
243 info SUP-GLB-002 device/Timer.cpp 22 extern 全局对象引用,需确认单一定义和共享访问保护 extern CAN_transmiter CAN0_transmiter; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
244 info SUP-GLB-002 device/Timer.cpp 24 extern 全局对象引用,需确认单一定义和共享访问保护 extern u32 cnt_test; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
245 info SUP-GLB-002 device/ang_sensor.cpp 42 extern 全局对象引用,需确认单一定义和共享访问保护 extern FlashEEPROM flashEEP; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
246 info SUP-GLB-002 device/ang_sensor.cpp 43 extern 全局对象引用,需确认单一定义和共享访问保护 extern EncoderAngleKalman Angle_kalman; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
247 info SUP-GLB-002 device/ang_sensor.cpp 44 extern 全局对象引用,需确认单一定义和共享访问保护 extern EncoderVelocityKalman Vel_kalman; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
248 info SUP-GLB-002 device/ang_sensor.cpp 45 extern 全局对象引用,需确认单一定义和共享访问保护 extern CAN_transmiter CAN0_transmiter; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
249 info SUP-GLB-002 main.cpp 28 extern 全局对象引用,需确认单一定义和共享访问保护 extern CAN_transmiter CAN0_transmiter; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
250 info SUP-GLB-002 main.cpp 29 extern 全局对象引用,需确认单一定义和共享访问保护 extern sampler sampler; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
251 info SUP-GLB-002 main.cpp 30 extern 全局对象引用,需确认单一定义和共享访问保护 extern angle_sensor KTH7823; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
252 info SUP-GLB-002 main.cpp 31 extern 全局对象引用,需确认单一定义和共享访问保护 extern EncoderVelocityKalman Vel_kalman; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
253 info SUP-GLB-002 main.cpp 32 extern 全局对象引用,需确认单一定义和共享访问保护 extern EncoderAngleKalman Angle_kalman; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
254 info SUP-GLB-002 main.cpp 33 extern 全局对象引用,需确认单一定义和共享访问保护 extern ThermalController thermalController; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
255 info SUP-GLB-002 main.cpp 34 extern 全局对象引用,需确认单一定义和共享访问保护 extern FOC_Controller FOC; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
256 info SUP-GLB-002 main.cpp 35 extern 全局对象引用,需确认单一定义和共享访问保护 extern FlashEEPROM flashEEP; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
257 info SUP-GLB-002 main.cpp 36 extern 全局对象引用,需确认单一定义和共享访问保护 extern VersionManager Version; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
258 info SUP-GLB-002 sys/flash.cpp 38 extern 全局对象引用,需确认单一定义和共享访问保护 extern angle_sensor KTH7823; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
259 info SUP-GLB-002 sys/flash.cpp 39 extern 全局对象引用,需确认单一定义和共享访问保护 extern CAN_transmiter CAN0_transmiter; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
260 info SUP-GLB-002 sys/flash.cpp 40 extern 全局对象引用,需确认单一定义和共享访问保护 extern FOC_Controller FOC; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
261 info SUP-GLB-002 sys/health.cpp 15 extern 全局对象引用,需确认单一定义和共享访问保护 extern sampler sampler; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
262 info SUP-GLB-002 sys/health.cpp 16 extern 全局对象引用,需确认单一定义和共享访问保护 extern CAN_transmiter CAN0_transmiter; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
263 info SUP-GLB-002 sys/health.cpp 17 extern 全局对象引用,需确认单一定义和共享访问保护 extern FOC_Controller FOC; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
264 info SUP-GLB-002 sys/health.cpp 18 extern 全局对象引用,需确认单一定义和共享访问保护 extern FlashEEPROM flashEEP; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
265 info SUP-GLB-002 sys/initial.cpp 38 extern 全局对象引用,需确认单一定义和共享访问保护 extern CAN_transmiter CAN0_transmiter; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
266 info SUP-GLB-002 sys/systick.cpp 75 extern 全局对象引用,需确认单一定义和共享访问保护 extern CAN_transmiter CAN0_transmiter; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
267 info SUP-GLB-002 sys/systick.cpp 76 extern 全局对象引用,需确认单一定义和共享访问保护 extern FlashEEPROM flashEEP; 确认是否跨 ISR/主循环共享;共享变量建议 volatile 或临界区保护。
268 info SUP-ISR-001 device/ADC.cpp 317 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 extern "" void ADC0_1_IRQHandler(void) { 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
269 info SUP-ISR-001 device/Can.cpp 1330 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 void CAN0_RX0_IRQHandler(void) { 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
270 info SUP-ISR-001 device/Can.cpp 1355 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 void DMA0_Channel4_IRQHandler(void) { 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
271 info SUP-ISR-001 device/Can.cpp 1389 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 void DMA0_Channel5_IRQHandler(void) { 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
272 info SUP-ISR-001 device/Can.cpp 1509 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 void CAN0_TX_IRQHandler(void) { 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
273 info SUP-ISR-001 device/Can.h 121 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 void CAN0_TX_IRQHandler(void); 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
274 info SUP-ISR-001 device/Can.h 126 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 void CAN0_RX0_IRQHandler(void); 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
275 info SUP-ISR-001 device/Can.h 131 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 void DMA0_Channel4_IRQHandler(void); 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
276 info SUP-ISR-001 device/Can.h 136 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 void DMA0_Channel5_IRQHandler(void); 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
277 info SUP-ISR-001 device/Timer.cpp 134 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 void TIMER2_IRQHandler(void) { 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
278 info SUP-ISR-001 device/Timer.cpp 281 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 void TIMER1_IRQHandler(void) { 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
279 info SUP-ISR-001 device/Timer.h 40 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 void TIMER2_IRQHandler(void); 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
280 info SUP-ISR-001 device/Timer.h 56 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 void TIMER1_IRQHandler(void); 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
281 info SUP-ISR-001 device/adc.h 91 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 void ADC0_1_IRQHandler(void); 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
282 info SUP-ISR-001 device/ang_sensor.cpp 145 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 extern "" void DMA0_Channel2_IRQHandler(void) { 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
283 info SUP-ISR-001 device/ang_sensor.cpp 156 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 extern "" void DMA0_Channel1_IRQHandler(void) { 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
284 info SUP-ISR-001 sys/systick.cpp 128 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 extern "" void SysTick_Handler(void) { 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
285 info SUP-ISR-001 sys/systick.h 117 中断处理函数需确认执行时间、共享数据保护和禁止阻塞调用 void EXTI5_9_IRQHandler(void); 人工确认 ISR 内无阻塞、无长耗时,并检查共享变量 volatile/临界区。
286 info SUP-LOOP-001 device/Can.cpp 366 无限循环需确认退出策略、看门狗喂狗和低功耗策略 while (1) 确认循环内任务调度、异常退出/复位策略和看门狗策略。
287 info SUP-LOOP-001 main.cpp 71 无限循环需确认退出策略、看门狗喂狗和低功耗策略 while (1) { 确认循环内任务调度、异常退出/复位策略和看门狗策略。
288 info SUP-LOOP-001 sys/systick.cpp 115 无限循环需确认退出策略、看门狗喂狗和低功耗策略 while (1) { 确认循环内任务调度、异常退出/复位策略和看门狗策略。
289 info SUP-LOOP-001 sys/systick.cpp 233 无限循环需确认退出策略、看门狗喂狗和低功耗策略 while (1) { 确认循环内任务调度、异常退出/复位策略和看门狗策略。
290 info SUP-MAG-001 Algorithm/FOC.cpp 29 业务代码中存在裸数字常量,需确认是否应命名化 extern u16 adc_value[3]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
291 info SUP-MAG-001 Algorithm/FOC.cpp 46 业务代码中存在裸数字常量,需确认是否应命名化 float index_f = angle / 360.0f * (float)COGGING_TABLE_SIZE; 安全相关阈值/时间/比例建议用具名常量或配置宏。
292 info SUP-MAG-001 Algorithm/FOC.cpp 53 业务代码中存在裸数字常量,需确认是否应命名化 if (rt_velocity < -0.5f) last_table = cogging_table_rev; 安全相关阈值/时间/比例建议用具名常量或配置宏。
293 info SUP-MAG-001 Algorithm/FOC.cpp 54 业务代码中存在裸数字常量,需确认是否应命名化 else if (rt_velocity > 0.5f) last_table = cogging_table; 安全相关阈值/时间/比例建议用具名常量或配置宏。
294 info SUP-MAG-001 Algorithm/FOC.cpp 66 业务代码中存在裸数字常量,需确认是否应命名化 float FOC_Controller::cog_calib_run_data[6][COGGING_TABLE_SIZE] = {}; 安全相关阈值/时间/比例建议用具名常量或配置宏。
295 info SUP-MAG-001 Algorithm/FOC.cpp 77 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u32 SETTLE_TICKS = 16000; 安全相关阈值/时间/比例建议用具名常量或配置宏。
296 info SUP-MAG-001 Algorithm/FOC.cpp 79 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u32 STOP_TICKS = 10000; 安全相关阈值/时间/比例建议用具名常量或配置宏。
297 info SUP-MAG-001 Algorithm/FOC.cpp 81 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u32 TARGET_SAMPLES = 3 * COGGING_TABLE_SIZE * 8; 安全相关阈值/时间/比例建议用具名常量或配置宏。
298 info SUP-MAG-001 Algorithm/FOC.cpp 85 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u32 SAMPLE_DIV = 20; 安全相关阈值/时间/比例建议用具名常量或配置宏。
299 info SUP-MAG-001 Algorithm/FOC.cpp 87 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u8 TOTAL_RUNS = 6; 安全相关阈值/时间/比例建议用具名常量或配置宏。
300 info SUP-MAG-001 Algorithm/FOC.cpp 102 业务代码中存在裸数字常量,需确认是否应命名化 control_mode = 6; 安全相关阈值/时间/比例建议用具名常量或配置宏。
301 info SUP-MAG-001 Algorithm/FOC.cpp 131 业务代码中存在裸数字常量,需确认是否应命名化 if (fabsf(iq) < 5000.0f) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
302 info SUP-MAG-001 Algorithm/FOC.cpp 132 业务代码中存在裸数字常量,需确认是否应命名化 u16 idx = (u16)(angle_el / 360.0f * (float)COGGING_TABLE_SIZE); 安全相关阈值/时间/比例建议用具名常量或配置宏。
303 info SUP-MAG-001 Algorithm/FOC.cpp 167 业务代码中存在裸数字常量,需确认是否应命名化 control_mode = 6; 安全相关阈值/时间/比例建议用具名常量或配置宏。
304 info SUP-MAG-001 Algorithm/FOC.cpp 168 业务代码中存在裸数字常量,需确认是否应命名化 target_velocity = (cog_calib_run < 3) ? SLOW_VEL : -SLOW_VEL; 安全相关阈值/时间/比例建议用具名常量或配置宏。
305 info SUP-MAG-001 Algorithm/FOC.cpp 182 业务代码中存在裸数字常量,需确认是否应命名化 cog_calib_run_data[2][i]) / 3.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
306 info SUP-MAG-001 Algorithm/FOC.cpp 186 业务代码中存在裸数字常量,需确认是否应命名化 cogging_table_rev[i] = (cog_calib_run_data[3][i] + 安全相关阈值/时间/比例建议用具名常量或配置宏。
307 info SUP-MAG-001 Algorithm/FOC.cpp 187 业务代码中存在裸数字常量,需确认是否应命名化 cog_calib_run_data[4][i] + 安全相关阈值/时间/比例建议用具名常量或配置宏。
308 info SUP-MAG-001 Algorithm/FOC.cpp 188 业务代码中存在裸数字常量,需确认是否应命名化 cog_calib_run_data[5][i]) / 3.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
309 info SUP-MAG-001 Algorithm/FOC.cpp 197 业务代码中存在裸数字常量,需确认是否应命名化 float angle_deg = (float)i / (float)COGGING_TABLE_SIZE * 360.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
310 info SUP-MAG-001 Algorithm/FOC.cpp 205 业务代码中存在裸数字常量,需确认是否应命名化 float angle_deg = (float)i / (float)COGGING_TABLE_SIZE * 360.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
311 info SUP-MAG-001 Algorithm/FOC.cpp 214 业务代码中存在裸数字常量,需确认是否应命名化 if (i % 8 == 0) printf(""); 安全相关阈值/时间/比例建议用具名常量或配置宏。
312 info SUP-MAG-001 Algorithm/FOC.cpp 217 业务代码中存在裸数字常量,需确认是否应命名化 if (i % 8 == 7 || i == COGGING_TABLE_SIZE - 1) printf(""); 安全相关阈值/时间/比例建议用具名常量或配置宏。
313 info SUP-MAG-001 Algorithm/FOC.cpp 226 业务代码中存在裸数字常量,需确认是否应命名化 if (i % 8 == 0) printf(""); 安全相关阈值/时间/比例建议用具名常量或配置宏。
314 info SUP-MAG-001 Algorithm/FOC.cpp 229 业务代码中存在裸数字常量,需确认是否应命名化 if (i % 8 == 7 || i == COGGING_TABLE_SIZE - 1) printf(""); 安全相关阈值/时间/比例建议用具名常量或配置宏。
315 info SUP-MAG-001 Algorithm/FOC.cpp 293 业务代码中存在裸数字常量,需确认是否应命名化 const float current_avg = (current_a + current_b + current_c) / 3.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
316 info SUP-MAG-001 Algorithm/FOC.cpp 301 业务代码中存在裸数字常量,需确认是否应命名化 I_alpha = (2.0f / 3.0f) * current_a - (1.0f / 3.0f) * current_b - 安全相关阈值/时间/比例建议用具名常量或配置宏。
317 info SUP-MAG-001 Algorithm/FOC.cpp 302 业务代码中存在裸数字常量,需确认是否应命名化 (1.0f / 3.0f) * current_c; 安全相关阈值/时间/比例建议用具名常量或配置宏。
318 info SUP-MAG-001 Algorithm/FOC.cpp 313 业务代码中存在裸数字常量,需确认是否应命名化 return Current_kalman.update(I_q * 1000 - KE_FACTOR * rt_velocity); 安全相关阈值/时间/比例建议用具名常量或配置宏。
319 info SUP-MAG-001 Algorithm/FOC.cpp 327 业务代码中存在裸数字常量,需确认是否应命名化 29.28f, 28.84f, 28.26f, 28.83f, 29.79f, 30.26f, 29.52f, 28.77f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
320 info SUP-MAG-001 Algorithm/FOC.cpp 328 业务代码中存在裸数字常量,需确认是否应命名化 28.23f, 27.68f, 26.65f, 25.19f, 23.92f, 22.59f, 19.61f, 16.77f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
321 info SUP-MAG-001 Algorithm/FOC.cpp 329 业务代码中存在裸数字常量,需确认是否应命名化 13.32f, 10.40f, 7.64f, 3.51f, -0.83f, -4.96f, -8.19f, -11.11f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
322 info SUP-MAG-001 Algorithm/FOC.cpp 330 业务代码中存在裸数字常量,需确认是否应命名化 -13.40f, -14.39f, -15.69f, -15.99f, -16.39f, -15.50f, -14.76f, -14.21f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
323 info SUP-MAG-001 Algorithm/FOC.cpp 331 业务代码中存在裸数字常量,需确认是否应命名化 -13.76f, -13.88f, -13.22f, -11.18f, -10.65f, -10.54f, -10.62f, -10.23f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
324 info SUP-MAG-001 Algorithm/FOC.cpp 332 业务代码中存在裸数字常量,需确认是否应命名化 -9.52f, -8.19f, -6.31f, -4.14f, -1.94f, -0.25f, 2.06f, 4.08f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
325 info SUP-MAG-001 Algorithm/FOC.cpp 333 业务代码中存在裸数字常量,需确认是否应命名化 6.05f, 8.30f, 9.74f, 11.38f, 13.32f, 15.65f, 17.55f, 20.22f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
326 info SUP-MAG-001 Algorithm/FOC.cpp 334 业务代码中存在裸数字常量,需确认是否应命名化 21.72f, 22.28f, 23.30f, 24.78f, 23.53f, 23.35f, 23.00f, 21.42f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
327 info SUP-MAG-001 Algorithm/FOC.cpp 335 业务代码中存在裸数字常量,需确认是否应命名化 20.35f, 20.57f, 20.07f, 18.18f, 17.04f, 16.03f, 14.81f, 13.71f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
328 info SUP-MAG-001 Algorithm/FOC.cpp 336 业务代码中存在裸数字常量,需确认是否应命名化 12.47f, 10.93f, 9.38f, 6.53f, 4.63f, 3.37f, 1.29f, -1.28f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
329 info SUP-MAG-001 Algorithm/FOC.cpp 337 业务代码中存在裸数字常量,需确认是否应命名化 -5.08f, -11.11f, -16.35f, -21.00f, -24.61f, -28.30f, -31.11f, -33.48f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
330 info SUP-MAG-001 Algorithm/FOC.cpp 338 业务代码中存在裸数字常量,需确认是否应命名化 -35.25f, -36.54f, -38.01f, -38.69f, -39.27f, -39.52f, -38.18f, -36.55f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
331 info SUP-MAG-001 Algorithm/FOC.cpp 339 业务代码中存在裸数字常量,需确认是否应命名化 -34.96f, -33.14f, -31.92f, -31.45f, -31.32f, -30.25f, -29.60f, -28.72f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
332 info SUP-MAG-001 Algorithm/FOC.cpp 340 业务代码中存在裸数字常量,需确认是否应命名化 -27.51f, -25.30f, -22.66f, -20.87f, -18.19f, -16.10f, -13.25f, -10.81f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
333 info SUP-MAG-001 Algorithm/FOC.cpp 341 业务代码中存在裸数字常量,需确认是否应命名化 -8.00f, -4.67f, -2.28f, 0.87f, 3.83f, 7.25f, 10.56f, 13.70f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
334 info SUP-MAG-001 Algorithm/FOC.cpp 342 业务代码中存在裸数字常量,需确认是否应命名化 17.70f, 19.90f, 22.14f, 23.62f, 24.53f, 26.03f, 26.96f, 27.95f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
335 info SUP-MAG-001 Algorithm/FOC.cpp 345 业务代码中存在裸数字常量,需确认是否应命名化 22.45f, 24.95f, 26.05f, 26.01f, 26.11f, 25.87f, 26.20f, 26.23f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
336 info SUP-MAG-001 Algorithm/FOC.cpp 346 业务代码中存在裸数字常量,需确认是否应命名化 26.19f, 25.87f, 25.97f, 26.09f, 24.77f, 24.22f, 23.71f, 22.10f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
337 info SUP-MAG-001 Algorithm/FOC.cpp 347 业务代码中存在裸数字常量,需确认是否应命名化 19.84f, 17.60f, 15.36f, 12.99f, 9.54f, 5.35f, 1.71f, -1.94f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
338 info SUP-MAG-001 Algorithm/FOC.cpp 348 业务代码中存在裸数字常量,需确认是否应命名化 -4.15f, -6.16f, -7.93f, -9.10f, -10.01f, -10.25f, -10.85f, -11.74f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
339 info SUP-MAG-001 Algorithm/FOC.cpp 349 业务代码中存在裸数字常量,需确认是否应命名化 -11.98f, -10.78f, -9.65f, -8.89f, -8.14f, -6.85f, -5.94f, -5.37f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
340 info SUP-MAG-001 Algorithm/FOC.cpp 350 业务代码中存在裸数字常量,需确认是否应命名化 -4.28f, -3.38f, -3.36f, -3.40f, -2.81f, -2.36f, -1.04f, -0.18f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
341 info SUP-MAG-001 Algorithm/FOC.cpp 351 业务代码中存在裸数字常量,需确认是否应命名化 1.08f, 2.15f, 4.19f, 5.51f, 7.33f, 8.64f, 10.46f, 11.89f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
342 info SUP-MAG-001 Algorithm/FOC.cpp 352 业务代码中存在裸数字常量,需确认是否应命名化 13.42f, 14.83f, 17.11f, 19.12f, 20.76f, 21.88f, 22.35f, 22.86f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
343 info SUP-MAG-001 Algorithm/FOC.cpp 353 业务代码中存在裸数字常量,需确认是否应命名化 22.73f, 22.13f, 21.10f, 20.53f, 18.65f, 17.09f, 15.47f, 14.76f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
344 info SUP-MAG-001 Algorithm/FOC.cpp 354 业务代码中存在裸数字常量,需确认是否应命名化 14.02f, 12.94f, 11.98f, 10.29f, 8.11f, 5.83f, 4.23f, 2.42f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
345 info SUP-MAG-001 Algorithm/FOC.cpp 355 业务代码中存在裸数字常量,需确认是否应命名化 1.03f, -1.80f, -4.01f, -7.93f, -11.79f, -15.90f, -20.22f, -23.04f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
346 info SUP-MAG-001 Algorithm/FOC.cpp 356 业务代码中存在裸数字常量,需确认是否应命名化 -25.66f, -28.80f, -30.45f, -32.11f, -33.17f, -33.97f, -34.68f, -34.26f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
347 info SUP-MAG-001 Algorithm/FOC.cpp 357 业务代码中存在裸数字常量,需确认是否应命名化 -34.18f, -33.78f, -32.47f, -31.11f, -29.40f, -27.89f, -27.05f, -26.72f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
348 info SUP-MAG-001 Algorithm/FOC.cpp 358 业务代码中存在裸数字常量,需确认是否应命名化 -25.59f, -24.86f, -23.61f, -22.97f, -22.89f, -21.81f, -20.78f, -19.23f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
349 info SUP-MAG-001 Algorithm/FOC.cpp 359 业务代码中存在裸数字常量,需确认是否应命名化 -17.74f, -15.09f, -13.18f, -10.51f, -8.18f, -5.89f, -3.35f, -0.02f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
350 info SUP-MAG-001 Algorithm/FOC.cpp 360 业务代码中存在裸数字常量,需确认是否应命名化 2.02f, 3.87f, 6.37f, 9.11f, 12.33f, 14.63f, 17.12f, 19.12f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
351 info SUP-MAG-001 Algorithm/FOC.cpp 366 业务代码中存在裸数字常量,需确认是否应命名化 FOC.cur_loop_p = DEFAULT_current_loop_p * 100 / limit_voltage; 安全相关阈值/时间/比例建议用具名常量或配置宏。
352 info SUP-MAG-001 Algorithm/FOC.cpp 367 业务代码中存在裸数字常量,需确认是否应命名化 FOC.cur_MIT_p = DEFAULT_current_MIT_p * 100 / limit_voltage; 安全相关阈值/时间/比例建议用具名常量或配置宏。
353 info SUP-MAG-001 Algorithm/FOC.cpp 368 业务代码中存在裸数字常量,需确认是否应命名化 FOC.vel_loop_p = DEFAULT_vel_loop_p * 100 / limit_voltage; 安全相关阈值/时间/比例建议用具名常量或配置宏。
354 info SUP-MAG-001 Algorithm/FOC.cpp 369 业务代码中存在裸数字常量,需确认是否应命名化 FOC.vel_angloop_p = DEFAULT_vel_angloop_p * 100; 安全相关阈值/时间/比例建议用具名常量或配置宏。
355 info SUP-MAG-001 Algorithm/FOC.cpp 370 业务代码中存在裸数字常量,需确认是否应命名化 FOC.vel_MIT_p = DEFAULT_vel_MIT_p * 100; 安全相关阈值/时间/比例建议用具名常量或配置宏。
356 info SUP-MAG-001 Algorithm/FOC.cpp 371 业务代码中存在裸数字常量,需确认是否应命名化 FOC.ang_loop_p = DEFAULT_angle_loop_p * 100 / limit_voltage; 安全相关阈值/时间/比例建议用具名常量或配置宏。
357 info SUP-MAG-001 Algorithm/FOC.cpp 372 业务代码中存在裸数字常量,需确认是否应命名化 FOC.ang_angloop_p = DEFAULT_angle_angloop_p * 100 / limit_voltage; 安全相关阈值/时间/比例建议用具名常量或配置宏。
358 info SUP-MAG-001 Algorithm/FOC.cpp 373 业务代码中存在裸数字常量,需确认是否应命名化 FOC.ang_MIT_p = DEFAULT_angle_MIT_p * 100 / limit_voltage; 安全相关阈值/时间/比例建议用具名常量或配置宏。
359 info SUP-MAG-001 Algorithm/FOC.cpp 401 业务代码中存在裸数字常量,需确认是否应命名化 float Y = SQRT3DV2 * Ualpha - 0.5f * Ubeta; 安全相关阈值/时间/比例建议用具名常量或配置宏。
360 info SUP-MAG-001 Algorithm/FOC.cpp 402 业务代码中存在裸数字常量,需确认是否应命名化 float Z = -SQRT3DV2 * Ualpha - 0.5f * Ubeta; 安全相关阈值/时间/比例建议用具名常量或配置宏。
361 info SUP-MAG-001 Algorithm/FOC.cpp 409 业务代码中存在裸数字常量,需确认是否应命名化 static const u8 sector_lut[8] = {0, 2, 6, 1, 4, 3, 5, 0}; 安全相关阈值/时间/比例建议用具名常量或配置宏。
362 info SUP-MAG-001 Algorithm/FOC.cpp 413 业务代码中存在裸数字常量,需确认是否应命名化 Set_3Pwm(0.5f, 0.5f, 0.5f); 安全相关阈值/时间/比例建议用具名常量或配置宏。
363 info SUP-MAG-001 Algorithm/FOC.cpp 431 业务代码中存在裸数字常量,需确认是否应命名化 static const float svpwm_coeff[6][4] = { 安全相关阈值/时间/比例建议用具名常量或配置宏。
364 info SUP-MAG-001 Algorithm/FOC.cpp 432 业务代码中存在裸数字常量,需确认是否应命名化 { SQRT3DV2, -0.5f, 0.0f, 1.0f}, 安全相关阈值/时间/比例建议用具名常量或配置宏。
365 info SUP-MAG-001 Algorithm/FOC.cpp 433 业务代码中存在裸数字常量,需确认是否应命名化 { SQRT3DV2, 0.5f, -SQRT3DV2, 0.5f}, 安全相关阈值/时间/比例建议用具名常量或配置宏。
366 info SUP-MAG-001 Algorithm/FOC.cpp 434 业务代码中存在裸数字常量,需确认是否应命名化 { 0.0f, 1.0f, -SQRT3DV2, -0.5f}, 安全相关阈值/时间/比例建议用具名常量或配置宏。
367 info SUP-MAG-001 Algorithm/FOC.cpp 435 业务代码中存在裸数字常量,需确认是否应命名化 { -SQRT3DV2, 0.5f, 0.0f, -1.0f}, 安全相关阈值/时间/比例建议用具名常量或配置宏。
368 info SUP-MAG-001 Algorithm/FOC.cpp 436 业务代码中存在裸数字常量,需确认是否应命名化 { -SQRT3DV2, -0.5f, SQRT3DV2, -0.5f}, 安全相关阈值/时间/比例建议用具名常量或配置宏。
369 info SUP-MAG-001 Algorithm/FOC.cpp 437 业务代码中存在裸数字常量,需确认是否应命名化 { 0.0f, -1.0f, SQRT3DV2, 0.5f}, 安全相关阈值/时间/比例建议用具名常量或配置宏。
370 info SUP-MAG-001 Algorithm/FOC.cpp 441 业务代码中存在裸数字常量,需确认是否应命名化 float T2 = (svpwm_coeff[sector-1][2] * Ualpha + svpwm_coeff[sector-1][3] * Ubeta) * inv_Udc; 安全相关阈值/时间/比例建议用具名常量或配置宏。
371 info SUP-MAG-001 Algorithm/FOC.cpp 454 业务代码中存在裸数字常量,需确认是否应命名化 duty_a = 0.5f * T0 + T1 + T2; 安全相关阈值/时间/比例建议用具名常量或配置宏。
372 info SUP-MAG-001 Algorithm/FOC.cpp 455 业务代码中存在裸数字常量,需确认是否应命名化 duty_b = 0.5f * T0 + T2; 安全相关阈值/时间/比例建议用具名常量或配置宏。
373 info SUP-MAG-001 Algorithm/FOC.cpp 456 业务代码中存在裸数字常量,需确认是否应命名化 duty_c = 0.5f * T0; 安全相关阈值/时间/比例建议用具名常量或配置宏。
374 info SUP-MAG-001 Algorithm/FOC.cpp 458 业务代码中存在裸数字常量,需确认是否应命名化 case 2: 安全相关阈值/时间/比例建议用具名常量或配置宏。
375 info SUP-MAG-001 Algorithm/FOC.cpp 459 业务代码中存在裸数字常量,需确认是否应命名化 duty_a = 0.5f * T0 + T1; 安全相关阈值/时间/比例建议用具名常量或配置宏。
376 info SUP-MAG-001 Algorithm/FOC.cpp 460 业务代码中存在裸数字常量,需确认是否应命名化 duty_b = 0.5f * T0 + T1 + T2; 安全相关阈值/时间/比例建议用具名常量或配置宏。
377 info SUP-MAG-001 Algorithm/FOC.cpp 461 业务代码中存在裸数字常量,需确认是否应命名化 duty_c = 0.5f * T0; 安全相关阈值/时间/比例建议用具名常量或配置宏。
378 info SUP-MAG-001 Algorithm/FOC.cpp 463 业务代码中存在裸数字常量,需确认是否应命名化 case 3: 安全相关阈值/时间/比例建议用具名常量或配置宏。
379 info SUP-MAG-001 Algorithm/FOC.cpp 464 业务代码中存在裸数字常量,需确认是否应命名化 duty_a = 0.5f * T0; 安全相关阈值/时间/比例建议用具名常量或配置宏。
380 info SUP-MAG-001 Algorithm/FOC.cpp 465 业务代码中存在裸数字常量,需确认是否应命名化 duty_b = 0.5f * T0 + T1 + T2; 安全相关阈值/时间/比例建议用具名常量或配置宏。
381 info SUP-MAG-001 Algorithm/FOC.cpp 466 业务代码中存在裸数字常量,需确认是否应命名化 duty_c = 0.5f * T0 + T2; 安全相关阈值/时间/比例建议用具名常量或配置宏。
382 info SUP-MAG-001 Algorithm/FOC.cpp 468 业务代码中存在裸数字常量,需确认是否应命名化 case 4: 安全相关阈值/时间/比例建议用具名常量或配置宏。
383 info SUP-MAG-001 Algorithm/FOC.cpp 469 业务代码中存在裸数字常量,需确认是否应命名化 duty_a = 0.5f * T0; 安全相关阈值/时间/比例建议用具名常量或配置宏。
384 info SUP-MAG-001 Algorithm/FOC.cpp 470 业务代码中存在裸数字常量,需确认是否应命名化 duty_b = 0.5f * T0 + T1; 安全相关阈值/时间/比例建议用具名常量或配置宏。
385 info SUP-MAG-001 Algorithm/FOC.cpp 471 业务代码中存在裸数字常量,需确认是否应命名化 duty_c = 0.5f * T0 + T1 + T2; 安全相关阈值/时间/比例建议用具名常量或配置宏。
386 info SUP-MAG-001 Algorithm/FOC.cpp 473 业务代码中存在裸数字常量,需确认是否应命名化 case 5: 安全相关阈值/时间/比例建议用具名常量或配置宏。
387 info SUP-MAG-001 Algorithm/FOC.cpp 474 业务代码中存在裸数字常量,需确认是否应命名化 duty_a = 0.5f * T0 + T2; 安全相关阈值/时间/比例建议用具名常量或配置宏。
388 info SUP-MAG-001 Algorithm/FOC.cpp 475 业务代码中存在裸数字常量,需确认是否应命名化 duty_b = 0.5f * T0; 安全相关阈值/时间/比例建议用具名常量或配置宏。
389 info SUP-MAG-001 Algorithm/FOC.cpp 476 业务代码中存在裸数字常量,需确认是否应命名化 duty_c = 0.5f * T0 + T1 + T2; 安全相关阈值/时间/比例建议用具名常量或配置宏。
390 info SUP-MAG-001 Algorithm/FOC.cpp 478 业务代码中存在裸数字常量,需确认是否应命名化 case 6: 安全相关阈值/时间/比例建议用具名常量或配置宏。
391 info SUP-MAG-001 Algorithm/FOC.cpp 479 业务代码中存在裸数字常量,需确认是否应命名化 duty_a = 0.5f * T0 + T1 + T2; 安全相关阈值/时间/比例建议用具名常量或配置宏。
392 info SUP-MAG-001 Algorithm/FOC.cpp 480 业务代码中存在裸数字常量,需确认是否应命名化 duty_b = 0.5f * T0; 安全相关阈值/时间/比例建议用具名常量或配置宏。
393 info SUP-MAG-001 Algorithm/FOC.cpp 481 业务代码中存在裸数字常量,需确认是否应命名化 duty_c = 0.5f * T0 + T1; 安全相关阈值/时间/比例建议用具名常量或配置宏。
394 info SUP-MAG-001 Algorithm/FOC.cpp 484 业务代码中存在裸数字常量,需确认是否应命名化 duty_a = 0.5f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
395 info SUP-MAG-001 Algorithm/FOC.cpp 485 业务代码中存在裸数字常量,需确认是否应命名化 duty_b = 0.5f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
396 info SUP-MAG-001 Algorithm/FOC.cpp 486 业务代码中存在裸数字常量,需确认是否应命名化 duty_c = 0.5f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
397 info SUP-MAG-001 Algorithm/FOC.cpp 534 业务代码中存在裸数字常量,需确认是否应命名化 if (HOLD_PWM_DUTY > 0.95f) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
398 info SUP-MAG-001 Algorithm/FOC.cpp 535 业务代码中存在裸数字常量,需确认是否应命名化 hold_pwm_duty = 0.95f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
399 info SUP-MAG-001 Algorithm/FOC.cpp 548 业务代码中存在裸数字常量,需确认是否应命名化 float hold_pwm_duty = target_velocity/100; 安全相关阈值/时间/比例建议用具名常量或配置宏。
400 info SUP-MAG-001 Algorithm/FOC.cpp 569 业务代码中存在裸数字常量,需确认是否应命名化 if (voltage < 36.0f and voltage > 8.0f) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
401 info SUP-MAG-001 Algorithm/FOC.cpp 572 业务代码中存在裸数字常量,需确认是否应命名化 v_half = voltage * 0.5f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
402 info SUP-MAG-001 Algorithm/FOC.cpp 605 业务代码中存在裸数字常量,需确认是否应命名化 float current_vbus = adc_value[2] * (3.3f / 4096.0f) * 11.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
403 info SUP-MAG-001 Algorithm/FOC.cpp 661 业务代码中存在裸数字常量,需确认是否应命名化 2.0f, voltage_power_supply * 0.5f); 安全相关阈值/时间/比例建议用具名常量或配置宏。
404 info SUP-MAG-001 Algorithm/FOC.cpp 700 业务代码中存在裸数字常量,需确认是否应命名化 if (fabsf(target_delta) > 5.0f) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
405 info SUP-MAG-001 Algorithm/FOC.cpp 763 业务代码中存在裸数字常量,需确认是否应命名化 if (target_velocity < -120.0f) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
406 info SUP-MAG-001 Algorithm/FOC.cpp 764 业务代码中存在裸数字常量,需确认是否应命名化 vel_inVelAngloop.set_P(vel_angloop_p * 2.0f); 安全相关阈值/时间/比例建议用具名常量或配置宏。
407 info SUP-MAG-001 Algorithm/FOC.cpp 765 业务代码中存在裸数字常量,需确认是否应命名化 } else if (target_velocity < -30.0f) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
408 info SUP-MAG-001 Algorithm/FOC.cpp 766 业务代码中存在裸数字常量,需确认是否应命名化 vel_inVelAngloop.set_P(vel_angloop_p * 1.5f); 安全相关阈值/时间/比例建议用具名常量或配置宏。
409 info SUP-MAG-001 Algorithm/FOC.cpp 774 业务代码中存在裸数字常量,需确认是否应命名化 if (fabsf(target_velocity - last_vang_target_vel) > 5.0f) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
410 info SUP-MAG-001 Algorithm/FOC.cpp 817 业务代码中存在裸数字常量,需确认是否应命名化 if (fabsf(target_velocity - last_mit_target_vel) > 5.0f) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
411 info SUP-MAG-001 Algorithm/FOC.h 48 业务代码中存在裸数字常量,需确认是否应命名化 float voltage_power_supply = 24.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
412 info SUP-MAG-001 Algorithm/FOC.h 191 业务代码中存在裸数字常量,需确认是否应命名化 static float cog_calib_run_data[6][COGGING_TABLE_SIZE]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
413 info SUP-MAG-001 Algorithm/FOC.h 198 业务代码中存在裸数字常量,需确认是否应命名化 PIDController{DEFAULT_vel_loop_p * 100 / limit_voltage, vel_loop_Ki, 安全相关阈值/时间/比例建议用具名常量或配置宏。
414 info SUP-MAG-001 Algorithm/FOC.h 199 业务代码中存在裸数字常量,需确认是否应命名化 vel_loop_Kd, 10000, voltage_power_supply}; 安全相关阈值/时间/比例建议用具名常量或配置宏。
415 info SUP-MAG-001 Algorithm/FOC.h 201 业务代码中存在裸数字常量,需确认是否应命名化 PIDController{DEFAULT_angle_loop_p * 100 / limit_voltage, 100.0f, 0.2f, 安全相关阈值/时间/比例建议用具名常量或配置宏。
416 info SUP-MAG-001 Algorithm/FOC.h 202 业务代码中存在裸数字常量,需确认是否应命名化 10000000, voltage_power_supply}; 安全相关阈值/时间/比例建议用具名常量或配置宏。
417 info SUP-MAG-001 Algorithm/FOC.h 204 业务代码中存在裸数字常量,需确认是否应命名化 DEFAULT_current_loop_p * 100 / limit_voltage, current_loop_Ki, 安全相关阈值/时间/比例建议用具名常量或配置宏。
418 info SUP-MAG-001 Algorithm/FOC.h 205 业务代码中存在裸数字常量,需确认是否应命名化 current_loop_Kd, 1500, voltage_power_supply}; 安全相关阈值/时间/比例建议用具名常量或配置宏。
419 info SUP-MAG-001 Algorithm/FOC.h 207 业务代码中存在裸数字常量,需确认是否应命名化 PIDController{DEFAULT_vel_angloop_p * 100, vel_angloop_Ki, 安全相关阈值/时间/比例建议用具名常量或配置宏。
420 info SUP-MAG-001 Algorithm/FOC.h 210 业务代码中存在裸数字常量,需确认是否应命名化 PIDController{DEFAULT_angle_angloop_p * 100 / voltage_power_supply, 安全相关阈值/时间/比例建议用具名常量或配置宏。
421 info SUP-MAG-001 Algorithm/FOC.h 211 业务代码中存在裸数字常量,需确认是否应命名化 ang_angloop_Ki, ang_angloop_Kd, 1e4, 100}; 安全相关阈值/时间/比例建议用具名常量或配置宏。
422 info SUP-MAG-001 Algorithm/FOC.h 214 业务代码中存在裸数字常量,需确认是否应命名化 PIDController{DEFAULT_angle_MIT_p * 100 / limit_voltage, angle_MIT_Ki, 安全相关阈值/时间/比例建议用具名常量或配置宏。
423 info SUP-MAG-001 Algorithm/FOC.h 215 业务代码中存在裸数字常量,需确认是否应命名化 angle_MIT_Kd, 1e5, 100}; 安全相关阈值/时间/比例建议用具名常量或配置宏。
424 info SUP-MAG-001 Algorithm/FOC.h 217 业务代码中存在裸数字常量,需确认是否应命名化 DEFAULT_vel_MIT_p * 100, vel_MIT_Ki, vel_MIT_Kd, 1e9, 1000}; 安全相关阈值/时间/比例建议用具名常量或配置宏。
425 info SUP-MAG-001 Algorithm/FOC.h 219 业务代码中存在裸数字常量,需确认是否应命名化 DEFAULT_current_loop_p * 100 / limit_voltage, current_loop_Ki, 安全相关阈值/时间/比例建议用具名常量或配置宏。
426 info SUP-MAG-001 Algorithm/FOC.h 220 业务代码中存在裸数字常量,需确认是否应命名化 current_loop_Kd, 1500, voltage_power_supply}; 安全相关阈值/时间/比例建议用具名常量或配置宏。
427 info SUP-MAG-001 Algorithm/FOC.h 237 业务代码中存在裸数字常量,需确认是否应命名化 float v_half = voltage_power_supply * 0.5f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
428 info SUP-MAG-001 Algorithm/Filter.cpp 69 业务代码中存在裸数字常量,需确认是否应命名化 std::nth_element(sorted, sorted + size / 2, sorted + size); 安全相关阈值/时间/比例建议用具名常量或配置宏。
429 info SUP-MAG-001 Algorithm/Filter.cpp 71 业务代码中存在裸数字常量,需确认是否应命名化 return sorted[size / 2]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
430 info SUP-MAG-001 Algorithm/Filter.cpp 190 业务代码中存在裸数字常量,需确认是否应命名化 if (error > 180.0f) error -= 360.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
431 info SUP-MAG-001 Algorithm/Filter.cpp 191 业务代码中存在裸数字常量,需确认是否应命名化 else if (error < -180.0f) error += 360.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
432 info SUP-MAG-001 Algorithm/Filter.h 99 业务代码中存在裸数字常量,需确认是否应命名化 const T MIN_COVARIANCE = static_cast<T>(1e-6); 安全相关阈值/时间/比例建议用具名常量或配置宏。
433 info SUP-MAG-001 Algorithm/pid.cpp 30 业务代码中存在裸数字常量,需确认是否应命名化 integral_prev + I * TIME_SLICE * 0.5f * (error + error_prev); 安全相关阈值/时间/比例建议用具名常量或配置宏。
434 info SUP-MAG-001 device/ADC.cpp 20 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float ADC_SCALE = 3.3f / 4096.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
435 info SUP-MAG-001 device/ADC.cpp 22 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float TEMP_FACTOR = 1000.0f / 4.3f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
436 info SUP-MAG-001 device/ADC.cpp 24 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float VCC_FACTOR = 11.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
437 info SUP-MAG-001 device/ADC.cpp 27 业务代码中存在裸数字常量,需确认是否应命名化 1.0f / 50.0f * 100.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
438 info SUP-MAG-001 device/ADC.cpp 31 业务代码中存在裸数字常量,需确认是否应命名化 u16 adc_value[3] = {0}; 安全相关阈值/时间/比例建议用具名常量或配置宏。
439 info SUP-MAG-001 device/ADC.cpp 32 业务代码中存在裸数字常量,需确认是否应命名化 static volatile u16 adc_current_value[3] = {0}; 安全相关阈值/时间/比例建议用具名常量或配置宏。
440 info SUP-MAG-001 device/ADC.cpp 67 业务代码中存在裸数字常量,需确认是否应命名化 dma_data_parameter.number = 3; 安全相关阈值/时间/比例建议用具名常量或配置宏。
441 info SUP-MAG-001 device/ADC.cpp 104 业务代码中存在裸数字常量,需确认是否应命名化 adc_channel_length_config(ADC0, ADC_REGULAR_CHANNEL, 3); 安全相关阈值/时间/比例建议用具名常量或配置宏。
442 info SUP-MAG-001 device/ADC.cpp 109 业务代码中存在裸数字常量,需确认是否应命名化 adc_regular_channel_config(ADC0, 2, ADC_CHANNEL_6, ADC_SAMPLETIME_28POINT5); 安全相关阈值/时间/比例建议用具名常量或配置宏。
443 info SUP-MAG-001 device/ADC.cpp 117 业务代码中存在裸数字常量,需确认是否应命名化 adc_channel_length_config(ADC0, ADC_INSERTED_CHANNEL, 4); 安全相关阈值/时间/比例建议用具名常量或配置宏。
444 info SUP-MAG-001 device/ADC.cpp 120 业务代码中存在裸数字常量,需确认是否应命名化 adc_inserted_channel_config(ADC0, 2, ADC_CHANNEL_4, ADC_SAMPLETIME_55POINT5); 安全相关阈值/时间/比例建议用具名常量或配置宏。
445 info SUP-MAG-001 device/ADC.cpp 121 业务代码中存在裸数字常量,需确认是否应命名化 adc_inserted_channel_config(ADC0, 3, ADC_CHANNEL_5, ADC_SAMPLETIME_55POINT5); 安全相关阈值/时间/比例建议用具名常量或配置宏。
446 info SUP-MAG-001 device/ADC.cpp 148 业务代码中存在裸数字常量,需确认是否应命名化 static_cast<u16>((-CURRENT_OFFSET / ADC_SCALE) + 0.5f)); 安全相关阈值/时间/比例建议用具名常量或配置宏。
447 info SUP-MAG-001 device/ADC.cpp 152 业务代码中存在裸数字常量,需确认是否应命名化 (1.43f - adc_value[0] * ADC_SCALE) * TEMP_FACTOR + 35.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
448 info SUP-MAG-001 device/ADC.cpp 158 业务代码中存在裸数字常量,需确认是否应命名化 vbus_samples[i] = adc_value[2] * ADC_SCALE * VCC_FACTOR; 安全相关阈值/时间/比例建议用具名常量或配置宏。
449 info SUP-MAG-001 device/ADC.cpp 160 业务代码中存在裸数字常量,需确认是否应命名化 float R_now = (float)adc_value[1] / (4096 - (float)adc_value[1]) * 4700; 安全相关阈值/时间/比例建议用具名常量或配置宏。
450 info SUP-MAG-001 device/ADC.cpp 162 业务代码中存在裸数字常量,需确认是否应命名化 1.0f / (0.00335f + 0.00025f * log(R_now / 10000.0f)) - 273.15f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
451 info SUP-MAG-001 device/ADC.cpp 241 业务代码中存在裸数字常量,需确认是否应命名化 (1.43f - adc_value[0] * ADC_SCALE) * TEMP_FACTOR + 35.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
452 info SUP-MAG-001 device/ADC.cpp 259 业务代码中存在裸数字常量,需确认是否应命名化 float R_now = (float)adc_value[1] / (4096 - (float)adc_value[1]) * 4700; 安全相关阈值/时间/比例建议用具名常量或配置宏。
453 info SUP-MAG-001 device/ADC.cpp 261 业务代码中存在裸数字常量,需确认是否应命名化 1.0f / (0.00335f + 0.00025f * log(R_now / 10000.0f)) - 273.15f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
454 info SUP-MAG-001 device/ADC.cpp 285 业务代码中存在裸数字常量,需确认是否应命名化 currW_samples[idx] = current_adc_to_ma(adc_current_value[2]); 安全相关阈值/时间/比例建议用具名常量或配置宏。
455 info SUP-MAG-001 device/ADC.cpp 299 业务代码中存在裸数字常量,需确认是否应命名化 vbus_samples[temp_vbus_head] = adc_value[2] * ADC_SCALE * VCC_FACTOR; 安全相关阈值/时间/比例建议用具名常量或配置宏。
456 info SUP-MAG-001 device/ADC.cpp 305 业务代码中存在裸数字常量,需确认是否应命名化 const u8 mid = ADC_FILTER_SIZE / 2; 安全相关阈值/时间/比例建议用具名常量或配置宏。
457 info SUP-MAG-001 device/ADC.cpp 323 业务代码中存在裸数字常量,需确认是否应命名化 adc_current_value[2] = adc_inserted_data_read(ADC0, ADC_INSERTED_CHANNEL_3); 安全相关阈值/时间/比例建议用具名常量或配置宏。
458 info SUP-MAG-001 device/Can.cpp 49 业务代码中存在裸数字常量,需确认是否应命名化 uint8_t can_rx_buffer[64]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
459 info SUP-MAG-001 device/Can.cpp 50 业务代码中存在裸数字常量,需确认是否应命名化 static uint32_t can_rx_dma_words[16]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
460 info SUP-MAG-001 device/Can.cpp 63 业务代码中存在裸数字常量,需确认是否应命名化 u8 data[64]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
461 info SUP-MAG-001 device/Can.cpp 82 业务代码中存在裸数字常量,需确认是否应命名化 static constexpr u8 CANFD_DLC_LENGTH_TABLE[7] = {12, 16, 20, 24, 32, 48, 64}; 安全相关阈值/时间/比例建议用具名常量或配置宏。
462 info SUP-MAG-001 device/Can.cpp 103 业务代码中存在裸数字常量,需确认是否应命名化 return ((u32)node_id << 16) | (base_id & 0xFFFF); 安全相关阈值/时间/比例建议用具名常量或配置宏。
463 info SUP-MAG-001 device/Can.cpp 116 业务代码中存在裸数字常量,需确认是否应命名化 u16 rx_node_id = (u16)((received_id >> 16) & 0xFFFF); 安全相关阈值/时间/比例建议用具名常量或配置宏。
464 info SUP-MAG-001 device/Can.cpp 323 业务代码中存在裸数字常量,需确认是否应命名化 dma_rx_parameter.number = 16; 安全相关阈值/时间/比例建议用具名常量或配置宏。
465 info SUP-MAG-001 device/Can.cpp 363 业务代码中存在裸数字常量,需确认是否应命名化 can_parameter.prescaler = 6; 安全相关阈值/时间/比例建议用具名常量或配置宏。
466 info SUP-MAG-001 device/Can.cpp 426 业务代码中存在裸数字常量,需确认是否应命名化 can_parameter.prescaler = 6; 安全相关阈值/时间/比例建议用具名常量或配置宏。
467 info SUP-MAG-001 device/Can.cpp 445 业务代码中存在裸数字常量,需确认是否应命名化 can_fd_parameter.data_prescaler = 6; 安全相关阈值/时间/比例建议用具名常量或配置宏。
468 info SUP-MAG-001 device/Can.cpp 499 业务代码中存在裸数字常量,需确认是否应命名化 can_parameter.prescaler = 6; 安全相关阈值/时间/比例建议用具名常量或配置宏。
469 info SUP-MAG-001 device/Can.cpp 501 业务代码中存在裸数字常量,需确认是否应命名化 u16 i = 200; 安全相关阈值/时间/比例建议用具名常量或配置宏。
470 info SUP-MAG-001 device/Can.cpp 503 业务代码中存在裸数字常量,需确认是否应命名化 delay_1ms(10); 安全相关阈值/时间/比例建议用具名常量或配置宏。
471 info SUP-MAG-001 device/Can.cpp 516 业务代码中存在裸数字常量,需确认是否应命名化 ((uint16_t)(DEV_CAN_LOOPBACK_ID)) << 3U | (1U << 2); 安全相关阈值/时间/比例建议用具名常量或配置宏。
472 info SUP-MAG-001 device/Can.cpp 545 业务代码中存在裸数字常量,需确认是否应命名化 std::uniform_int_distribution<int> dis(0, 255); 安全相关阈值/时间/比例建议用具名常量或配置宏。
473 info SUP-MAG-001 device/Can.cpp 552 业务代码中存在裸数字常量,需确认是否应命名化 transmit_message.tx_dlen = 7; 安全相关阈值/时间/比例建议用具名常量或配置宏。
474 info SUP-MAG-001 device/Can.cpp 621 业务代码中存在裸数字常量,需确认是否应命名化 transmit_message.tx_dlen = 7; 安全相关阈值/时间/比例建议用具名常量或配置宏。
475 info SUP-MAG-001 device/Can.cpp 762 业务代码中存在裸数字常量,需确认是否应命名化 if (rx_queue[rx_queue_tail].length > 64) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
476 info SUP-MAG-001 device/Can.cpp 763 业务代码中存在裸数字常量,需确认是否应命名化 rx_queue[rx_queue_tail].length = 64; 安全相关阈值/时间/比例建议用具名常量或配置宏。
477 info SUP-MAG-001 device/Can.cpp 815 业务代码中存在裸数字常量,需确认是否应命名化 message->fd_flag = (uint8_t)((CAN_RFIFOMP_FDF & rfifomp) >> 7); 安全相关阈值/时间/比例建议用具名常量或配置宏。
478 info SUP-MAG-001 device/Can.cpp 819 业务代码中存在裸数字常量,需确认是否应命名化 message->fd_brs = (uint8_t)((rfifomp & CAN_RFIFOMP_BRS) >> 5); 安全相关阈值/时间/比例建议用具名常量或配置宏。
479 info SUP-MAG-001 device/Can.cpp 820 业务代码中存在裸数字常量,需确认是否应命名化 message->fd_esi = (uint8_t)((rfifomp & CAN_RFIFOMP_ESI) >> 4); 安全相关阈值/时间/比例建议用具名常量或配置宏。
480 info SUP-MAG-001 device/Can.cpp 833 业务代码中存在裸数字常量,需确认是否应命名化 if (can_rx_dma_message.rx_dlen > 64) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
481 info SUP-MAG-001 device/Can.cpp 834 业务代码中存在裸数字常量,需确认是否应命名化 can_rx_dma_message.rx_dlen = 64; 安全相关阈值/时间/比例建议用具名常量或配置宏。
482 info SUP-MAG-001 device/Can.cpp 1004 业务代码中存在裸数字常量,需确认是否应命名化 limit_voltage = FOC.limit_voltage * 1000; 安全相关阈值/时间/比例建议用具名常量或配置宏。
483 info SUP-MAG-001 device/Can.cpp 1005 业务代码中存在裸数字常量,需确认是否应命名化 mcu_temp = sampler.get_mcu_temp() * 100; 安全相关阈值/时间/比例建议用具名常量或配置宏。
484 info SUP-MAG-001 device/Can.cpp 1006 业务代码中存在裸数字常量,需确认是否应命名化 motor_temp = sampler.get_drv_temp() * 100; 安全相关阈值/时间/比例建议用具名常量或配置宏。
485 info SUP-MAG-001 device/Can.cpp 1007 业务代码中存在裸数字常量,需确认是否应命名化 Power_Voltage = sampler.get_vbus_voltage() * 1000; 安全相关阈值/时间/比例建议用具名常量或配置宏。
486 info SUP-MAG-001 device/Can.cpp 1015 业务代码中存在裸数字常量,需确认是否应命名化 u_current_union.f = sampler.get_current('') * 1000; 安全相关阈值/时间/比例建议用具名常量或配置宏。
487 info SUP-MAG-001 device/Can.cpp 1016 业务代码中存在裸数字常量,需确认是否应命名化 w_current_union.f = sampler.get_current('') * 1000; 安全相关阈值/时间/比例建议用具名常量或配置宏。
488 info SUP-MAG-001 device/Can.cpp 1017 业务代码中存在裸数字常量,需确认是否应命名化 v_current_union.f = sampler.get_current('') * 1000; 安全相关阈值/时间/比例建议用具名常量或配置宏。
489 info SUP-MAG-001 device/Can.cpp 1035 业务代码中存在裸数字常量,需确认是否应命名化 memset(transmit_data, 0, 32); 安全相关阈值/时间/比例建议用具名常量或配置宏。
490 info SUP-MAG-001 device/Can.cpp 1037 业务代码中存在裸数字常量,需确认是否应命名化 pack_u16_to_bytes(transmit_data, 2, motor_temp); 安全相关阈值/时间/比例建议用具名常量或配置宏。
491 info SUP-MAG-001 device/Can.cpp 1038 业务代码中存在裸数字常量,需确认是否应命名化 pack_u16_to_bytes(transmit_data, 4, u16(u_current_union.f)); 安全相关阈值/时间/比例建议用具名常量或配置宏。
492 info SUP-MAG-001 device/Can.cpp 1039 业务代码中存在裸数字常量,需确认是否应命名化 pack_u16_to_bytes(transmit_data, 6, u16(v_current_union.f)); 安全相关阈值/时间/比例建议用具名常量或配置宏。
493 info SUP-MAG-001 device/Can.cpp 1040 业务代码中存在裸数字常量,需确认是否应命名化 pack_u16_to_bytes(transmit_data, 8, u16(w_current_union.f)); 安全相关阈值/时间/比例建议用具名常量或配置宏。
494 info SUP-MAG-001 device/Can.cpp 1041 业务代码中存在裸数字常量,需确认是否应命名化 transmit_data[10] = 安全相关阈值/时间/比例建议用具名常量或配置宏。
495 info SUP-MAG-001 device/Can.cpp 1042 业务代码中存在裸数字常量,需确认是否应命名化 (transmit_data[10] & ~0x07) | 安全相关阈值/时间/比例建议用具名常量或配置宏。
496 info SUP-MAG-001 device/Can.cpp 1044 业务代码中存在裸数字常量,需确认是否应命名化 ((ThermalStatus & 0x01) << 2) | ((EEPROMStatus & 0x07) << 3)); 安全相关阈值/时间/比例建议用具名常量或配置宏。
497 info SUP-MAG-001 device/Can.cpp 1045 业务代码中存在裸数字常量,需确认是否应命名化 pack_u16_to_bytes(transmit_data, 11, Power_Voltage); 安全相关阈值/时间/比例建议用具名常量或配置宏。
498 info SUP-MAG-001 device/Can.cpp 1046 业务代码中存在裸数字常量,需确认是否应命名化 pack_float_to_bytes(transmit_data, 13, rt_angle_union); 安全相关阈值/时间/比例建议用具名常量或配置宏。
499 info SUP-MAG-001 device/Can.cpp 1047 业务代码中存在裸数字常量,需确认是否应命名化 pack_float_to_bytes(transmit_data, 17, rt_velocity_union); 安全相关阈值/时间/比例建议用具名常量或配置宏。
500 info SUP-MAG-001 device/Can.cpp 1048 业务代码中存在裸数字常量,需确认是否应命名化 pack_float_to_bytes(transmit_data, 21, rt_current_union); 安全相关阈值/时间/比例建议用具名常量或配置宏。
501 info SUP-MAG-001 device/Can.cpp 1049 业务代码中存在裸数字常量,需确认是否应命名化 pack_float_to_bytes(transmit_data, 25, testfloat_union); 安全相关阈值/时间/比例建议用具名常量或配置宏。
502 info SUP-MAG-001 device/Can.cpp 1050 业务代码中存在裸数字常量,需确认是否应命名化 transmit_data[29] = test_u16 & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
503 info SUP-MAG-001 device/Can.cpp 1051 业务代码中存在裸数字常量,需确认是否应命名化 transmit_data[30] = (test_u16 >> 8) & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
504 info SUP-MAG-001 device/Can.cpp 1052 业务代码中存在裸数字常量,需确认是否应命名化 transmit_data[31] = cpu_usage; 安全相关阈值/时间/比例建议用具名常量或配置宏。
505 info SUP-MAG-001 device/Can.cpp 1055 业务代码中存在裸数字常量,需确认是否应命名化 CANFD_AsyncSend(build_can_id(CANFD_STATUS_ID), 32, transmit_data); 安全相关阈值/时间/比例建议用具名常量或配置宏。
506 info SUP-MAG-001 device/Can.cpp 1058 业务代码中存在裸数字常量,需确认是否应命名化 memset(transmit_data, 0, 24); 安全相关阈值/时间/比例建议用具名常量或配置宏。
507 info SUP-MAG-001 device/Can.cpp 1061 业务代码中存在裸数字常量,需确认是否应命名化 pack_float_to_bytes(transmit_data, 3, target_current_union); 安全相关阈值/时间/比例建议用具名常量或配置宏。
508 info SUP-MAG-001 device/Can.cpp 1062 业务代码中存在裸数字常量,需确认是否应命名化 pack_float_to_bytes(transmit_data, 7, target_velocity_union); 安全相关阈值/时间/比例建议用具名常量或配置宏。
509 info SUP-MAG-001 device/Can.cpp 1063 业务代码中存在裸数字常量,需确认是否应命名化 pack_float_to_bytes(transmit_data, 11, target_angle_union); 安全相关阈值/时间/比例建议用具名常量或配置宏。
510 info SUP-MAG-001 device/Can.cpp 1066 业务代码中存在裸数字常量,需确认是否应命名化 CANFD_AsyncSend(build_can_id(CANFD_CONFIG_ID), 24, transmit_data); 安全相关阈值/时间/比例建议用具名常量或配置宏。
511 info SUP-MAG-001 device/Can.cpp 1102 业务代码中存在裸数字常量,需确认是否应命名化 u16 sender_node_id = (u16)((current_message.rx_efid >> 16) & 0xFFFF); 安全相关阈值/时间/比例建议用具名常量或配置宏。
512 info SUP-MAG-001 device/Can.cpp 1138 业务代码中存在裸数字常量,需确认是否应命名化 if (current_message.rx_dlen >= 2) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
513 info SUP-MAG-001 device/Can.cpp 1153 业务代码中存在裸数字常量,需确认是否应命名化 transmit_data[2] = 安全相关阈值/时间/比例建议用具名常量或配置宏。
514 info SUP-MAG-001 device/Can.cpp 1154 业务代码中存在裸数字常量,需确认是否应命名化 (u8)((new_node_id >> 8) & 0xFF); 安全相关阈值/时间/比例建议用具名常量或配置宏。
515 info SUP-MAG-001 device/Can.cpp 1158 业务代码中存在裸数字常量,需确认是否应命名化 u8 send_result = CANFD_AsyncSend(build_can_id(CANFD_SET_NODE_ID), 3, 安全相关阈值/时间/比例建议用具名常量或配置宏。
516 info SUP-MAG-001 device/Can.cpp 1179 业务代码中存在裸数字常量,需确认是否应命名化 CANFD_AsyncSend(build_can_id(CANFD_SET_NODE_ID), 3, 安全相关阈值/时间/比例建议用具名常量或配置宏。
517 info SUP-MAG-001 device/Can.cpp 1188 业务代码中存在裸数字常量,需确认是否应命名化 transmit_data[2] = (u8)((new_node_id >> 8) & 0xFF); 安全相关阈值/时间/比例建议用具名常量或配置宏。
518 info SUP-MAG-001 device/Can.cpp 1190 业务代码中存在裸数字常量,需确认是否应命名化 CANFD_AsyncSend(build_can_id(CANFD_SET_NODE_ID), 3, 安全相关阈值/时间/比例建议用具名常量或配置宏。
519 info SUP-MAG-001 device/Can.cpp 1207 业务代码中存在裸数字常量,需确认是否应命名化 float(unpack_bytes_to_u16(current_message.rx_data, 1)) / 1000; 安全相关阈值/时间/比例建议用具名常量或配置宏。
520 info SUP-MAG-001 device/Can.cpp 1210 业务代码中存在裸数字常量,需确认是否应命名化 unpack_bytes_to_float(current_message.rx_data, 3).f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
521 info SUP-MAG-001 device/Can.cpp 1215 业务代码中存在裸数字常量,需确认是否应命名化 unpack_bytes_to_float(current_message.rx_data, 7).f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
522 info SUP-MAG-001 device/Can.cpp 1220 业务代码中存在裸数字常量,需确认是否应命名化 unpack_bytes_to_float(current_message.rx_data, 11).f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
523 info SUP-MAG-001 device/Can.cpp 1229 业务代码中存在裸数字常量,需确认是否应命名化 u16 P_config = unpack_bytes_to_u16(current_message.rx_data, 15); 安全相关阈值/时间/比例建议用具名常量或配置宏。
524 info SUP-MAG-001 device/Can.cpp 1233 业务代码中存在裸数字常量,需确认是否应命名化 P_config = unpack_bytes_to_u16(current_message.rx_data, 17); 安全相关阈值/时间/比例建议用具名常量或配置宏。
525 info SUP-MAG-001 device/Can.cpp 1238 业务代码中存在裸数字常量,需确认是否应命名化 P_config = unpack_bytes_to_u16(current_message.rx_data, 19); 安全相关阈值/时间/比例建议用具名常量或配置宏。
526 info SUP-MAG-001 device/Can.cpp 1244 业务代码中存在裸数字常量,需确认是否应命名化 u8 eigth_byte = current_message.rx_data[7]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
527 info SUP-MAG-001 device/Can.cpp 1255 业务代码中存在裸数字常量,需确认是否应命名化 if (first_byte >> 2 & 0x01) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
528 info SUP-MAG-001 device/Can.cpp 1259 业务代码中存在裸数字常量,需确认是否应命名化 if (first_byte >> 3 & 0x01) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
529 info SUP-MAG-001 device/Can.cpp 1266 业务代码中存在裸数字常量,需确认是否应命名化 if (first_byte >> 4 & 0x01) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
530 info SUP-MAG-001 device/Can.cpp 1271 业务代码中存在裸数字常量,需确认是否应命名化 if (eigth_byte & 0x80 >> 7) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
531 info SUP-MAG-001 device/Can.cpp 1287 业务代码中存在裸数字常量,需确认是否应命名化 CANFD_AsyncSend(build_can_id(CANFD_OTA_ACK_ID), 2, 安全相关阈值/时间/比例建议用具名常量或配置宏。
532 info SUP-MAG-001 device/Can.cpp 1294 业务代码中存在裸数字常量,需确认是否应命名化 CANFD_AsyncSend(build_can_id(CANFD_GET_NODE_ID), 2, transmit_data); 安全相关阈值/时间/比例建议用具名常量或配置宏。
533 info SUP-MAG-001 device/Can.cpp 1401 业务代码中存在裸数字常量,需确认是否应命名化 if (length > 8) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
534 info SUP-MAG-001 device/Can.cpp 1419 业务代码中存在裸数字常量,需确认是否应命名化 for (int i = 0; i < length && i < 8; i++) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
535 info SUP-MAG-001 device/Can.h 25 业务代码中存在裸数字常量,需确认是否应命名化 u8 b[4]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
536 info SUP-MAG-001 device/Can.h 38 业务代码中存在裸数字常量,需确认是否应命名化 buffer[offset + 1] = (u8)((value >> 8) & 0xFF); 安全相关阈值/时间/比例建议用具名常量或配置宏。
537 info SUP-MAG-001 device/Can.h 53 业务代码中存在裸数字常量,需确认是否应命名化 buffer[offset + 2] = float_union.b[2]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
538 info SUP-MAG-001 device/Can.h 54 业务代码中存在裸数字常量,需确认是否应命名化 buffer[offset + 3] = float_union.b[3]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
539 info SUP-MAG-001 device/Can.h 65 业务代码中存在裸数字常量,需确认是否应命名化 short value = (short)(buffer[offset] | (buffer[offset + 1] << 8)); 安全相关阈值/时间/比例建议用具名常量或配置宏。
540 info SUP-MAG-001 device/Can.h 77 业务代码中存在裸数字常量,需确认是否应命名化 u16 value = (u16)(buffer[offset] | (buffer[offset + 1] << 8)); 安全相关阈值/时间/比例建议用具名常量或配置宏。
541 info SUP-MAG-001 device/Can.h 92 业务代码中存在裸数字常量,需确认是否应命名化 float_union.b[2] = buffer[offset + 2]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
542 info SUP-MAG-001 device/Can.h 93 业务代码中存在裸数字常量,需确认是否应命名化 float_union.b[3] = buffer[offset + 3]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
543 info SUP-MAG-001 device/Can.h 161 业务代码中存在裸数字常量,需确认是否应命名化 static const uint8_t CAN_RX_BUFFER_SIZE = 8; 安全相关阈值/时间/比例建议用具名常量或配置宏。
544 info SUP-MAG-001 device/Can.h 162 业务代码中存在裸数字常量,需确认是否应命名化 static const u32 CAN_SILENT_DURATION_MS = 10000; 安全相关阈值/时间/比例建议用具名常量或配置宏。
545 info SUP-MAG-001 device/Can.h 195 业务代码中存在裸数字常量,需确认是否应命名化 u8 transmit_data[64]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
546 info SUP-MAG-001 device/Timer.cpp 19 业务代码中存在裸数字常量,需确认是否应命名化 extern u16 adc_value[3]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
547 info SUP-MAG-001 device/Timer.cpp 27 业务代码中存在裸数字常量,需确认是否应命名化 static const u32 task_schedule_100us[10] = { 安全相关阈值/时间/比例建议用具名常量或配置宏。
548 info SUP-MAG-001 device/Timer.cpp 41 业务代码中存在裸数字常量,需确认是否应命名化 static const u32 task_schedule_1ms[10] = { 安全相关阈值/时间/比例建议用具名常量或配置宏。
549 info SUP-MAG-001 device/Timer.cpp 48 业务代码中存在裸数字常量,需确认是否应命名化 static const u32 task_schedule_10ms[10] = { 安全相关阈值/时间/比例建议用具名常量或配置宏。
550 info SUP-MAG-001 device/Timer.cpp 53 业务代码中存在裸数字常量,需确认是否应命名化 static const u32 task_schedule_100ms[10] = { 安全相关阈值/时间/比例建议用具名常量或配置宏。
551 info SUP-MAG-001 device/Timer.cpp 69 业务代码中存在裸数字常量,需确认是否应命名化 nvic_irq_enable(TIMER1_IRQn, 0, 2); 安全相关阈值/时间/比例建议用具名常量或配置宏。
552 info SUP-MAG-001 device/Timer.cpp 299 业务代码中存在裸数字常量,需确认是否应命名化 if (channel <= 3) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
553 info SUP-MAG-001 device/ang_sensor.cpp 124 业务代码中存在裸数字常量,需确认是否应命名化 uint32_t timeout = 100; 安全相关阈值/时间/比例建议用具名常量或配置宏。
554 info SUP-MAG-001 device/ang_sensor.cpp 203 业务代码中存在裸数字常量,需确认是否应命名化 spi_init_str.prescale = 24; 安全相关阈值/时间/比例建议用具名常量或配置宏。
555 info SUP-MAG-001 main.cpp 69 业务代码中存在裸数字常量,需确认是否应命名化 watchdog_init(50); 安全相关阈值/时间/比例建议用具名常量或配置宏。
556 info SUP-MAG-001 main.cpp 150 业务代码中存在裸数字常量,需确认是否应命名化 FOC.control_mode < 8) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
557 info SUP-MAG-001 sys/config.h 32 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u16 SOFTWARE_VERSION_MAJOR = 26; 安全相关阈值/时间/比例建议用具名常量或配置宏。
558 info SUP-MAG-001 sys/config.h 34 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u16 SOFTWARE_VERSION_MINOR = 5; 安全相关阈值/时间/比例建议用具名常量或配置宏。
559 info SUP-MAG-001 sys/config.h 36 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u16 SOFTWARE_VERSION_PATCH = 19; 安全相关阈值/时间/比例建议用具名常量或配置宏。
560 info SUP-MAG-001 sys/config.h 38 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u16 SOFTWARE_VERSION_BUILD = 2; 安全相关阈值/时间/比例建议用具名常量或配置宏。
561 info SUP-MAG-001 sys/config.h 41 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u16 HARDWARE_VERSION_MAJOR = 25; 安全相关阈值/时间/比例建议用具名常量或配置宏。
562 info SUP-MAG-001 sys/config.h 43 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u16 HARDWARE_VERSION_MINOR = 12; 安全相关阈值/时间/比例建议用具名常量或配置宏。
563 info SUP-MAG-001 sys/config.h 50 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u16 BOOT_VERSION_MAJOR = 26; 安全相关阈值/时间/比例建议用具名常量或配置宏。
564 info SUP-MAG-001 sys/config.h 54 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u16 BOOT_VERSION_PATCH = 12; 安全相关阈值/时间/比例建议用具名常量或配置宏。
565 info SUP-MAG-001 sys/config.h 125 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u32 OTA_CONFIG_NUM = 6; 安全相关阈值/时间/比例建议用具名常量或配置宏。
566 info SUP-MAG-001 sys/config.h 145 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u8 PP = 11; 安全相关阈值/时间/比例建议用具名常量或配置宏。
567 info SUP-MAG-001 sys/config.h 149 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u16 REDUCTION_RATIO = 25; 安全相关阈值/时间/比例建议用具名常量或配置宏。
568 info SUP-MAG-001 sys/config.h 151 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float CURRENT_OFFSET = -3.31f / 2.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
569 info SUP-MAG-001 sys/config.h 157 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float ANGLESENS_CALIBRATION_ANGLE = 83.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
570 info SUP-MAG-001 sys/config.h 171 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float ANGLE_OBSERVER_ALPHA = 0.75f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
571 info SUP-MAG-001 sys/config.h 179 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float VELOCITY_KALMAN_INITIAL_COVARIANCE = 1e-3f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
572 info SUP-MAG-001 sys/config.h 182 业务代码中存在裸数字常量,需确认是否应命名化 5e-4f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
573 info SUP-MAG-001 sys/config.h 191 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float CURRENT_KALMAN_INITIAL_COVARIANCE = 100.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
574 info SUP-MAG-001 sys/config.h 193 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float CURRENT_KALMAN_PROCESS_NOISE_Q = 10.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
575 info SUP-MAG-001 sys/config.h 195 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float CURRENT_KALMAN_MEASUREMENT_NOISE_R = 5e-5f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
576 info SUP-MAG-001 sys/config.h 199 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float DEFAULT_current_loop_p = 0.1f / 100 * 12; 安全相关阈值/时间/比例建议用具名常量或配置宏。
577 info SUP-MAG-001 sys/config.h 201 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float current_loop_Ki = 0.55f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
578 info SUP-MAG-001 sys/config.h 203 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float current_loop_Kd = 3e-4f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
579 info SUP-MAG-001 sys/config.h 206 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float DEFAULT_vel_loop_p = 0.018f / 100 * 12; 安全相关阈值/时间/比例建议用具名常量或配置宏。
580 info SUP-MAG-001 sys/config.h 208 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float vel_loop_Ku = 3.600000e-03 * 0.7 * 100 / 12; 安全相关阈值/时间/比例建议用具名常量或配置宏。
581 info SUP-MAG-001 sys/config.h 210 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float vel_loop_Tu = 17.0f * 1e-3f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
582 info SUP-MAG-001 sys/config.h 212 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float vel_loop_Ki = 1.2 * vel_loop_Ku / vel_loop_Tu; 安全相关阈值/时间/比例建议用具名常量或配置宏。
583 info SUP-MAG-001 sys/config.h 214 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float vel_loop_Kd = 0.075 * vel_loop_Ku * vel_loop_Tu * 2; 安全相关阈值/时间/比例建议用具名常量或配置宏。
584 info SUP-MAG-001 sys/config.h 217 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float DEFAULT_vel_angloop_p = 0.4f / 100; 安全相关阈值/时间/比例建议用具名常量或配置宏。
585 info SUP-MAG-001 sys/config.h 219 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float vel_angloop_Ki = 5.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
586 info SUP-MAG-001 sys/config.h 225 业务代码中存在裸数字常量,需确认是否应命名化 150.0f / 100 * 12; 安全相关阈值/时间/比例建议用具名常量或配置宏。
587 info SUP-MAG-001 sys/config.h 232 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float DEFAULT_angle_loop_p = 60.0f / 100 * 12; 安全相关阈值/时间/比例建议用具名常量或配置宏。
588 info SUP-MAG-001 sys/config.h 235 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float DEFAULT_angle_MIT_p = 100.0f / 100 * 12; 安全相关阈值/时间/比例建议用具名常量或配置宏。
589 info SUP-MAG-001 sys/config.h 242 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float DEFAULT_vel_MIT_p = 5.0f / 100; 安全相关阈值/时间/比例建议用具名常量或配置宏。
590 info SUP-MAG-001 sys/config.h 244 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float vel_MIT_Ki = 15.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
591 info SUP-MAG-001 sys/config.h 249 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float DEFAULT_current_MIT_p = 0.2f / 100 * 12; 安全相关阈值/时间/比例建议用具名常量或配置宏。
592 info SUP-MAG-001 sys/config.h 253 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float current_MIT_Kd = 3e-4f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
593 info SUP-MAG-001 sys/config.h 260 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float ADC_MAX = 65536.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
594 info SUP-MAG-001 sys/config.h 262 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float PI = 3.14159265358979323846f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
595 info SUP-MAG-001 sys/config.h 264 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float INV_PI_3 = 3.0f / PI; 安全相关阈值/时间/比例建议用具名常量或配置宏。
596 info SUP-MAG-001 sys/config.h 266 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float PI_3 = PI / 3.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
597 info SUP-MAG-001 sys/config.h 268 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float _1_SQRT3 = 0.57735026919f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
598 info SUP-MAG-001 sys/config.h 270 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float _3PI_2 = 4.71238898038f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
599 info SUP-MAG-001 sys/config.h 272 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float SQRT3 = 1.7320508075688772f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
600 info SUP-MAG-001 sys/config.h 274 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float SQRT3DV2 = 0.8660254037844386f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
601 info SUP-MAG-001 sys/config.h 276 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float COS_PI_3 = 0.5f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
602 info SUP-MAG-001 sys/config.h 278 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float ANGLE_FACTOR = 25.0f / 180.0f * PI; 安全相关阈值/时间/比例建议用具名常量或配置宏。
603 info SUP-MAG-001 sys/config.h 280 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float DEG2RAD = 1.0f / 180.0f * PI; 安全相关阈值/时间/比例建议用具名常量或配置宏。
604 info SUP-MAG-001 sys/config.h 282 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float RAD2DEG = 180.0f / PI; 安全相关阈值/时间/比例建议用具名常量或配置宏。
605 info SUP-MAG-001 sys/config.h 286 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u8 CONFIG_SAVED_NUM = 6; 安全相关阈值/时间/比例建议用具名常量或配置宏。
606 info SUP-MAG-001 sys/config.h 290 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u16 LUT_SIZE = 1024; 安全相关阈值/时间/比例建议用具名常量或配置宏。
607 info SUP-MAG-001 sys/config.h 294 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u16 LUT_SCALE = (LUT_SIZE / (2.0f * PI)); 安全相关阈值/时间/比例建议用具名常量或配置宏。
608 info SUP-MAG-001 sys/config.h 338 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u8 ADC_FILTER_SIZE = 6; 安全相关阈值/时间/比例建议用具名常量或配置宏。
609 info SUP-MAG-001 sys/config.h 342 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float ERROR_ADC_VAL = 255.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
610 info SUP-MAG-001 sys/config.h 344 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float MAX_TEMP = 150.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
611 info SUP-MAG-001 sys/config.h 346 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float MIN_TEMP = -40.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
612 info SUP-MAG-001 sys/config.h 348 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float MAX_CURRENT = 40.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
613 info SUP-MAG-001 sys/config.h 350 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float MIN_CURRENT = -40.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
614 info SUP-MAG-001 sys/config.h 352 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float MAX_VCC = 65.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
615 info SUP-MAG-001 sys/config.h 358 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u16 VEL_FILTER_SIZE = 4; 安全相关阈值/时间/比例建议用具名常量或配置宏。
616 info SUP-MAG-001 sys/config.h 364 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float ANGLE_WRAP_THRESHOLD = 300.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
617 info SUP-MAG-001 sys/config.h 366 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float ANGLE_WRAP_VALUE = 360.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
618 info SUP-MAG-001 sys/config.h 368 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float RAD_FACTOR = 1.0f / ADC_MAX * 2.0f * PI; 安全相关阈值/时间/比例建议用具名常量或配置宏。
619 info SUP-MAG-001 sys/config.h 370 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float ANGLESENS_FACTOR = 1.0f / ADC_MAX * 360.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
620 info SUP-MAG-001 sys/config.h 374 业务代码中存在裸数字常量,需确认是否应命名化 constexpr int TIMER2_PRESCALER = 119; 安全相关阈值/时间/比例建议用具名常量或配置宏。
621 info SUP-MAG-001 sys/config.h 376 业务代码中存在裸数字常量,需确认是否应命名化 constexpr int TIMER2_PERIOD = 49; 安全相关阈值/时间/比例建议用具名常量或配置宏。
622 info SUP-MAG-001 sys/config.h 381 业务代码中存在裸数字常量,需确认是否应命名化 (TIMER2_PERIOD + 1) * (TIMER2_PRESCALER + 1) / 120000000.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
623 info SUP-MAG-001 sys/config.h 391 业务代码中存在裸数字常量,需确认是否应命名化 constexpr int TIMER1_PERIOD = 2999; 安全相关阈值/时间/比例建议用具名常量或配置宏。
624 info SUP-MAG-001 sys/config.h 396 业务代码中存在裸数字常量,需确认是否应命名化 (TIMER1_PERIOD + 1) * 0.41 - 1; 安全相关阈值/时间/比例建议用具名常量或配置宏。
625 info SUP-MAG-001 sys/config.h 400 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u16 COGGING_TABLE_SIZE = 128; 安全相关阈值/时间/比例建议用具名常量或配置宏。
626 info SUP-MAG-001 sys/config.h 413 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float VBUS_DROP_THRESHOLD = 5.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
627 info SUP-MAG-001 sys/config.h 415 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float VBUS_ABSOLUTE_MIN = 12.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
628 info SUP-MAG-001 sys/config.h 417 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u32 VBUS_DEBOUNCE_COUNT = 5; 安全相关阈值/时间/比例建议用具名常量或配置宏。
629 info SUP-MAG-001 sys/config.h 419 业务代码中存在裸数字常量,需确认是否应命名化 constexpr float VBUS_RECOVERY_RATIO = 0.9f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
630 info SUP-MAG-001 sys/config.h 427 业务代码中存在裸数字常量,需确认是否应命名化 while (angle >= 360.0f) angle -= 360.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
631 info SUP-MAG-001 sys/config.h 428 业务代码中存在裸数字常量,需确认是否应命名化 while (angle < 0.0f) angle += 360.0f; 安全相关阈值/时间/比例建议用具名常量或配置宏。
632 info SUP-MAG-001 sys/flash.cpp 97 业务代码中存在裸数字常量,需确认是否应命名化 status_read[2] = readFloat(ADDR_VOLTAGE_LIMIT, &data[1]); 安全相关阈值/时间/比例建议用具名常量或配置宏。
633 info SUP-MAG-001 sys/flash.cpp 98 业务代码中存在裸数字常量,需确认是否应命名化 status_read[3] = readFloat(ADDR_VEL_LIMIT, &data[2]); 安全相关阈值/时间/比例建议用具名常量或配置宏。
634 info SUP-MAG-001 sys/flash.cpp 99 业务代码中存在裸数字常量,需确认是否应命名化 status_read[4] = readFloat(ADDR_ANGLE, &data[3]); 安全相关阈值/时间/比例建议用具名常量或配置宏。
635 info SUP-MAG-001 sys/flash.cpp 100 业务代码中存在裸数字常量,需确认是否应命名化 status_read[5] = readFloat(ADDR_TARGET_ANGLE, &data[4]); 安全相关阈值/时间/比例建议用具名常量或配置宏。
636 info SUP-MAG-001 sys/flash.cpp 101 业务代码中存在裸数字常量,需确认是否应命名化 status_read[6] = readFloat(ADDR_TARGET_VEL, &data[5]); 安全相关阈值/时间/比例建议用具名常量或配置宏。
637 info SUP-MAG-001 sys/flash.cpp 156 业务代码中存在裸数字常量,需确认是否应命名化 FOC.target_current = data[2]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
638 info SUP-MAG-001 sys/flash.cpp 157 业务代码中存在裸数字常量,需确认是否应命名化 KTH7823.angle_set(data[3]); 安全相关阈值/时间/比例建议用具名常量或配置宏。
639 info SUP-MAG-001 sys/flash.cpp 158 业务代码中存在裸数字常量,需确认是否应命名化 FOC.target_angle = data[4]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
640 info SUP-MAG-001 sys/flash.cpp 159 业务代码中存在裸数字常量,需确认是否应命名化 FOC.target_velocity = data[5]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
641 info SUP-MAG-001 sys/flash.cpp 185 业务代码中存在裸数字常量,需确认是否应命名化 *data = (u16)((data_word & DATA_U16_MASK) >> 16); 安全相关阈值/时间/比例建议用具名常量或配置宏。
642 info SUP-MAG-001 sys/flash.cpp 242 业务代码中存在裸数字常量,需确认是否应命名化 u32 data_word_to_write = ((u32)data << 16) | (u32)virtualAddr; 安全相关阈值/时间/比例建议用具名常量或配置宏。
643 info SUP-MAG-001 sys/flash.cpp 441 业务代码中存在裸数字常量,需确认是否应命名化 status = writeFloat(ADDR_VEL_LIMIT, data[2]); 安全相关阈值/时间/比例建议用具名常量或配置宏。
644 info SUP-MAG-001 sys/flash.cpp 447 业务代码中存在裸数字常量,需确认是否应命名化 status = writeFloat(ADDR_ANGLE, data[3]); 安全相关阈值/时间/比例建议用具名常量或配置宏。
645 info SUP-MAG-001 sys/flash.cpp 453 业务代码中存在裸数字常量,需确认是否应命名化 status = writeFloat(ADDR_TARGET_ANGLE, data[4]); 安全相关阈值/时间/比例建议用具名常量或配置宏。
646 info SUP-MAG-001 sys/flash.cpp 459 业务代码中存在裸数字常量,需确认是否应命名化 status = writeFloat(ADDR_TARGET_VEL, data[5]); 安全相关阈值/时间/比例建议用具名常量或配置宏。
647 info SUP-MAG-001 sys/flash.cpp 507 业务代码中存在裸数字常量,需确认是否应命名化 u32 crc_data[2]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
648 info SUP-MAG-001 sys/flash.cpp 511 业务代码中存在裸数字常量,需确认是否应命名化 return crc_block_data_calculate(crc_data, 2); 安全相关阈值/时间/比例建议用具名常量或配置宏。
649 info SUP-MAG-001 sys/flash.cpp 577 业务代码中存在裸数字常量,需确认是否应命名化 u32 write_data[4]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
650 info SUP-MAG-001 sys/flash.cpp 580 业务代码中存在裸数字常量,需确认是否应命名化 write_data[2] = counter; 安全相关阈值/时间/比例建议用具名常量或配置宏。
651 info SUP-MAG-001 sys/flash.cpp 581 业务代码中存在裸数字常量,需确认是否应命名化 write_data[3] = crc; 安全相关阈值/时间/比例建议用具名常量或配置宏。
652 info SUP-MAG-001 sys/flash.cpp 588 业务代码中存在裸数字常量,需确认是否应命名化 for (u8 i = 0; i < 4; i++) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
653 info SUP-MAG-001 sys/flash.cpp 820 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[2] = *flash_ptr; 安全相关阈值/时间/比例建议用具名常量或配置宏。
654 info SUP-MAG-001 sys/flash.cpp 822 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[3] = *flash_ptr; 安全相关阈值/时间/比例建议用具名常量或配置宏。
655 info SUP-MAG-001 sys/flash.cpp 824 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[4] = *flash_ptr; 安全相关阈值/时间/比例建议用具名常量或配置宏。
656 info SUP-MAG-001 sys/flash.cpp 826 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[5] = *flash_ptr; 安全相关阈值/时间/比例建议用具名常量或配置宏。
657 info SUP-MAG-001 sys/flash.cpp 832 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[0], temp_val[1], temp_val[2], temp_val[3], 安全相关阈值/时间/比例建议用具名常量或配置宏。
658 info SUP-MAG-001 sys/flash.cpp 833 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[4], temp_val[5]); 安全相关阈值/时间/比例建议用具名常量或配置宏。
659 info SUP-MAG-001 sys/flash.cpp 845 业务代码中存在裸数字常量,需确认是否应命名化 u32 current_addr = n_APP_LATEST_AVAL_ADDR + 4 * i; 安全相关阈值/时间/比例建议用具名常量或配置宏。
660 info SUP-MAG-001 sys/flash.cpp 864 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[2] = *flash_ptr; 安全相关阈值/时间/比例建议用具名常量或配置宏。
661 info SUP-MAG-001 sys/flash.cpp 866 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[3] = *flash_ptr; 安全相关阈值/时间/比例建议用具名常量或配置宏。
662 info SUP-MAG-001 sys/flash.cpp 868 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[4] = *flash_ptr; 安全相关阈值/时间/比例建议用具名常量或配置宏。
663 info SUP-MAG-001 sys/flash.cpp 870 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[5] = *flash_ptr; 安全相关阈值/时间/比例建议用具名常量或配置宏。
664 info SUP-MAG-001 sys/flash.cpp 874 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[0], temp_val[1], temp_val[2], temp_val[3], 安全相关阈值/时间/比例建议用具名常量或配置宏。
665 info SUP-MAG-001 sys/flash.cpp 875 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[4], temp_val[5]); 安全相关阈值/时间/比例建议用具名常量或配置宏。
666 info SUP-MAG-001 sys/flash.cpp 889 业务代码中存在裸数字常量,需确认是否应命名化 for (int i = 0; i < 8; i++) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
667 info SUP-MAG-001 sys/flash.cpp 912 业务代码中存在裸数字常量,需确认是否应命名化 uint32_t reset_handler = *(__IO uint32_t *)(BOOTLOADER_START_ADDR + 4); 安全相关阈值/时间/比例建议用具名常量或配置宏。
668 info SUP-MAG-001 sys/flash.cpp 952 业务代码中存在裸数字常量,需确认是否应命名化 delay_1ms(1000); 安全相关阈值/时间/比例建议用具名常量或配置宏。
669 info SUP-MAG-001 sys/flash.cpp 969 业务代码中存在裸数字常量,需确认是否应命名化 (uint32_t *)APPLATEST_START_ADDR, APP_MAX_SIZE / 4); 安全相关阈值/时间/比例建议用具名常量或配置宏。
670 info SUP-MAG-001 sys/flash.cpp 972 业务代码中存在裸数字常量,需确认是否应命名化 uint32_t src_data = src_ptr[offset / 4]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
671 info SUP-MAG-001 sys/flash.cpp 989 业务代码中存在裸数字常量,需确认是否应命名化 delay_1ms(1000); 安全相关阈值/时间/比例建议用具名常量或配置宏。
672 info SUP-MAG-001 sys/flash.cpp 997 业务代码中存在裸数字常量,需确认是否应命名化 offset += 4; 安全相关阈值/时间/比例建议用具名常量或配置宏。
673 info SUP-MAG-001 sys/flash.cpp 1000 业务代码中存在裸数字常量,需确认是否应命名化 if ((offset % 4096) == 0) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
674 info SUP-MAG-001 sys/flash.cpp 1013 业务代码中存在裸数字常量,需确认是否应命名化 APP_MAX_SIZE / 4); 安全相关阈值/时间/比例建议用具名常量或配置宏。
675 info SUP-MAG-001 sys/health.cpp 25 业务代码中存在裸数字常量,需确认是否应命名化 constexpr u16 PROTECT_TIME = 6000; 安全相关阈值/时间/比例建议用具名常量或配置宏。
676 info SUP-MAG-001 sys/health.cpp 40 业务代码中存在裸数字常量,需确认是否应命名化 if (drv_temp == 255) 安全相关阈值/时间/比例建议用具名常量或配置宏。
677 info SUP-MAG-001 sys/health.cpp 42 业务代码中存在裸数字常量,需确认是否应命名化 if (mcu_temp == 255) 安全相关阈值/时间/比例建议用具名常量或配置宏。
678 info SUP-MAG-001 sys/health.cpp 63 业务代码中存在裸数字常量,需确认是否应命名化 u32 currents[3] = {(u32)(sampler.get_current('') * 1000), 安全相关阈值/时间/比例建议用具名常量或配置宏。
679 info SUP-MAG-001 sys/health.cpp 64 业务代码中存在裸数字常量,需确认是否应命名化 (u32)(sampler.get_current('') * 1000), 安全相关阈值/时间/比例建议用具名常量或配置宏。
680 info SUP-MAG-001 sys/health.cpp 65 业务代码中存在裸数字常量,需确认是否应命名化 (u32)(sampler.get_current('') * 1000)}; 安全相关阈值/时间/比例建议用具名常量或配置宏。
681 info SUP-MAG-001 sys/health.cpp 68 业务代码中存在裸数字常量,需确认是否应命名化 current_max = max(currents[0], currents[1], currents[2]); 安全相关阈值/时间/比例建议用具名常量或配置宏。
682 info SUP-MAG-001 sys/health.cpp 69 业务代码中存在裸数字常量,需确认是否应命名化 if (current_max < 2000) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
683 info SUP-MAG-001 sys/health.cpp 72 业务代码中存在裸数字常量,需确认是否应命名化 } else if (current_max > 3800) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
684 info SUP-MAG-001 sys/health.cpp 75 业务代码中存在裸数字常量,需确认是否应命名化 } else if (current_max > 3400) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
685 info SUP-MAG-001 sys/health.cpp 78 业务代码中存在裸数字常量,需确认是否应命名化 } else if (current_max > 3000) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
686 info SUP-MAG-001 sys/health.cpp 81 业务代码中存在裸数字常量,需确认是否应命名化 } else if (current_max > 2000) { 安全相关阈值/时间/比例建议用具名常量或配置宏。
687 info SUP-MAG-001 sys/health.h 46 业务代码中存在裸数字常量,需确认是否应命名化 u32 thermal_capacity = 3600000; 安全相关阈值/时间/比例建议用具名常量或配置宏。
688 info SUP-MAG-001 sys/health.h 48 业务代码中存在裸数字常量,需确认是否应命名化 u16 gapTimeMs = 10; 安全相关阈值/时间/比例建议用具名常量或配置宏。
689 info SUP-MAG-001 sys/health.h 52 业务代码中存在裸数字常量,需确认是否应命名化 : thermalRate(FLOAT_TO_Q16_16(0.995f)), 安全相关阈值/时间/比例建议用具名常量或配置宏。
690 info SUP-MAG-001 sys/health.h 53 业务代码中存在裸数字常量,需确认是否应命名化 recoveryRate(FLOAT_TO_Q16_16(0.33f)) {} 安全相关阈值/时间/比例建议用具名常量或配置宏。
691 info SUP-MAG-001 sys/initial.cpp 142 业务代码中存在裸数字常量,需确认是否应命名化 u8 versionData[24] = {0}; 安全相关阈值/时间/比例建议用具名常量或配置宏。
692 info SUP-MAG-001 sys/initial.cpp 147 业务代码中存在裸数字常量,需确认是否应命名化 versionData[1] = (softwareVersion.major >> 8) & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
693 info SUP-MAG-001 sys/initial.cpp 148 业务代码中存在裸数字常量,需确认是否应命名化 versionData[2] = softwareVersion.minor & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
694 info SUP-MAG-001 sys/initial.cpp 149 业务代码中存在裸数字常量,需确认是否应命名化 versionData[3] = (softwareVersion.minor >> 8) & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
695 info SUP-MAG-001 sys/initial.cpp 150 业务代码中存在裸数字常量,需确认是否应命名化 versionData[4] = softwareVersion.patch & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
696 info SUP-MAG-001 sys/initial.cpp 151 业务代码中存在裸数字常量,需确认是否应命名化 versionData[5] = (softwareVersion.patch >> 8) & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
697 info SUP-MAG-001 sys/initial.cpp 152 业务代码中存在裸数字常量,需确认是否应命名化 versionData[6] = softwareVersion.build & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
698 info SUP-MAG-001 sys/initial.cpp 153 业务代码中存在裸数字常量,需确认是否应命名化 versionData[7] = (softwareVersion.build >> 8) & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
699 info SUP-MAG-001 sys/initial.cpp 156 业务代码中存在裸数字常量,需确认是否应命名化 versionData[8] = hardwareVersion.major & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
700 info SUP-MAG-001 sys/initial.cpp 157 业务代码中存在裸数字常量,需确认是否应命名化 versionData[9] = (hardwareVersion.major >> 8) & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
701 info SUP-MAG-001 sys/initial.cpp 158 业务代码中存在裸数字常量,需确认是否应命名化 versionData[10] = hardwareVersion.minor & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
702 info SUP-MAG-001 sys/initial.cpp 159 业务代码中存在裸数字常量,需确认是否应命名化 versionData[11] = (hardwareVersion.minor >> 8) & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
703 info SUP-MAG-001 sys/initial.cpp 160 业务代码中存在裸数字常量,需确认是否应命名化 versionData[12] = hardwareVersion.patch & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
704 info SUP-MAG-001 sys/initial.cpp 161 业务代码中存在裸数字常量,需确认是否应命名化 versionData[13] = (hardwareVersion.patch >> 8) & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
705 info SUP-MAG-001 sys/initial.cpp 162 业务代码中存在裸数字常量,需确认是否应命名化 versionData[14] = hardwareVersion.build & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
706 info SUP-MAG-001 sys/initial.cpp 163 业务代码中存在裸数字常量,需确认是否应命名化 versionData[15] = (hardwareVersion.build >> 8) & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
707 info SUP-MAG-001 sys/initial.cpp 166 业务代码中存在裸数字常量,需确认是否应命名化 versionData[16] = bootVersion.major & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
708 info SUP-MAG-001 sys/initial.cpp 167 业务代码中存在裸数字常量,需确认是否应命名化 versionData[17] = (bootVersion.major >> 8) & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
709 info SUP-MAG-001 sys/initial.cpp 168 业务代码中存在裸数字常量,需确认是否应命名化 versionData[18] = bootVersion.minor & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
710 info SUP-MAG-001 sys/initial.cpp 169 业务代码中存在裸数字常量,需确认是否应命名化 versionData[19] = (bootVersion.minor >> 8) & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
711 info SUP-MAG-001 sys/initial.cpp 170 业务代码中存在裸数字常量,需确认是否应命名化 versionData[20] = bootVersion.patch & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
712 info SUP-MAG-001 sys/initial.cpp 171 业务代码中存在裸数字常量,需确认是否应命名化 versionData[21] = (bootVersion.patch >> 8) & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
713 info SUP-MAG-001 sys/initial.cpp 172 业务代码中存在裸数字常量,需确认是否应命名化 versionData[22] = bootVersion.build & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
714 info SUP-MAG-001 sys/initial.cpp 173 业务代码中存在裸数字常量,需确认是否应命名化 versionData[23] = (bootVersion.build >> 8) & 0xFF; 安全相关阈值/时间/比例建议用具名常量或配置宏。
715 info SUP-MAG-001 sys/initial.cpp 178 业务代码中存在裸数字常量,需确认是否应命名化 CAN0_transmiter.build_can_id(CANFD_VERSION_ID), 24, versionData); 安全相关阈值/时间/比例建议用具名常量或配置宏。
716 info SUP-MAG-001 sys/initial.cpp 186 业务代码中存在裸数字常量,需确认是否应命名化 char versionStr[32]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
717 info SUP-MAG-001 sys/initial.cpp 219 业务代码中存在裸数字常量,需确认是否应命名化 status = fwdgt_config(time * 0.625, FWDGT_PSC_DIV64); 安全相关阈值/时间/比例建议用具名常量或配置宏。
718 info SUP-MAG-001 sys/initial.cpp 298 业务代码中存在裸数字常量,需确认是否应命名化 u32 temp_val[6]; 安全相关阈值/时间/比例建议用具名常量或配置宏。
719 info SUP-MAG-001 sys/initial.cpp 305 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[2] = *flash_ptr1; 安全相关阈值/时间/比例建议用具名常量或配置宏。
720 info SUP-MAG-001 sys/initial.cpp 307 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[3] = *flash_ptr1; 安全相关阈值/时间/比例建议用具名常量或配置宏。
721 info SUP-MAG-001 sys/initial.cpp 309 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[4] = *flash_ptr1; 安全相关阈值/时间/比例建议用具名常量或配置宏。
722 info SUP-MAG-001 sys/initial.cpp 311 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[5] = *flash_ptr1; 安全相关阈值/时间/比例建议用具名常量或配置宏。
723 info SUP-MAG-001 sys/initial.cpp 316 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[0], temp_val[1], temp_val[2], temp_val[3], temp_val[4], 安全相关阈值/时间/比例建议用具名常量或配置宏。
724 info SUP-MAG-001 sys/initial.cpp 317 业务代码中存在裸数字常量,需确认是否应命名化 temp_val[5]); 安全相关阈值/时间/比例建议用具名常量或配置宏。
725 info SUP-MAG-001 sys/initial.cpp 332 业务代码中存在裸数字常量,需确认是否应命名化 u8 transmit_data[2] = {0x0A, 0xAC}; 安全相关阈值/时间/比例建议用具名常量或配置宏。
726 info SUP-MAG-001 sys/initial.cpp 334 业务代码中存在裸数字常量,需确认是否应命名化 CAN0_transmiter.CANFD_AsyncSend(CANFD_OTA_ACK_ID, 2, transmit_data); 安全相关阈值/时间/比例建议用具名常量或配置宏。
727 info SUP-MAG-001 sys/systick.cpp 159 业务代码中存在裸数字常量,需确认是否应命名化 delay_1ms(1000); 安全相关阈值/时间/比例建议用具名常量或配置宏。
728 info SUP-MAG-001 sys/systick.cpp 227 业务代码中存在裸数字常量,需确认是否应命名化 SCB->AIRCR = (0x05FA0000U | (SCB->AIRCR & (0x700U)) | (1U << 2)); 安全相关阈值/时间/比例建议用具名常量或配置宏。
@@ -0,0 +1,509 @@
# ROBOT_V2 APP 补充静态筛查报告
## 说明
- 基于上一版业务代码静态测试包继续补充筛查。
- 重点覆盖容易漏掉的评审项:Doxygen 覆盖、全局状态、switch default、无限循环、关中断成对性、ISR、头文件保护、magic number、浮点比较。
- 只生成报告,不修改源码逻辑。
## 统计
- error: 0
- warning: 207
- info: 520
## 规则命中
- SUP-CMP-001: 14
- SUP-DOC-001: 12
- SUP-GLB-001: 189
- SUP-GLB-002: 47
- SUP-IRQ-001: 3
- SUP-ISR-001: 18
- SUP-LOOP-001: 4
- SUP-MAG-001: 439
- SUP-SW-001: 1
## Warning 明细
- [SUP-CMP-001] `Algorithm/FOC.cpp:53` 浮点变量比较需确认容差或离散状态含义
- `if (rt_velocity < -0.5f) last_table = cogging_table_rev;`
- 建议:建议确认是否应使用阈值/容差比较。
- [SUP-CMP-001] `Algorithm/FOC.cpp:54` 浮点变量比较需确认容差或离散状态含义
- `else if (rt_velocity > 0.5f) last_table = cogging_table;`
- 建议:建议确认是否应使用阈值/容差比较。
- [SUP-CMP-001] `Algorithm/FOC.cpp:404` 浮点变量比较需确认容差或离散状态含义
- `u8 sector_code = (X > 0.0f ? 1u : 0u)`
- 建议:建议确认是否应使用阈值/容差比较。
- [SUP-CMP-001] `Algorithm/FOC.cpp:405` 浮点变量比较需确认容差或离散状态含义
- `+ (Y > 0.0f ? 2u : 0u)`
- 建议:建议确认是否应使用阈值/容差比较。
- [SUP-CMP-001] `Algorithm/FOC.cpp:406` 浮点变量比较需确认容差或离散状态含义
- `+ (Z > 0.0f ? 4u : 0u);`
- 建议:建议确认是否应使用阈值/容差比较。
- [SUP-CMP-001] `Algorithm/FOC.cpp:534` 浮点变量比较需确认容差或离散状态含义
- `if (HOLD_PWM_DUTY > 0.95f) {`
- 建议:建议确认是否应使用阈值/容差比较。
- [SUP-CMP-001] `Algorithm/FOC.cpp:536` 浮点变量比较需确认容差或离散状态含义
- `} else if (HOLD_PWM_DUTY < 0.0f) {`
- 建议:建议确认是否应使用阈值/容差比较。
- [SUP-CMP-001] `Algorithm/FOC.cpp:569` 浮点变量比较需确认容差或离散状态含义
- `if (voltage < 36.0f and voltage > 8.0f) {`
- 建议:建议确认是否应使用阈值/容差比较。
- [SUP-CMP-001] `Algorithm/FOC.cpp:763` 浮点变量比较需确认容差或离散状态含义
- `if (target_velocity < -120.0f) {`
- 建议:建议确认是否应使用阈值/容差比较。
- [SUP-CMP-001] `Algorithm/FOC.cpp:765` 浮点变量比较需确认容差或离散状态含义
- `} else if (target_velocity < -30.0f) {`
- 建议:建议确认是否应使用阈值/容差比较。
- [SUP-CMP-001] `Algorithm/Filter.cpp:190` 浮点变量比较需确认容差或离散状态含义
- `if (error > 180.0f) error -= 360.0f;`
- 建议:建议确认是否应使用阈值/容差比较。
- [SUP-CMP-001] `Algorithm/Filter.cpp:191` 浮点变量比较需确认容差或离散状态含义
- `else if (error < -180.0f) error += 360.0f;`
- 建议:建议确认是否应使用阈值/容差比较。
- [SUP-CMP-001] `sys/config.h:427` 浮点变量比较需确认容差或离散状态含义
- `while (angle >= 360.0f) angle -= 360.0f;`
- 建议:建议确认是否应使用阈值/容差比较。
- [SUP-CMP-001] `sys/config.h:428` 浮点变量比较需确认容差或离散状态含义
- `while (angle < 0.0f) angle += 360.0f;`
- 建议:建议确认是否应使用阈值/容差比较。
- [SUP-GLB-001] `Algorithm/FOC.cpp:23` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `FOC_Controller FOC;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/ADC.cpp:20` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float ADC_SCALE = 3.3f / 4096.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/ADC.cpp:22` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float TEMP_FACTOR = 1000.0f / 4.3f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/ADC.cpp:24` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float VCC_FACTOR = 11.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/ADC.cpp:26` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float CURRENT_FACTOR =`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/ADC.cpp:30` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `sampler sampler;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/ADC.cpp:33` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `static volatile u8 adc_current_frame_ready = 0;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/Can.cpp:37` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 CANX = CAN0;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/Can.cpp:48` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `dma_parameter_struct dma_rx_parameter;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/Can.cpp:51` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `static volatile bool can_rx_dma_busy = false;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/Can.cpp:52` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `static can_receive_message_struct can_rx_dma_message;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/Can.cpp:72` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `static volatile u8 rx_queue_head = 0;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/Can.cpp:73` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `static volatile u8 rx_queue_tail = 0;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/Can.cpp:74` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `static volatile u8 rx_queue_count = 0;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/Can.cpp:77` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `static volatile u8 tx_queue_head = 0;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/Can.cpp:78` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `static volatile u8 tx_queue_tail = 0;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/Can.cpp:79` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `static volatile u8 tx_queue_count = 0;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/Can.cpp:84` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `CAN_transmiter CAN0_transmiter;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/Timer.cpp:18` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `volatile u32 total_us100_counter = 0;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/ang_sensor.cpp:38` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `volatile bool spi_dma_tx_complete = false;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/ang_sensor.cpp:39` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `volatile bool spi_dma_rx_complete = false;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `device/ang_sensor.cpp:41` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `angle_sensor KTH7823;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `main.cpp:39` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `TaskScheduler scheduler = {0};`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `main.cpp:40` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `u32 motor_runtime_50us = 0;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `main.cpp:41` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `u32 cnt_test = 0;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:32` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 SOFTWARE_VERSION_MAJOR = 26;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:34` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 SOFTWARE_VERSION_MINOR = 5;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:36` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 SOFTWARE_VERSION_PATCH = 19;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:38` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 SOFTWARE_VERSION_BUILD = 2;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:41` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 HARDWARE_VERSION_MAJOR = 25;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:43` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 HARDWARE_VERSION_MINOR = 12;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:45` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 HARDWARE_VERSION_PATCH = 01;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:47` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 HARDWARE_VERSION_BUILD = 0;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:50` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 BOOT_VERSION_MAJOR = 26;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:52` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 BOOT_VERSION_MINOR = 1;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:54` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 BOOT_VERSION_PATCH = 12;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:56` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 BOOT_VERSION_BUILD = 0;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:60` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 BOOTLOADER_SIZE = 0x6000;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:62` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 BOOTLOADER_START_ADDR = 0x08000000;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:64` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 APPLATEST_START_ADDR = 0x08012000;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:66` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 APPBACK_START_ADDR = 0x08006000;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:68` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 APP_MAX_SIZE = 0xC000;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:70` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 FMC_PAGE_SIZE = 0x400;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:72` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 SLEEP_CONFIG_START = 0x0801E400;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:74` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 SLEEP_CONFIG_END = 0x0801E800;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:76` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 FLASH_EMPTY = 0xFFFFFFFF;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:78` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 SLEEP_ENABLE = 0x11111111;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:80` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 SLEEP_DISABLE = 0x00000000;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:92` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 NODE_ID_PAGE_ADDR = 0x0801E800;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:94` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 NODE_ID_PRIMARY_ADDR = 0x0801E800;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:96` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 NODE_ID_BACKUP_ADDR = 0x0801E840;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:98` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 NODE_ID_MAGIC = 0x4E4F4445;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:100` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 DEFAULT_NODE_ID = 1;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:102` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 BROADCAST_NODE_ID = 0x1FFF;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:104` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 MAX_NODE_ID = 0x1FFE;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:113` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u8 NODE_ID_STRUCT_SIZE = 0x10;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:115` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u8 NODE_ID_MAGIC_OFFSET = 0x00;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:117` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u8 NODE_ID_VALUE_OFFSET = 0x04;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:119` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u8 NODE_ID_COUNTER_OFFSET = 0x08;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:121` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u8 NODE_ID_CRC_OFFSET = 0x0C;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:125` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 OTA_CONFIG_NUM = 6;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:127` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 n_APP_LATEST_AVAL_ADDR = 0x0801E000;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:129` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 n_APP_BACKUP_AVAL_ADDR = 0x0801E004;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:131` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 n_APP_LATEST_EN_ADDR = 0x0801E008;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:133` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 n_APP_BACKUP_EN_ADDR = 0x0801E00C;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:135` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 n_APP_LATEST_CHECK_ADDR = 0x0801E010;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:137` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 n_APP_BACKUP_CHECK_ADDR = 0x0801E014;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:139` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 OTA_NOT_AVAL = 0xFFFFFFFF;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:141` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u32 OTA_AVAL = 0x00000000;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:145` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u8 PP = 11;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:147` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float DIR = 1.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:149` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 REDUCTION_RATIO = 25;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:151` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float CURRENT_OFFSET = -3.31f / 2.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:153` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float HOLD_PWM_DUTY = 0.1f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:155` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 ANGLESENS_OFFSET = 0;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:157` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float ANGLESENS_CALIBRATION_ANGLE = 83.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:159` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float KE_FACTOR = 0.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:163` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float ANGLE_KALMAN_INITIAL_STATE = 0.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:165` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float ANGLE_KALMAN_INITIAL_COVARIANCE = 0.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:167` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float ANGLE_KALMAN_PROCESS_NOISE_Q = 0.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:169` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float ANGLE_KALMAN_MEASUREMENT_NOISE_R = 0.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:171` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float ANGLE_OBSERVER_ALPHA = 0.75f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:173` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float ANGLE_OBSERVER_BETA = 0.002f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:177` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float VELOCITY_KALMAN_INITIAL_STATE = 0.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:179` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float VELOCITY_KALMAN_INITIAL_COVARIANCE = 1e-3f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:181` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float VELOCITY_KALMAN_PROCESS_NOISE_Q =`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:184` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float VELOCITY_KALMAN_MEASUREMENT_NOISE_R =`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:189` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float CURRENT_KALMAN_INITIAL_STATE = 0.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:191` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float CURRENT_KALMAN_INITIAL_COVARIANCE = 100.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:193` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float CURRENT_KALMAN_PROCESS_NOISE_Q = 10.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:195` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float CURRENT_KALMAN_MEASUREMENT_NOISE_R = 5e-5f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:199` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float DEFAULT_current_loop_p = 0.1f / 100 * 12;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:201` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float current_loop_Ki = 0.55f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:203` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float current_loop_Kd = 3e-4f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:206` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float DEFAULT_vel_loop_p = 0.018f / 100 * 12;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:208` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float vel_loop_Ku = 3.600000e-03 * 0.7 * 100 / 12;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:210` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float vel_loop_Tu = 17.0f * 1e-3f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:212` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float vel_loop_Ki = 1.2 * vel_loop_Ku / vel_loop_Tu;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:214` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float vel_loop_Kd = 0.075 * vel_loop_Ku * vel_loop_Tu * 2;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:217` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float DEFAULT_vel_angloop_p = 0.4f / 100;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:219` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float vel_angloop_Ki = 5.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:221` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float vel_angloop_Kd = 5e-05f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:224` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float DEFAULT_angle_angloop_p =`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:227` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float ang_angloop_Ki = 0.00f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:229` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float ang_angloop_Kd = 8e-04f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:232` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float DEFAULT_angle_loop_p = 60.0f / 100 * 12;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:235` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float DEFAULT_angle_MIT_p = 100.0f / 100 * 12;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:237` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float angle_MIT_Ki = 0.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:239` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float angle_MIT_Kd = 8e-04f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:242` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float DEFAULT_vel_MIT_p = 5.0f / 100;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:244` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float vel_MIT_Ki = 15.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:246` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float vel_MIT_Kd = 1e-04f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:249` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float DEFAULT_current_MIT_p = 0.2f / 100 * 12;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:251` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float current_MIT_Ki = 0.1f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:253` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float current_MIT_Kd = 3e-4f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:260` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float ADC_MAX = 65536.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:262` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float PI = 3.14159265358979323846f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:264` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float INV_PI_3 = 3.0f / PI;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:266` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float PI_3 = PI / 3.0f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:268` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float _1_SQRT3 = 0.57735026919f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:270` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float _3PI_2 = 4.71238898038f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:272` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float SQRT3 = 1.7320508075688772f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:274` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float SQRT3DV2 = 0.8660254037844386f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:276` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float COS_PI_3 = 0.5f;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:278` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float ANGLE_FACTOR = 25.0f / 180.0f * PI;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:280` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float DEG2RAD = 1.0f / 180.0f * PI;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:282` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr float RAD2DEG = 180.0f / PI;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:284` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u8 DEFAULT_VALUE = 0;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:286` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u8 CONFIG_SAVED_NUM = 6;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:290` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 LUT_SIZE = 1024;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:301` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 DEV_CAN0_ID = 0x0000;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:303` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 DEV_CAN0_MASK = 0x0000;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:305` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 DEV_CAN_LOOPBACK_ID = 0x0000;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:308` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 CANFD_STATUS_ID = 0x0100;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:310` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 CANFD_CONFIG_ID = 0x0101;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:312` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 CANFD_VERSION_ID = 0x00FF;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:315` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 CANFD_CMD_ID = 0x0200;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:317` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 CANFD_RESET_ID = 0x0301;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:320` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 CANFD_SET_NODE_ID = 0x0400;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:322` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 CANFD_GET_NODE_ID = 0x0401;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:326` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 CANFD_BOOT_ID = 0x0000;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:328` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 CANFD_OTA_REQ_ID = 0x0100;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:330` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 CANFD_OTA_DATA_ID = 0x0101;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:332` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 CANFD_OTA_ACK_ID = 0x0102;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:334` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u16 CANFD_OTA_WAIT_ID = 0x0103;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- [SUP-GLB-001] `sys/config.h:338` 文件作用域可变全局对象,需确认封装、并发访问和初始化顺序
- `constexpr u8 ADC_FILTER_SIZE = 6;`
- 建议:建议确认初始化顺序、访问边界;必要时封装或添加偏离说明。
- ... 其余见 supplement_findings.csv
## Info 说明
- `SUP-MAG-001` 裸数字常量数量通常较多,正式处理时应优先筛选安全阈值、时间常数、比例系数,不建议机械全改。
- `SUP-DOC-001` 用于发现可能漏补 Doxygen 的接口;多行声明、构造函数可能需要人工复核。