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代码,简化启动流程
70 lines
1.4 KiB
C
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) {
|
|
}
|
|
}
|