stm32的内存系统学习

  首先我们知道stm32是32位单片机,故它的ROM为4G(2^32),它是cpu通过地址访问外围电路元件比如flash、ram的助手,那stm32怎么管理这些地址呢,答案是地址映射,ROM是只读的,说明出厂前就已经固定了,结合下图:706ba0b4875a491dac3b7f410c34df5d.png

 我们就可以知道,用stm32f103c8t6的flash来举例子,flash的空间大小为64k,flash的绝对地址肯定是0x00000000-0x00010000,ram肯定也是0x00000000开始,但是,总不能有这么多0x00000000吧,所以stm32就把这些映射成一个4G范围的地址,对应下图:95395e73525a4f33b8ad770e08afbfc4.png

 可以看出,ram被映射到rom的0x20000000,外设寄存器被映射到ROM的0x40000000。

 

了解了芯片上各个器件和芯片外围器件的地址范围后,我引出一个问题,我们写的代码,放在哪?

 

分静态和动态,

(静态)全局变量和代码放flash上,全局变量在程序运行起来后会被加载到ram,结合下图:856d1c8ee24e4a1683e03bb906121841.jpg

 

(动态)静态量、函数参数(堆,栈),需要动态分配内存,则放到ram,且是系统运行动态分配,用完就删,结合上图。

 

08e3430f14e64a2ba81490c22b95742d.jpg

 由于栈和全局变量加载和堆组成的ram占用,所以栈大小应小于ram。

 

程序出行怪状,或者说是不符合想象,可能是栈给的太少、栈溢出,那怎么合理规划栈空间呢,靠经验,新手可以参考

http://t.csdnimg.cn/GZimr


或者下面

 

ae53eccaf0d2407d93bbb9b07939cbbf.jpg

 

 

 

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嗨!对于学习STM32的笔记,我可以给你一些基本的指导。首先,你需要了解STM32是一系列由STMicroelectronics公司开发的32位微控制器。它们具有广泛的应用领域,包括嵌入式系统、物联网和工业自动化等。 在学习STM32时,你可以按照以下步骤进行: 1. 硬件准备:获取一块STM32开发板,例如STM32F4 Discovery或NUCLEO系列。这些开发板通常带有一些外设和接口,便于学习和实验。 2. 开发环境搭建:下载并安装Keil MDK或者IAR Embedded Workbench等集成开发环境(IDE)。这些IDE提供了编译器、调试器和其他工具,方便你编写和调试STM32的代码。 3. 学习基本知识:了解STM32的体系结构、寄存器和外设等基本知识。可以通过阅读相关的参考手册、数据手册和应用笔记来深入了解。 4. 编写代码:使用C/C++语言编写STM32的应用程序。你可以使用相关的库函数来简化开发过程,如标准外设库(StdPeriph Library)或者新的STM32Cube库。 5. 调试和测试:使用调试器和仿真器来调试和测试你的代码。这些工具能够帮助你单步执行代码、观察寄存器和内存的状态,以及检查外设的操作。 6. 实践项目:尝试一些小型的项目,如LED闪烁、按键输入和PWM输出等,以巩固你的学习成果。随着经验的积累,你可以尝试更复杂的项目,如通信接口、传感器应用和无线通信等。 记得在学习过程中多查阅官方文档、参考资料和在线论坛,以便解决遇到的问题。祝你学习STM32的旅程愉快!如果你有具体的问题,欢迎随时向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值