完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
前面学习了怎么样选择不同的储存器来加载代码,也就是运行代码,决定了从哪里开始运行的问题。但是CPU选择了储存器之后,还要知道代码是从存储器哪一个位置开始读取代码?也就是从哪一个地址开始读取代码?现在就来解决这个问题。我们知道32位的CPU有4G的地址空间,因此从哪一个地址里读取代码,就有很多的选择了。至于放在什么地址,一般是由CPU的生产厂家来决定的。在这里可以查看到STM32F407的内部Flash储存器是放在0x8000000地址,更加详细的地址可以从STM32手册里查看到,如下图:
从上图可以看到代码就是写入到0x8000000,当CPU选择从内部存储器启动时,就会从这里加载代码。从这里也可以看到,如果是使用外部存储器,那么地址是从0x4000000开始,这样就可以区分内部和外部代码存储器了。从上图还可以看到CPU的内存空间是0x2000 0000开始,最大为112KB。内存主要用来保存临时数据,可以高速地读取和修改。 通过数据手册,知道STM32F407的FLASH地址和大小,以及内存地址和大小,就可以设置编译器产生代码的地址了,如下图就是根据CPU来设置相应的地址: 上面这样就是正确地设置STM32F407的内部储存器的地址和大小,以及内部RAM的地址和大小。如果设置过大,就会导致烧写失败,运行程序失败。同样,这些地址开始位置和大小,也要在调试器里设置正确,否则也会调试失败。 由于每个项目做的功能不一样,因此选择的STM32的CPU也不一样,那么怎么样来区分STM32不同CPU的功能,FLASH的大小和RAM的大小呢?其实可以通过STM32的命名来了解,它的定义如下图: 比如STM32F407VET6,就是如下进行解释: 该型号的组成为7个部分,其命名规则如下: (1)STM32:STM32代表ARM Cortex-M3内核的32位微控制器。 (2)F:F代表芯片子系列。 (3)407:407代表高性能、带DSP或FPU系列。 (4)R:R这一项代表引脚数,其中T代表36脚,C代表48脚,R代表64脚,V代表100脚,Z代表144脚。 (5)B:B这一项代表内嵌Flash容量,其中6代表32K字节Flash,8代表64K字节Flash,B代表128K字节Flash,C代表256K字节Flash,D代表384K字节Flash,E代表512K字节Flash,F代表768K字节Flash,G代表1024K字节Flash。 (6)T:T这一项代表封装,其中H代表BGA封装,T代表LQFP封装,U代表VFQFPN封装。 (7)6:6这一项代表工作温度范围,其中6代表-40——85℃,7代表-40——105℃。 通过上面的学习,就可以知道怎么样选择不同类型的CPU,以及编译器里配置CPU的运行空间和大小了。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 08:07 , Processed in 1.863010 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号