芯片:STM32F429BIT6 软件库:HAL库 问题描述:想将数据通过该官方的External flash烧写进spi flash中,结果是无法与spi flash正常通讯,而用其他工程是能够正常通讯的。经定位发现问题是出在全局变量的hspi.state默认不是HAL_SPI_STATE_RESET且不可修改,导致HAL_SPI_MspInit()函数未执行。下图中提供测试代码,测试代码1中hspi1.state的值无法修改且会跑进判断语句中,测试代码2中的hspi2.state的值可修改,且不会跑进判断语句中。请问为什么会出现这种情况? 代ç æªå¾ sctæ件 |
之前有在定义时将hspi1 = {0};以及在init()函数中将hspi.state = 0,依然会跑进判断分支。
我的经验,即使是官方的,MDK有些Ex Flash 算法不可靠的,你用的硬件一致?你换个IDE,比如CubeIDE试试。
你定位问题,我并不是很赞同,烧写算法会改变SPI的寄存器,
看你这个工程,你想写一个MDK烧写算法,不用HAL库比较容易,寄存器操作吧,或者sdlib。
我已经成功写了F7的MDK QSPI烧写算法和Cubeprogrammer的烧写算法,一用HAL就不行。
评分
查看全部评分