新增:串口通讯避障功能
1、Launcher中的串口只使用串口0(调试串口)、串口2(主动RS485端口);串口1与串口3不使用,且不初始化。将串口通讯缓冲区修改为1100Byte。 目的:CH564由于将Launcher代码搬运到RAM中运行,因此可使用的变量大小只有32Kbyte。不使用的串口将不初始化,同时使用的通讯缓冲区将节约出来,否则RAM空间不够使用。 2、串口2 - 增加RS485使能,同时通讯增加避障功能。
This commit is contained in:
@@ -24,14 +24,17 @@
|
||||
#include "flash_mem_addr.h"
|
||||
#include "rtc.h"
|
||||
#include "mcu_flash.h"
|
||||
#include "watchdog.h"
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE>
|
||||
<20>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1>붨<EFBFBD>壬<EFBFBD><E5A3AC><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>̶<EFBFBD>Ӧ<EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD>
|
||||
Boot<6F>л<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ȡEEPROM<4F>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2><EFBFBD>жϵ<D0B6>ǰ<EFBFBD><C7B0>ʲô<CAB2><C3B4><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD>EEPROM <20><>û<EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ô<EFBFBD><C3B4>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Boot<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8>ַΪ0x00<30><30><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>Ϊ0x00
|
||||
*/
|
||||
#define Project_Version "--BLV_C1P_Launcher V01--" //<2F>ù<EFBFBD><C3B9>̰汾<CCB0><E6B1BE><EFBFBD>ڱ<EFBFBD><DAB1>뵽HEX/BIN <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
|
||||
#define Project_Area 0x01 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪBoot<6F><74><EFBFBD><EFBFBD> 0x01:Boot<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x02:APP<50><50><EFBFBD><EFBFBD>
|
||||
#define Peoject_Name "BLV_C1P_Bootload" //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define Peoject_Name "BLV_C1P_Launcher" //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define Project_FW_Version 0x01 //<2F><><EFBFBD>̶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE>
|
||||
#define Project_Type 0x00 //<2F><><EFBFBD>̶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> BootĬ<74><C4AC><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
105
User/main.c
105
User/main.c
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user