新增其他协议切换PD时先进行一次完整的断开线处理,包含D+D-,CC线,GND,VBUS,然后再发送复位,待复位后再重新设置

1.  apps/chrg/applications/thread/chrg_north.h:调整北向调试宏默认配置
2.  apps/chrg/applications/utils/chrg_source.h:新增Source全复位与初始化等待状态枚举
3.  apps/chrg/applications/bsp/chrg_gpio.h:补充北向继电器引脚注释,明确功能对应关系
4.  apps/chrg/applications/thread/chrg_comm.c:优化Source复位触发条件,仅非PD转PD执行全复位
5.  apps/chrg/applications/utils/chrg_eload.c/h:新增南向板版本读取与解析接口,新增版本就绪校验逻辑
6.  apps/boot/application/main.c:完善boot跳转APP逻辑,注释原循环运行代码
7.  apps/chrg/applications/thread/chrg_roll_nor.c:新增INIT_WAIT状态处理,调整复位后流程与sub推进逻辑
8.  apps/chrg/applications/thread/chrg_roll_sou.c:新增南向版本就绪标记,上电先读取版本再启动常规采集
9.  apps/chrg/applications/utils/chrg_source.c:实现全复位流程与初始化等待状态处理函数
This commit is contained in:
wrh
2026-08-25 16:41:34 +08:00
parent 792e201d1e
commit c7db1d8176
10 changed files with 300 additions and 21 deletions
+53 -2
View File
@@ -166,6 +166,56 @@ void MX_USART_DeInit (void)
HAL_UART_DeInit(&huart2);
}
static void boot_JumpToAPP (void)
{
static uint32_t _stack_addr; /* APP 栈顶地址 */
static uint32_t _reset_handler; /* APP reset handler 地址 */
typedef void(*APP_MAIN_FUNC)(void);
APP_MAIN_FUNC APP_Main;
_stack_addr = *(volatile uint32_t *)BASE_APPLICATION;
_reset_handler = *(volatile uint32_t *)(BASE_APPLICATION + 4);
/* 设置所有时钟到默认状态,使用HSI时钟 */
HAL_RCC_DeInit();
/* 关闭全局中断 */
__disable_irq();
/* 关闭滴答定时器,复位到默认值 */
SysTick->CTRL = 0;
SysTick->LOAD = 0;
SysTick->VAL = 0;
/* 关闭所有中断,清除所有中断挂起标志 */
for (uint8_t i = 0; i < 8; i++) {
NVIC->ICER[i] = 0xFFFFFFFF;
NVIC->ICPR[i] = 0xFFFFFFFF;
}
/* 外设 deinit */
HAL_DeInit();
MX_USART_DeInit();
MX_DMA_DeInit();
/* 设置主堆栈指针 */
__set_MSP(_stack_addr);
/* 在 RTOS 工程,这条语句很重要,设置为特权级模式,使用 MSP 指针 */
__set_CONTROL(0);
/* 设置中断向量表 */
SCB->VTOR = BASE_APPLICATION;
/* 跳转到 APP ,首地址是 MSP ,地址 +4 是复位中断服务程序地址 */
APP_Main = (APP_MAIN_FUNC)_reset_handler;
APP_Main();
/* 复位或跳转成功的话,不会执行到这里 */
while (1) {
}
}
int main (void)
{
@@ -190,9 +240,10 @@ int main (void)
VERSION_MAIN, VERSION_SUB, VERSION_FIX, BUILD_TIMESTAMP);
#endif
APP_Init();
boot_JumpToAPP();
while (1) {
APP_Running();
//APP_Running();
}
return -1;