Can';t使用HAL驱动程序在STM32F429上写入双字

Can';t使用HAL驱动程序在STM32F429上写入双字,stm32,hal,Stm32,Hal,我试图将uint64\u t(双字)变量写入闪存,但没有成功。这是代码 #定义应用程序开始地址0x8008000 无效闪光器(uint8_t startSector,uint8_t NumberOfSector) { HAL_FLASH_Unlock(); Flash_-eraseInitStruct.TypeErase=Flash_-TypeErase_扇区; Flash_eraseInitStruct.VoltageRange=Flash_电压_范围_3; Flash_eraseInitSt

我试图将
uint64\u t
(双字)变量写入闪存,但没有成功。这是代码

#定义应用程序开始地址0x8008000
无效闪光器(uint8_t startSector,uint8_t NumberOfSector)
{
HAL_FLASH_Unlock();
Flash_-eraseInitStruct.TypeErase=Flash_-TypeErase_扇区;
Flash_eraseInitStruct.VoltageRange=Flash_电压_范围_3;
Flash_eraseInitStruct.Sector=startSector;
Flash_eraseInitStruct.NbSectors=扇区数;
如果(HAL_flashx_Erase(&Flash_eraseInitStruct,&Flash_haloOperationsSectorError)!=HAL_OK)
{
闪烁上升错误(错误闪烁X擦除);
}
HAL_FLASH_Lock();
}
内部主(空)
{
HAL_Init();
main_clockSystemInit();
__IO uint64_t字=0x1234567890;
闪光酶(2,1);
//flashProgramWord(aTxBuffer,应用程序启动地址,2);
HAL_FLASH_Unlock();
HAL_闪存_程序(闪存_类型程序_双字、应用程序_开始地址、字);
}
我将错误标志升高
PGSERR
PGAERR
。擦除操作没有问题。但编程返回错误。
一些想法?

没有STM32F249,你是说STM32F429吗

为了使用64位编程,VPP(BOOT0)必须由8-9伏供电。是吗

见第3.6.2节

顺便说一下

__IO uint64_t word =  0x1234567890;
不会像(想必)预期的那样起作用。它是32位体系结构,除非有
L
后缀,否则整数常量将被截断为32位
U
也不会有影响,因为变量是无符号的<代码>\u IO是不必要的

uint64_t word =  0x1234567890UL;

我建议采用注册方式。没有神奇的HAL功能。使用寄存器的闪存写入功能-10分钟,“轻松”HAL库一个-多小时或多天。