新增:串口通讯避障功能

​ 1、Launcher中的串口只使用串口0(调试串口)、串口2(主动RS485端口);串口1与串口3不使用,且不初始化。将串口通讯缓冲区修改为1100Byte。

​  目的:CH564由于将Launcher代码搬运到RAM中运行,因此可使用的变量大小只有32Kbyte。不使用的串口将不初始化,同时使用的通讯缓冲区将节约出来,否则RAM空间不够使用。

​ 2、串口2 - 增加RS485使能,同时通讯增加避障功能。
This commit is contained in:
caocong
2026-01-19 16:39:22 +08:00
parent 094fd76a72
commit 5e9338cee4
37 changed files with 37088 additions and 289 deletions

View File

@@ -14,6 +14,8 @@
#include <stdio.h>
#include <string.h>
const char Prject_File_Name[] __attribute__((section(".project_info"))) = Project_Version;
uint32_t test_tick = 0;
/*********************************************************************
@@ -26,18 +28,18 @@ uint32_t test_tick = 0;
int main(void)
{
uint8_t sys_reset = 0;
uint32_t wdt_reste_tick = 0;
unsigned char Buffer;
unsigned long DATA_ROM_ADDR;
/* - <20>ϵ<EFBFBD>ǰ<EFBFBD><C7B0>Ҫ<EFBFBD>رտ<D8B1><D5BF>Ź<EFBFBD>
* - ԭ<><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD>һֱ<D2BB><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
* */
WDT_Reinit();
SystemCoreClockUpdate(); //ϵͳ<CFB5><CDB3>ʼ<EFBFBD><CABC>
Systick_Init();
UARTx_Init(UART_0,512000);
UARTx_Init(UART_1,512000);
UARTx_Init(UART_2,512000);
UARTx_Init(UART_3,512000);
SYS_LED_Init();
@@ -48,36 +50,37 @@ int main(void)
Get_Flash_Size(&Buffer);
if(Buffer){
DATA_ROM_ADDR = 0x70000;
DBG_SYS_Printf("CH564 ROMA :0x0 - 0x6FFFF");
DBG_SYS_Printf("CH564 EEPROM :0x70000 - 0x77FFF");
}else {
DATA_ROM_ADDR = 0x30000;
DBG_SYS_Printf("CH564 ROMA :0x0 - 0x2FFFF");
DBG_SYS_Printf("CH564 EEPROM :0x30000 - 0x37FFF");
}
DBG_SYS_Printf("RTC_Init \r\n");
RTC_Init();
DBG_SYS_Printf("EEPROM_Init - DATA_ROM_ADDR:%x\r\n",DATA_ROM_ADDR);
EEPROM_Init();
DBG_SYS_Printf("G PARA \r\n");
memset((uint8_t *)&g_app_feature,0,sizeof(G_SYS_FEATURE_T));
memset((uint8_t *)&g_mcu_app_feature,0,sizeof(G_SYS_FEATURE_T));
memset((uint8_t *)&g_update_recode,0,sizeof(UPDATE_RECORD_T));
DBG_SYS_Printf("G_SYS_FEATURE_T : %d \r\n",sizeof(G_SYS_FEATURE_T));
DBG_SYS_Printf("Project Name:%s",Prject_File_Name);
sys_reset = RCC_GET_GLOB_RST_KEEP();
sys_reset = RCC_GET_GLOB_RST_KEEP(); //<2F><>λ<EFBFBD><CEBB><EFBFBD>ּĴ<D6BC><C4B4><EFBFBD>
if(sys_reset == 0x00)
{
DBG_SYS_Printf("<EFBFBD>ϵ縴λ \r\n");
g_Boot_Time = 10000;
}else if(sys_reset == 0x02){
DBG_SYS_Printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ \r\n");
g_Boot_Time = 30000;
}else if(sys_reset == 0x03){
DBG_SYS_Printf("MCU Flash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ \r\n");
g_Boot_Time = 3000;
DBG_SYS_Printf("<EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD><EFBFBD><EFBFBD>λ \r\n");
}else {
DBG_SYS_Printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ \r\n");
DBG_SYS_Printf("<EFBFBD><EFBFBD><EFBFBD>λ \r\n");
g_Boot_Time = 30000;
}
RCC_SET_GLOB_RST_KEEP(0x01);
@@ -86,48 +89,66 @@ int main(void)
//<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
if(g_jump_flag == 2) {
MCU_APP_Write(); //MCU<43><55>Ҫд<D2AA><D0B4>
g_jump_flag = 0;
// printf("Jump APP 1\r\n");
//
// Delay_Ms(1000);
//
// __disable_irq();
// Jump_APP(g_mcu_app_feature.app_start_addr);
DBG_SYS_Printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU Flash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ \r\n");
NVIC_EnableIRQ( Software_IRQn );
Delay_Ms( 20 );
NVIC_SetPendingIRQ( Software_IRQn );
//WDT_Init();
//RCC_SET_GLOB_RST_KEEP(0x03);
Delay_Ms(1000);
// - <20><><EFBFBD><EFBFBD>ȫ<EFBFBD>ָ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Code Flash
RCC_GlobleRstCFG(RB_GLOB_FORCE_RST, ENABLE);
while(1);
}
WDT_Init();
while (1)
{
WDT_Feed();
SYS_LED_Task();
Uart0_Task();
UART1_RECEIVE();
UART2_RECEIVE();
UART3_RECEIVE();
RTC_TASK();
Uart2_Task();
//<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
if(SysTick_1ms - g_Boot_Tick >= 5000)
if(g_jump_flag == 0x00)
{
g_Boot_Tick = SysTick_1ms;
if(g_jump_flag == 0x00) //APP У<><D0A3><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>תAPP
if(SysTick_1ms - g_Boot_Tick >= 5000)
{
printf("Jump APP 2\r\n");
g_Boot_Tick = SysTick_1ms;
DBG_SYS_Printf("Jump APP 2\r\n");
Delay_Ms(1000);
WDT_Reinit();
NVIC_EnableIRQ( Software_IRQn );
Delay_Ms( 20 );
HSI_ON();
CLKSEL_HSI();
SYSCLK_SOURCE_SELECT(SYSCLK_SOURCE_HSI_HSE);
RCC_UNLOCK_SAFE_ACCESS();
BITS_CFG( R32_EXTEN_CTLR0 , RB_FLASH_PRE_EN , DISABLE );
RCC_LOCK_SAFE_ACCESS();
NVIC_SetPendingIRQ( Software_IRQn );
}
}else {
if(SysTick_1ms - g_Boot_Tick >= g_Boot_Time)
{
DBG_SYS_Printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ ....");
RCC_SET_GLOB_RST_KEEP(0x02);
Delay_Ms(1000);
RCC_GlobleRstCFG(RB_GLOB_FORCE_RST, ENABLE);
while(1);
}
}
}
}
@@ -145,6 +166,7 @@ void NMI_Handler(void)
{
while (1)
{
}
}
@@ -172,12 +194,11 @@ void HardFault_Handler(void)
while(1);
}
/* - <20><>תAPP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SW_Handler<65>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>ת
* - <20><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>SW_Handler<65>жϺ<D0B6><CFBA><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>תAPP */
void SW_Handler(void) {
printf("SW_Handler Jump App\r\n");
Delay_Ms( 100 );
__disable_irq();
__asm volatile("li a6, 0x07000");
__asm volatile("li a6, 0x01000");
__asm volatile("jr a6");
while(1);