[STM32H7R/S]测评 ②点灯
<div class='showpostmsg'> 本帖最后由 不爱胡萝卜的仓鼠 于 2024-9-17 17:15 编辑<p>拿到板卡后,本来想着自己创建一个空的工程,就可以开始玩了,但是遇到了一些问题:Keil编译报错;cube IDE能编译,但是烧录后没有正常运行。</p>
<p>为了可以快速上手,那我还是老老实实先跑一下官方的demo,争取让板子先动起来</p>
<p> </p>
<p><strong><span style="font-size:24px;">一.生成demo工程</span></strong></p>
<p>首先打开cubemx,点击“ACCESS TO EXAMPLE SELECTOR”,选择一个例程</p>
<div style="text-align: center;"></div>
<p>然后在左边的筛选条件中找到H7S7系列、DK板。这样右边就有对应的例程了。正好里面就有GPIO翻转的demo,就他了</p>
<div style="text-align: center;"></div>
<p>选择打开方式时,选择cube IDE,不要选择keil(我还是喜欢Keil的,但是keil打开编译会报错,没办法,只能放弃keil了。新板子的demo这样我理解,难免会有一些小小的问题,坐等ST后续修复)</p>
<div style="text-align: center;"></div>
<p> </p>
<p>等生成完毕后,会自动打开cubeIDE,并且工程已经自动加载进来了。</p>
<p>在readme中有详细的描述在cubeIDE中如何编译下载运行这个demo</p>
<div style="text-align: center;"></div>
<p> </p>
<p><strong><span style="font-size:24px;">二.编译下载</span></strong></p>
<p>选中工程后,锤子就亮了,点击旁边的三角形,选择debug</p>
<div style="text-align: center;"></div>
<p>点击绿色播放按键,就可以打开配置界面,这里主要是配置下载相关的内容</p>
<div style="text-align: center;"></div>
<p>然后来到“调试器”选项卡,找到“External loaders”,点击“Add”,添加一个外置烧录算法</p>
<p>这里插一嘴我的理解,因为H7S7的内部flash很小,所以官方做demo时直接就用片外flash存储APP程序了,所以现在我们编译的demo需要被烧录到片外flash,因此需要加载片外烧录算法。对应的还要有bootloader,这个bootloader后面步骤会有涉及</p>
<div style="text-align: center;"></div>
<p>External loader选择MX66UW1G45G_STM32H7S78-DK.stldr,这个就是开发板匹配的外置flash烧录算法,然后把"Enabled" 勾上, "Initialize"不勾上</p>
<div style="text-align: center;">
<div style="text-align: center;"></div>
<p style="text-align: left;"> </p>
</div>
<p>杂项中的“检验flash下载”勾要去除</p>
<div style="text-align: center;"></div>
<p>然后切换到“Startup”选项卡,点击“Add”</p>
<div style="text-align: center;"></div>
<p>readme说明中分2种情况,分别是我现在的工程中有boot工程和没有boot工程。很显然,我现在没有,那我就按没有的这个case走。</p>
<p>官方的这个boot工程代码我还没细看过,个人理解就是上电后从flash启动,首先运行下载进去的boot,然后他引导外置flash中的APP程序运行</p>
<p>点击“File system....”,打开cubemx中对应包的下载路径,找到Template_XIP工程,里面的Binary文件夹下有直接现成可用的hex文件。不过需要在文件明的框中输入*,再回车,才可以强制选择到这个hex文件,不然是找不到的</p>
<div style="text-align: center;"></div>
<p>把 "Download" 勾上, "Load symbols"不勾</p>
<div style="text-align: center;"></div>
<p>然后把刚添加的hex移动到第二个位置</p>
<div style="text-align: center;"></div>
<p>至此我们就可以编译下载了,点击锤子编译,点击绿色播放按钮下载程序</p>
<p> </p>
<p>demo运行如下</p>
<div style="text-align: center;">2d5917c913e4e1a7482b025eb878e582<br />
</div>
<p><strong><span style="font-size:24px;">三.cubemx更新工程内容注意事项</span></strong></p>
<p>当cubemx更新工程师,有几个注意点</p>
<p> </p>
<p>首先是“Project Manager”--“Project”--“Toolchain/IDE”要更换成“STM32CubeIDE”</p>
<div style="text-align: center;"></div>
<p> </p>
<p>第二是,他会生成很多ld文件,并且IDE中默认的ld文件配置会被篡改(这玩意儿玩死我了,研究了好半天)</p>
<p>首先我们来看一下,默认工程中__EXTRAM_BEGIN这个变量,注意看他实际存在的ld文件名称</p>
<div style="text-align: center;"></div>
<div>并且IDE中只有有个ld</div>
<div>
<div style="text-align: center;"></div>
<p> </p>
</div>
<p>当我们重新生成工程后,默认的ld文件配置会被改变</p>
<p>我们先来看看生成后会动哪些文件</p>
<div style="text-align: center;"></div>
<div>中间还有很多文件被删除,都是HAL的文件,这些到也没关系</div>
<div style="text-align: center;"></div>
<p>需要注意的是,这里生成了很多新的ld文件,再看IDE,使用的ld文件已经变了</p>
<div style="text-align: center;"></div>
<p>但是这个ld里面是没有__EXTRAM_BEGIN这个变量的,因此编译就会报错,说他找不到这个变量</p>
<div style="text-align: center;"></div>
<p>罪魁祸首就是这个文件被动了(真的太坑爹了)</p>
<div style="text-align: center;"></div>
<p>最难受的是,我接触IDE没多久,以前都是用keil的,都不找不到在那边修改这个ld的配置。</p>
<p>于是我用了一个歪办法,既然是配置文件,那我直接把修改点都抛弃,他就会变回原来的配置,那不就行啦。测试后这样做是有效的</p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>大佬,小弟发现可以在如下位置更改ld文件:</p>
<p> </p>
慕容雪花 发表于 2024-10-5 08:44
大佬,小弟发现可以在如下位置更改ld文件:
<p>感谢感谢,按照你的这个该确实可以重新选择ld文件修改。但是很可惜我这个demo他只要cubemx再生成一次,他又会给我改回去,估计是cubemx的配置文件的原因,而且这个选项是不再UI界面中让用户配置的</p>
不爱胡萝卜的仓鼠 发表于 2024-10-11 23:35
感谢感谢,按照你的这个该确实可以重新选择ld文件修改。但是很可惜我这个demo他只要cubemx再生成一次,他 ...
<p>建议把cubemx按在地上,揍一顿,应该会好了</p>
页:
[1]