From 77da670f5ca722bbbf46ba52a69ab41471d6fb6f Mon Sep 17 00:00:00 2001 From: xiao Date: Mon, 20 Apr 2026 08:11:49 +0800 Subject: [PATCH] fix: align rd target memory and startup settings --- App/flash_param.h | 9 ++++----- Keil工程配置说明.txt | 6 +++--- MDK-ARM/TCP2UART.uvprojx | 22 +++++++++++----------- MDK-ARM/startup_stm32f103xe.s | 2 +- TCP2UART.ioc | 16 ++++++++-------- 项目技术实现.md | 4 ++-- 6 files changed, 29 insertions(+), 30 deletions(-) diff --git a/App/flash_param.h b/App/flash_param.h index 8ab2a34..40ab31e 100644 --- a/App/flash_param.h +++ b/App/flash_param.h @@ -16,13 +16,12 @@ extern "C" { #endif -/* Flash configuration for STM32F103R8 (64KB Flash) */ +/* Flash configuration for the current STM32F103RDT6 target (384KB Flash). */ #define FLASH_PARAM_PAGE_SIZE 1024 /* 1KB per page for STM32F103 */ -#define FLASH_PARAM_START_ADDR 0x0800FC00 /* Last 1KB of 64KB Flash */ -#define FLASH_PARAM_END_ADDR 0x08010000 /* End of Flash */ +#define FLASH_PARAM_START_ADDR 0x0805FC00 /* Last 1KB page of 384KB Flash */ +#define FLASH_PARAM_END_ADDR 0x08060000 /* End of 384KB Flash */ -/* For STM32F103RC (256KB), use: 0x0803FC00 */ -/* For STM32F103RB (128KB), use: 0x0801FC00 */ +/* Historical reference: STM32F103RCT6 would use 0x0803FC00 as its last page. */ /** * @brief Initialize Flash parameter storage diff --git a/Keil工程配置说明.txt b/Keil工程配置说明.txt index 5520e52..eaf732e 100644 --- a/Keil工程配置说明.txt +++ b/Keil工程配置说明.txt @@ -113,8 +113,8 @@ USE_HAL_DRIVER,STM32F103xE ======================================== 确认 ROM 和 RAM 配置正确: -- IROM1: 0x08000000, Size: 0x40000 (256KB) -- IRAM1: 0x20000000, Size: 0xC000 (48KB) +- IROM1: 0x08000000, Size: 0x60000 (384KB) +- IRAM1: 0x20000000, Size: 0x10000 (64KB) ======================================== 六、编译验证 @@ -138,7 +138,7 @@ Debug 选项卡: Utilities 选项卡: - 选择正确的 Flash 算法 -- STM32F10x High-density Flash (256KB) +- STM32F10x High-density Flash (384KB / 0x60000) ======================================== 快速添加方法(可选) diff --git a/MDK-ARM/TCP2UART.uvprojx b/MDK-ARM/TCP2UART.uvprojx index 29027ed..368cfd6 100644 --- a/MDK-ARM/TCP2UART.uvprojx +++ b/MDK-ARM/TCP2UART.uvprojx @@ -14,16 +14,16 @@ 0 - STM32F103RC + STM32F103RD STMicroelectronics Keil.STM32F1xx_DFP.2.4.1 https://www.keil.com/pack/ - IRAM(0x20000000,0x0000C000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE + IRAM(0x20000000,0x00010000) IROM(0x08000000,0x00060000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_HD -FS08000000 -FL040000 -FP0($$Device:STM32F103RC$Flash\STM32F10x_HD.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512 -FS08000000 -FL080000 -FP0($$Device:STM32F103RD$Flash\STM32F10x_512.FLM)) 0 - $$Device:STM32F103RC$Device\Include\stm32f10x.h + $$Device:STM32F103RD$Device\Include\stm32f10x.h @@ -33,7 +33,7 @@ - $$Device:STM32F103RC$SVD\STM32F103xx.svd + $$Device:STM32F103RD$SVD\STM32F103xx.svd 0 0 @@ -110,7 +110,7 @@ SARMCM3.DLL - -REMAP + -REMAP DCM.DLL -pCM3 SARMCM3.DLL @@ -138,7 +138,7 @@ 1 BIN\UL2CM3.DLL - "" () + @@ -247,12 +247,12 @@ 0 0x20000000 - 0xc000 + 0x10000 1 0x8000000 - 0x40000 + 0x60000 0 @@ -277,7 +277,7 @@ 1 0x8000000 - 0x40000 + 0x60000 1 @@ -302,7 +302,7 @@ 0 0x20000000 - 0xc000 + 0x10000 0 diff --git a/MDK-ARM/startup_stm32f103xe.s b/MDK-ARM/startup_stm32f103xe.s index 7cd2477..39fb3a9 100644 --- a/MDK-ARM/startup_stm32f103xe.s +++ b/MDK-ARM/startup_stm32f103xe.s @@ -39,7 +39,7 @@ __initial_sp ; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> ; -Heap_Size EQU 0x200 +Heap_Size EQU 0x400 AREA HEAP, NOINIT, READWRITE, ALIGN=3 __heap_base diff --git a/TCP2UART.ioc b/TCP2UART.ioc index 6933f4d..8b91976 100644 --- a/TCP2UART.ioc +++ b/TCP2UART.ioc @@ -70,11 +70,11 @@ FREERTOS.configCHECK_FOR_STACK_OVERFLOW=2 FREERTOS.configMAX_PRIORITIES=7 FREERTOS.configMINIMAL_STACK_SIZE=128 FREERTOS.configSUPPORT_DYNAMIC_ALLOCATION=1 -FREERTOS.configSUPPORT_STATIC_ALLOCATION=0 +FREERTOS.configSUPPORT_STATIC_ALLOCATION=1 FREERTOS.configTICK_RATE_HZ=1000 -FREERTOS.configTOTAL_HEAP_SIZE=10240 +FREERTOS.configTOTAL_HEAP_SIZE=15360 FREERTOS.configUSE_COUNTING_SEMAPHORES=1 -FREERTOS.configUSE_IDLE_HOOK=0 +FREERTOS.configUSE_IDLE_HOOK=1 FREERTOS.configUSE_MALLOC_FAILED_HOOK=1 FREERTOS.configUSE_MUTEXES=1 FREERTOS.configUSE_PREEMPTION=1 @@ -83,7 +83,7 @@ FREERTOS.configUSE_TICK_HOOK=0 File.Version=6 GPIO.groupedBy=Group By Peripherals KeepUserPlacement=false -Mcu.CPN=STM32F103RCT6 +Mcu.CPN=STM32F103RDT6 Mcu.Family=STM32F1 Mcu.IP0=DMA Mcu.IP1=FREERTOS @@ -123,7 +123,7 @@ Mcu.Pin20=VP_TIM4_VS_ClockSourceINT Mcu.PinsNb=21 Mcu.ThirdPartyNb=0 Mcu.UserConstants= -Mcu.UserName=STM32F103RCTx +Mcu.UserName=STM32F103RDTx MxCube.Version=6.16.1 MxDb.Version=DB.6.0.161 NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false @@ -182,7 +182,7 @@ PC13-TAMPER-RTC.Signal=GPIO_Output PCC.Checker=false PCC.Line=STM32F103 PCC.MCU=STM32F103R(C-D-E)Tx -PCC.PartNumber=STM32F103RCTx +PCC.PartNumber=STM32F103RDTx PCC.Series=STM32F1 PCC.Temperature=25 PCC.Vdd=3.3 @@ -200,12 +200,12 @@ ProjectManager.CoupleFile=true ProjectManager.CustomerFirmwarePackage= ProjectManager.DefaultFWLocation=true ProjectManager.DeletePrevious=true -ProjectManager.DeviceId=STM32F103RCTx +ProjectManager.DeviceId=STM32F103RDTx ProjectManager.FirmwarePackage=STM32Cube FW_F1 V1.8.7 ProjectManager.FreePins=false ProjectManager.FreePinsContext= ProjectManager.HalAssertFull=false -ProjectManager.HeapSize=0x200 +ProjectManager.HeapSize=0x400 ProjectManager.KeepUserCode=true ProjectManager.LastFirmware=true ProjectManager.LibraryCopy=0 diff --git a/项目技术实现.md b/项目技术实现.md index 884eecb..b6c98b0 100644 --- a/项目技术实现.md +++ b/项目技术实现.md @@ -520,8 +520,8 @@ FreeRTOS 可管理的中断优先级必须 >= `configMAX_SYSCALL_INTERRUPT_PRIOR | Flash | 256 KB | 384 KB | | SRAM | 48 KB | 64 KB | | 引脚 | LQFP64 | LQFP64(完全兼容) | -| 启动文件 | `startup_stm32f103xe.s` | `startup_stm32f103xd.s` | -| 宏定义 | `STM32F103xE` | `STM32F103xD` | +| 启动文件 | `startup_stm32f103xe.s` | `startup_stm32f103xe.s` | +| 宏定义 | `STM32F103xE` | `STM32F103xE` | | Flash 算法 | `STM32F10x_HD` | `STM32F10x_HD`(相同) | | SRAM 大小 | `0xC000` | `0x10000` | | Flash 大小 | `0x40000` | `0x60000` |