STM32F103ZE无外部RAM移植FreeRTOS+STemWin遇到的问题

使用的硬件平台是STM32F103ZE最小系统
官方提供的例程是UCOSIII+STemWIN
由于入门操作系统是跟着野火的《FreeRTOS 内核实现与应用开发实战—基于STM32》,于是想移植FreeRTOS+STemwin到这个平台.
移植过程中主要出现了以下两种错误

程序卡死在GUI_Init()

完成所有程序的移植后,编译运行没有任何警告和错误。下载到开发板后不能正常运行,通过ST LINK仿真发现程序卡死在HardFault_Handler(void)个人理解为硬件错误中断,那是什么硬件错误了??
硬件错误
原因:使用的硬件平台没有外部RAM
解决方法:将外部RAM的宏定义改为0
不使用外部RAM

error L6406E 空间不足空间不足

STM32F103ZE拥有64K RAM和512K Flash
刚入门的我对RAM和Flash的概念不是很清楚,查阅资料发现存储器的分类如下图所示:
存储器分类
易失性存储器:特点是存取速度快
非易失性存储器:长期存储数据
也就是说我们在编译程序时,产生的中间变量不需要一直存在,所以存储在了RAM(平时说的运行内存).程序是需要长期存在的,所以存储在flash中,所以怀疑是RAM空间不足.
在网上搜索关于UCOSIII和Free RTOS的区别时,发现UCOSIII对内存的消耗是大于Free RTOS的,既然商家提供的UCOSIII+STeWin例程是可以运行的,那么在同样的条件下Free RTOS+STemWin肯定能运行,那么问题出现在哪?
肯定是Free RTOS的内存分配有问题.改变系统内存大小,程序运行成功
内存修改
上面的内容是经过多次实验,查询资料和借鉴其他人的帖子所得
如果有错误,希望各位大佬和爱好者能够准确指正,共同进步.

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值