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

在RAM中运行程序时,全局变量值无法修改?

[复制链接]
playandlearn 提问时间:2020-5-19 23:37 /
芯片:STM32F429BIT6
软件库:HAL库
问题描述:想将数据通过该官方的External flash烧写进spi flash中,结果是无法与spi flash正常通讯,而用其他工程是能够正常通讯的。经定位发现问题是出在全局变量的hspi.state默认不是HAL_SPI_STATE_RESET且不可修改,导致HAL_SPI_MspInit()函数未执行。下图中提供测试代码,测试代码1中hspi1.state的值无法修改且会跑进判断语句中,测试代码2中的hspi2.state的值可修改,且不会跑进判断语句中。请问为什么会出现这种情况?

代码截图

代码截图

sct文件

sct文件



收藏 评论3 发布时间:2020-5-19 23:37

举报

3个回答
七哥 回答时间:2020-5-20 09:20:25
定义结构体时,对结构体成员都初始化一下看看
playandlearn 回答时间:2020-5-20 09:34:51
toofree 发表于 2020-5-20 09:20
定义结构体时,对结构体成员都初始化一下看看

之前有在定义时将hspi1 = {0};以及在init()函数中将hspi.state = 0,依然会跑进判断分支。
lebment 回答时间:2020-5-20 10:40:52
上楼意思是你调试看看,我觉得看看也解决不了问题,敷衍式回答。
我的经验,即使是官方的,MDK有些Ex Flash 算法不可靠的,你用的硬件一致?你换个IDE,比如CubeIDE试试。
你定位问题,我并不是很赞同,烧写算法会改变SPI的寄存器,
看你这个工程,你想写一个MDK烧写算法,不用HAL库比较容易,寄存器操作吧,或者sdlib。
我已经成功写了F7的MDK QSPI烧写算法和Cubeprogrammer的烧写算法,一用HAL就不行。

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版