Files
chrg/apps/boot/application/main.c
T
wrh 684ad2e20e feat: 新增电源/负载切换功能,优化通道切换逻辑
1. 新增SINK_WORK_SWITCH和SOURCE_WORK_SWITCH状态,实现切换流程
2. 实现chrg_sink_work_switch和chrg_source_work_switch切换处理函数
3. 修改Keil工程ROM起始地址为0x8000000
4. 开启north线程调试输出,调整初始通道使能状态
5. 简化串口包编码调试打印,优化source初始化寄存器配置
6. 重构modbus通道切换逻辑,支持活跃状态下的角色切换
7. 清理部分冗余调试代码和注释
8. 重构bootloader代码,简化启动流程
2026-07-22 10:05:47 +08:00

70 lines
1.4 KiB
C

#include "main.h"
#define APP_ADDRESS 0x08040000UL
#define APP_FLASH_END 0x08100000UL
#define SRAM_START 0x20000000UL
#define SRAM_END 0x20020000UL
/* Kept for legacy source files that remain in the Keil project. */
UART_HandleTypeDef huart1;
UART_HandleTypeDef huart2;
DMA_HandleTypeDef hdma_usart1_rx;
DMA_HandleTypeDef hdma_usart2_rx;
typedef void (*app_entry_t)(void);
void MX_DMA_DeInit(void)
{
}
void MX_USART_DeInit(void)
{
}
static void boot_jump_to_app(void)
{
uint32_t app_stack = *(volatile uint32_t *)APP_ADDRESS;
uint32_t app_reset = *(volatile uint32_t *)(APP_ADDRESS + 4U);
app_entry_t app_entry;
/* Do not branch through an erased or invalid application vector table. */
if ((app_stack < SRAM_START) || (app_stack >= SRAM_END) ||
(app_reset < APP_ADDRESS) || (app_reset >= APP_FLASH_END)) {
while (1) {
}
}
__disable_irq();
SysTick->CTRL = 0;
SysTick->LOAD = 0;
SysTick->VAL = 0;
for (uint32_t i = 0; i < 8U; i++) {
NVIC->ICER[i] = 0xFFFFFFFFUL;
NVIC->ICPR[i] = 0xFFFFFFFFUL;
}
HAL_DeInit();
SCB->VTOR = APP_ADDRESS;
__set_MSP(app_stack);
__set_CONTROL(0);
__DSB();
__ISB();
app_entry = (app_entry_t)app_reset;
app_entry();
while (1) {
}
}
int main(void)
{
HAL_Init();
boot_jump_to_app();
while (1) {
}
}