feat(ota): 修复备份APP区域恢复功能和OTA流程优化、启用BRS、减小延时
- 添加sendBackup方法用于在备份APP激活时发送确认消息 - 优化OTA跳转逻辑,在jumpToApplication中清除复位标志 - 修复move_app_data函数中数据源地址错误,从备份区域正确读取数据 - 在OTA流程中正确设置APP状态标志,确保应用验证状态管理 refactor(can): 清理调试代码和函数签名优化 - 移除调试用的printf语句和未使用的cstdio头文件 - 统一函数参数类型为u8和u32,提高代码一致性 - 优化CAN通信检查逻辑,移除冗余的调试输出 perf(ota): 优化OTA处理中的延时函数 - 将delay_1ms(1)改为delay_1us(100),提高延时精度 - 添加微秒级延时函数delay_1us实现 - 增加OTA超时时间从10秒到100秒 fix(ota): 修复OTA状态管理和错误处理 - 在各种错误情况下正确设置ota_state为OTA_STATE_IDLE - 在eraseApplicationArea中正确初始化APP状态标志 - 添加CRC校验失败时的调试输出选项 - 修复数据包大小验证逻辑
This commit is contained in:
@@ -56,6 +56,24 @@ void systick_config(void) {
|
||||
NVIC_SetPriority(SysTick_IRQn, 0x00U);
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief delay a time in microseconds
|
||||
\param[in] count: count in microseconds
|
||||
\param[out] none
|
||||
\retval none
|
||||
*/
|
||||
void delay_1us(uint32_t count) {
|
||||
/* 计算循环次数以实现微秒延时
|
||||
假设CPU每执行一条nop指令需要1个时钟周期
|
||||
根据系统时钟频率计算需要的循环次数 */
|
||||
uint32_t cycles = (SystemCoreClock / 4000000UL) * count; // 每微秒的时钟周期数
|
||||
|
||||
/* 循环减去执行指令所需的周期数 */
|
||||
for(uint32_t i = 0; i < cycles; i++) {
|
||||
__NOP(); // 空操作指令
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief delay a time in milliseconds
|
||||
\param[in] count: count in milliseconds
|
||||
|
||||
Reference in New Issue
Block a user