feat(can): CAN休眠唤醒移动到BOOT以进行以支持40k硬件看门狗
- 更新深度睡眠实现,在跳转到bootloader前记录睡眠状态到Flash - 添加gd32c10x_fmc.h头文件以支持Flash内存控制功能 - 将prepare_deep_sleep重命名为app_prepare_deep_sleep以提高命名清晰度 - 在CAN通信检测中添加应用层休眠准备功能 - 在接收OTA启动ID时解锁FMC、设置APP为非激活状态并锁定FMC - 移除main.cpp中的看门狗复位休眠逻辑 - 在config.h中添加睡眠配置相关的常量定义 - 改进OTA_SET函数的Flash写入逻辑,优化数据更新流程 - 在OTA初始化和应用移动过程中添加FMC解锁锁定操作
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#include "gd32c10x.h"
|
||||
#include "gd32c10x_can.h"
|
||||
#include "gd32c10x_dma.h"
|
||||
#include "gd32c10x_fmc.h"
|
||||
#include "gd32c10x_gpio.h"
|
||||
#include "motor.h"
|
||||
#include "systick.h"
|
||||
@@ -611,10 +612,13 @@ void CAN_transmiter::communication_check() {
|
||||
Vel_kalman.init(0); // 角度滤波
|
||||
}
|
||||
if (eigth_byte & 0x80 >> 7) {
|
||||
prepare_deep_sleep(true);
|
||||
app_prepare_deep_sleep(true);
|
||||
// CAN_Sleep();
|
||||
}
|
||||
} else if (receive_message.rx_efid == CANFD_BOOT_ID) {
|
||||
fmc_unlock();
|
||||
OTA_SET(n_APP_LATEST_EN_ADDR, OTA_NOT_AVAL); // 设置APP为不激活
|
||||
fmc_lock();
|
||||
jumpToBOOT();
|
||||
} else if (receive_message.rx_efid == 0x00000102) {
|
||||
volatile u32 *flash_ptr = (volatile u32 *)n_APP_LATEST_EN_ADDR;
|
||||
|
||||
Reference in New Issue
Block a user