- 在CAN通信类中添加了CAN_Sleep()和CAN_Wakeup()方法,支持设备进入低功耗模式 - 优化CAN通信检查逻辑,通过解析接收数据的首字节和末字节实现多种控制命令 - 支持远程复位电机、保存角度、清零角度、进入睡眠等操作 - 解决CAN发送邮箱满时可能导致的通信阻塞问题,增加重初始化机制 - 调整mailbox不可用计数逻辑,防止持续打印错误信息 refactor(flash): 移除软件CRC计算模块,改用硬件CRC外设 - 删除自定义CRC.cpp和CRC.h文件及其相关类实现 - 使用GD32硬件CRC模块替代软件算法,提高效率和可靠性 - 更新FlashEEPROM类中的CRC校验方式,调用crc_block_data_calculate进行计算 - 修正Flash地址遍历范围以适配新CRC逻辑及页面管理策略 - 修改save_angle接口签名,不再手动传入角度值,改为内部读取FOC实时角度 feat(timer): 新增RTC闹钟中断处理函数声明 - 在Timer.h中声明rtc_set_wakeup_interval和RTC_ALARM_IRQHandler - 为后续实现基于RTC的定时唤醒功能做准备 chore(config): 同步csolution工具版本更新并调整组件配置 - 更新RTE_Components.h生成工具版本至2.12.0 - 启用BKP、CRC、RTC等标准外设组件宏定义 - 从项目配置文件中移除旧CRC源文件引用 - 添加SystemCoreClockUpdate调用确保系统时钟同步 refactor(main): 主循环任务调度重构并增强初始化流程 - 将主循环中的任务处理提取为独立do_task函数,提升代码可读性 - 提前执行电机初始化,并根据看门狗复位标志决定是否立即进入深度睡眠 - 调整EEPROM初始化顺序,保证依赖关系正确 - 添加sys/initial.h头文件包含以支持新增系统初始化逻辑
50 lines
1019 B
C++
50 lines
1019 B
C++
#ifndef _INITIAL_H
|
|
#define _INITIAL_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "gd32c10x_eval.h"
|
|
#include "stdint.h"
|
|
#include <stdio.h>
|
|
|
|
|
|
constexpr u16 REDUCTION_RATIO = 25;
|
|
constexpr float DEG2RAD = 1.0f / 360.0f * 6.28318530718f;
|
|
constexpr float RAD2DEG = 360.0f / 6.28318530718f;
|
|
|
|
void rcu_config(void);
|
|
static volatile uint32_t timer_delay_count = 0; // volatile 很重要!
|
|
int fputc(int ch, FILE *f); // 声明fputc函数以重载标准库实现
|
|
|
|
u8 USART0_init(void);
|
|
u8 watchdog_init(u32 time);
|
|
u16 get_reset_cause(void);
|
|
void unused_pin_init();
|
|
// 任务标志定义
|
|
typedef enum {
|
|
TASK_MOTOR_CONTROL = 0,
|
|
TASK_CURRENT_UPDATE,
|
|
TASK_VELOCITY_UPDATE,
|
|
TASK_ANGLE_UPDATE,
|
|
TASK_MCU_TEMP_UPDATE,
|
|
TASK_DRV_TEMP_UPDATE,
|
|
TASK_VBUS_UPDATE,
|
|
TASK_THERMAL_CONTROL,
|
|
TASK_CAN_TRANSMIT,
|
|
TASK_MAGNETIC_CHECK,
|
|
TASK_COUNT
|
|
} SystemTask;
|
|
|
|
// 任务管理结构
|
|
typedef struct {
|
|
volatile u32 taskFlags; // 任务标志位(每个位代表一个任务)
|
|
} TaskScheduler;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|