你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 1711|回复: 0

【实战经验】STM32F411CEUx 能下载程序但不能执行

[复制链接]

1182

主题

3785

回帖

1

蝴蝶豆

论坛元老

最后登录
2020-3-17
发表于 2016-6-28 14:20:13 | 显示全部楼层 |阅读模式
STM32F411CEUx 能下载程序但不能执行

前言
某客户和我们反应他们制作回来的板子,能下载程序但是程序执行不了。

一、复现现象
硬件是:客户自己设计制作的板子。上面是STM32F411CEUx的芯片
软件版本是Cube库中的:基于问题是能下载程序,但是代码执行不了,所以自己用Cube生成了一个项目工程,主函数里面就是GPIO口的翻转,正好客户的板子上有LED灯,所以如果代码被执行了,就可以看到灯的闪烁。

二、程序解读
连接好调试工具STLINK,
2.1/ IAR编译环境
程序能够正常下载,而且能够执行,可以看到对应的LED灯的闪烁。
2.2/ Keil编译环境
使用Keil的编译环境下载,确实能够下载,但是入口的地址是如下黄色的那行显示所示,如果单步执行(F11)或全速运行(F5),程序始终在原位置不动(0x1FFF4252),
如果强制的将PC指针的值和SP的值修改为0x8000000与0x2000000,然后在点击运行,则能够跑到main()函数,再全速运行,能够看到客户板子上的LED灯的闪烁。
但是如果不强制修改PC和SP指针的值,则程序不执行。
21.jpg
所以问题就变成为什么程序下载进去后的地址是0x1FFF4252 ?0x1FFF4252又是什么地址呢?
查阅相应的手册,
22.jpg
发现0x1FFF4252是处在了System memory区域。
咨询了客户,他们设计的是程序从Flash memory区域启动的而且程序中没有对Option Byte进行配置,那问题就很清楚了,用万用表测量了客户板上的Boot 0引脚的电平,发现电平不对,达到1.6V,这么高的电平可以被视为高电平了。
23.jpg
对照客户的原理图,原来Boot有上拉和下拉的电阻,焊接的时候将这两个电阻都焊接上去了,去掉上拉电阻,使的BOOT0的引脚接地为低电平,再编译下载进入Keil的环境,程序能够被正常执行了。问题找到了。
对于最初的测试,硬件相同,软件相同,然而IAR可以正常运行,KEIL却不能执行,不解,可以IAR编译环境的设置比较智能



文档下载地址:
https://www.stmcu.org.cn/document/list/index/category-1011

实战经验汇总:
https://www.stmcu.org.cn/module/forum/thread-576401-1-1.html

回复

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版