一、问题
最近网上买了一个STM32H750VBT6,买完以后下载几个Demo发现flash只有128K,(手册上的地址:0x08000000~0x08020000)。部署一个RTOS,点亮显示屏就够呛,加入稍微大一点的图片就报错。STM32CubeIDE里用DAP_LINK 或 ST_LINK的方式下载程序就报错。报错如图1-1所示。
图1-1 flash不足报错图
二、探索
这时候我考虑过外接一个w25q128的flash ,但是设置成代码直接写入到外部flash有点复杂懒得搞。然后突然发现STM32H743芯片有1MB(手册上的地址:0x08000000~0x08100000)的flash。
这两是同根同源的兄弟啊!!,所以我马上下载STM32CubeProgrammer,拿出我的ST_LINK调试器一步一步试了一下。果然STM32H750能访问到2MB的大小的flash内存(地址:0x08000000~0x08200000),访问flash地址如图2-1所示。
图2-1 访问flash地址
所以脑子里突然有了一个想法。如果STM32的flash配置文件修改如何呢?修改flash值为2048K后好消息是能编译下载了,坏消息是不能运行,直接卡死,屏幕都不亮(不敢继续修改其他文件,代码好不容易写到这里)。修改参数结果如图2-2所示。
图2-2 修改参数结果
所以脑子里突然有了一个想法。竟然不能用STM32CubeIDE下载,用STM32CubeProgrammer下载程序结果如何呢?下载程序结果如图2-3所示。
图2-3 下载程序结果
哈哈哈,失败了,不愧是一家人,死活不让通过,难道没有别的办法了吗?这时候突然想到了另一个办法,我用的工具是ST_LINK,用ST_LINK的工具结果如何呢?然后我就下载了STM32 ST-LINK Utility,然后连接芯片就给我一个惊喜。ST-LINK Utility连接结果如图2-4所示。
图 2-4 ST-LINK Utility连接结果
果然!!,这个芯片有2MB的flash!!!。
三、调试
我马上生成一个hex文件试一试,hex大小是983KB。下载结果如图3-1所示。
图 3-1 ST-LINK Utility下载结果
居然成功了,显示屏也轮流播放 图1-1 里的代码所示的四个图片。
四、总结
注意事项:
1. 这个H750上不一定成功,听说这个原因是有可能是H743太贵了,卖不出去,ST只好重新标记成H750了,Y版本能成功。
2. 听说官网设置128K的原因是,官方只保证128KB Flash是稳定可靠的,毕竟H750价格便宜太多了(反正我的正常)
2.记得XXX_flash.ld里面的数字修改不然编译失败,设置输出hex文件
3.如果代码太大或者做项目还是老老实实外接flash吧,毕竟是可靠的区域不多。这个方法只适合学习
4.这个文章写这么水的原因是怕审核因字数少而不让过,我第一次写文章,有错的地方诚挚期待各位大佬们的指正和建议,不胜感激。