添加了完整的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文档生成。
10 KiB
10 KiB
| 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 |