关于STM32F103系列从大容量向中容量移植的若干问题

摘要:
堆空间大于RAM。该程序如何在微控制器中正常运行?将堆空间更改为10K,然后编译程序。

一、把STM32F103大容量移植到STM32F103C8T6上的步骤:

1、换启动文件

startup_stm32f10x_cl.s ——互联型的器件

包括:STM32F105xx,STM32F107xx

startup_stm32f10x_hd.s ——大容量器件

包括:STM32F101xx,STM32F102xx,STM32F103xx

startup_stm32f10x_hd_vl.s ——大容量器件

包括:STM32F100xx

startup_stm32f10x_ld.s ——小容量器件

包括:STM32F101xx,STM32F102xx,STM32F103xx

startup_stm32f10x_ld_vl.s——小容量器件

包括:STM32F100xx

startup_stm32f10x_md.s——中容量器件

包括:STM32F101xx,STM32F102xx,STM32F103xx

startup_stm32f10x_md_vl.s——中容量器件

关于STM32F103系列从大容量向中容量移植的若干问题第1张

- startup_stm32f10x_ld_vl.s: for STM32 Low density Value line devices
- startup_stm32f10x_ld.s: for STM32 Low density devices
- startup_stm32f10x_md_vl.s: for STM32 Medium density Value line devices
- startup_stm32f10x_md.s: for STM32 Medium density devices
- startup_stm32f10x_hd.s: for STM32 High density devices
- startup_stm32f10x_xl.s: for STM32 XL density devices
- startup_stm32f10x_cl.s: for STM32 Connectivity line devices
cl:互联型产品,stm32f105/107系列
vl:超值型产品,stm32f100系列
xl:超高密度产品,stm32f101/103系列
ld:低密度产品,FLASH小于64K
md:中等密度产品,FLASH=64 or 128
hd:高密度产品,FLASH大于128

2、修改Device 为STM32F103C8T6

3、更换全局宏定义

在C/C++选项卡内 修改为STM32F10X_MD,USE_STDPERIPH_DRIVER

二、移植uCOS III内核到C8T6过程中会遇到

linking...
.Objectsucos-led.axf: Error: L6406E: No space in execution regions with .ANY selector matching lib_mem.o(.bss).
.Objectsucos-led.axf: Error: L6406E: No space in execution regions with .ANY selector matching os_cfg_app.o(.bss).
.Objectsucos-led.axf: Error: L6406E: No space in execution regions with .ANY selector matching os_var.o(.bss).
.Objectsucos-led.axf: Error: L6406E: No space in execution regions with .ANY selector matching startup_stm32f10x_hd.o(STACK).
.Objectsucos-led.axf: Error: L6406E: No space in execution regions with .ANY selector matching app.o(.bss).
.Objectsucos-led.axf: Error: L6406E: No space in execution regions with .ANY selector matching os_var.o(.data).
.Objectsucos-led.axf: Error: L6406E: No space in execution regions with .ANY selector matching cpu_core.o(.data).
.Objectsucos-led.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32f10x_rcc.o(.data).
.Objectsucos-led.axf: Error: L6406E: No space in execution regions with .ANY selector matching cpu_core.o(.bss).
.Objectsucos-led.axf: Error: L6406E: No space in execution regions with .ANY selector matching lib_mem.o(.data).
.Objectsucos-led.axf: Error: L6406E: No space in execution regions with .ANY selector matching os_prio.o(.data).
.Objectsucos-led.axf: Error: L6406E: No space in execution regions with .ANY selector matching os_cpu_c.o(.data).
.Objectsucos-led.axf: Error: L6407E: Sections of aggregate size 0x8e30 bytes could not fit into .ANY selector(s).
Not enough information to list image symbols.
Not enough information to list the image map.
Finished: 2 information, 0 warning and 13 error messages.
".Objectsucos-led.axf" - 13 Error(s), 0 Warning(s).

需要修改

//lib_cfg.h

#define LIB_MEM_CFG_HEAP_SIZE 27u * 1024u /* Configure heap memory size [see Note #2a]. */

这里把堆空间设置为27K。。。。堆空间都比RAM还大了,这程序怎么可能在单片机是正常运行,把堆空格改为10K,程序编译通过。

#define LIB_MEM_CFG_HEAP_SIZE 10u * 1024u

免责声明:文章转载自《关于STM32F103系列从大容量向中容量移植的若干问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JS中将控制台log输出显示到浏览器中asp.net 导出excel带图片下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

STM32使用ST-Link Debugger下载出错 提示:no target connected!

工程没有问题,工程下载设置没有有问题,ST-LINK V2下载器也没有问题,也能读取到ST-LINK V2。下载就是报错提示no target connected! 出现以上问题你可以试一下解决方法: 摁着STM32复位按键,点击KEIL5烧录程序,点完后立即松开复位键。 我遇到过以上问题,测试过就能下载程序了。 出现以上问题的原因可能是:你的下载引脚...

BLDC 无刷电机FOC驱动 STM32官方培训资料

STM32 PMSM FOC SDK V3.2 培训讲座一http://v.youku.com/v_show/id_XNTM2NjgxMjU2.html?from=s1.8-1-1.2STM32 PMSM FOC SDK V3.2 培训讲座二http://v.youku.com/v_show/id_XNT ... -87.3.6-2.1-1-1-5-0ST...

stm32f4xx 的IWDG使用的一般步骤

需要注意的是:   STM32系列的MCU内部的RC频率会在30kHz到60kHz之间变化。此外,即使RC振荡器的频率是精确的,确切的时序仍然依赖于APB接口时钟与RC振荡器时钟之间的相位差,因此总会有一个完整的RC周期是不确定的。stm32f10x,通过对LSI进行校准可获得相对精确的看门狗超时时间。但是在stm32f4 中并没有对它校准的说明。 通常我...

USB应用开发笔记之一:STM32上实现USB主机读写U盘

  在项目应用中,经常会有对外交换数据的需求。USB接口读写U盘无疑是一种颇为方便的选择。在这一篇中,我们就来讨论如何在STM32上实现USB主机读写U盘文件的方法。 1、应用概述   在我们的产品上有这样一个需求,希望通过大容量的U盘存取数据。我们来分析一下这个需求的具体内容。   首先在硬件上我们需要有相应的USB端口,这一点在产品设计时就已经考虑并实...

STM32 ADC基础与多通道采样

12位ADC是一种逐次逼近型模拟数字数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。ADC的输入时钟不得超过14MHZ,它是由PCLK2经分频产生。如果被ADC转换的模拟电压低于低阀值或高于高阀值,AWD模拟看门狗状态位被设置。 ADC通常要与DMA一起使用 这里只是简单的用库配置ADC 不断扫描来实现ADC的应用。 配置DMA: voi...

STM32使用FFT变换计算THD(20年四川省电子设计大赛E题软件部分)

注: 本篇内容意在使不理解FFT变换的读者也可以通过使用FFT来计算总谐波失真 FFT变换 根据总谐波失真的定义: [THD = frac{sqrt{sum_{n=0}^{infty}{G_{n}^{2}}}}{G_0} (G_0为基波,G_n 为高次谐波) ] 可知,要计算THD需要知道基波分量和各个谐波分量的大小。 ​ FFT也叫快速傅里叶变换,是离散...