refactor(FOC): 重构齿槽转矩校准状态机为独立函数

- 将原本在 calibrate_cogging_tick 中的大函数拆分为多个职责单一的函数
- 新增 start_cogging_calibration、cogging_settling_tick、cogging_sampling_tick、
  cogging_stopping_tick、cogging_done_tick 等状态处理函数
- 添加 process_cogging_run_data、start_next_cogging_run、build_cogging_tables、
  print_cogging_table、print_cogging_c_array 等辅助函数
- 移动全局 FOC 控制器单例注释到更合适位置
- 添加齿槽转矩校准参数常量定义和详细注释
- 添加防御性编程处理默认状态分支,避免状态机卡死
- 提高代码可读性和维护性

feat(tasks): 添加任务头文件到项目配置

- 在 Robot_V2.cproject.yml 中添加 tasks.h 和 tasks.cpp 文件引用

docs(ADC): 添加ADC转换常量说明注释

- 在 ADC.cpp 中添加关于ADC换算常量的详细注释
- 说明全局采样器单例的初始化和使用方式
This commit is contained in:
cbb
2026-05-24 01:21:41 +08:00
parent 4c4e47e9e3
commit e646544f7f
23 changed files with 1705 additions and 647 deletions
+7
View File
@@ -50,6 +50,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define SLEEP_DEBUG_PRINT(fmt, ...) ((void)0)
#endif
// SysTick 模块内部状态,仅在本文件访问:
// - delay / systick_ms 由 SysTick 中断维护,用 volatile 保证主循环可见性;
// - DWT 统计变量用于 CPU 占用率采样;
// - static 限制文件作用域,外部只能通过 get_systick_ms()/get_cpu_usage() 读取。
volatile static uint32_t delay;
volatile static uint32_t systick_ms = 0; // 系统运行时间(毫秒)
@@ -253,6 +257,7 @@ void app_prepare_deep_sleep(bool save_data) {
fwdgt_config(0xFFF, FWDGT_PSC_DIV256); // 设置最大超时时间
fwdgt_write_disable();
uint32_t primask = __get_PRIMASK();
__disable_irq();
// 遍历最后一个数字,后一个地址写 +1
for (u32 address = SLEEP_CONFIG_END - SIZE_U32;
@@ -271,6 +276,7 @@ void app_prepare_deep_sleep(bool save_data) {
if (fmc_status != FMC_READY) { // 擦除失败报错
fmc_lock();
flashEEP.EEPROMStatus = FLASH_EEPROM_ERASE_ERROR;
__set_PRIMASK(primask); // 失败返回前恢复进入前的中断状态
return;
}
address = SLEEP_CONFIG_START - SIZE_U32; // 重新开始写入
@@ -289,6 +295,7 @@ void app_prepare_deep_sleep(bool save_data) {
flashEEP.EEPROMStatus = FLASH_EEPROM_WRITE_ERROR;
SLEEP_DEBUG_PRINT("app wrote %08x at %08x ERROR\r\n", SLEEP_ENABLE,
address);
__set_PRIMASK(primask); // 失败返回前恢复进入前的中断状态
return;
}
break;