新增其他协议切换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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user