HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data); HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data); 前者为轮询方式写,后者为中断方式写。第一个参数为写模式,它定义了写的字节数量:双字,字,半字与字节。第...
首先在进行FLASH寄存器的写操作之前我们同样需要对Flash进行解锁,之后只需要调用HAL_FLASH_Program 传入需要写的数据位数的类型,写入的FLASH地址和数据即可。 需要注意的是在调用F1的hal库的时候我发现F1的这个函数是支持写入double类型的参数的,与此同时F1中的写入FLASH_TYPEPROGRAMDATA_BYTE的这个参数是消失了的。 而L...
if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, (uint32_t)address, *data) == HAL_OK) 注意我是以8位数据写入的,因此第一个参数写入的byte ,如果要想写入32位的数据,改为对应的参数就行了。 { address = address + 1; data=data+1; } else { /*дÈë³ö´í£¬·µ»...
写入位置,每次+8是因为存储的类型是uint64_t,占用64bit,8字节for(inti =0; i < len;i ++ , startAddressIndex +=8) {//写入数据HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, startAddressIndex, data[i]);
if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, (uint32_t)address, *data) == HAL_OK)注意我是以8位数据写⼊的,因此第⼀个参数写⼊的byte ,如果要想写⼊32位的数据,改为对应的参数就⾏了。{ address = address + 1;data=data+1;} else { /*дÈë³ö´í£¬·µ...
Hi Akos, When I use the below function, it writes the bytes in the correct flash address, however bytes are written in LSB HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, flash_ptr, data) e.g.: when I write 0x0A1B2C3D4C5E6F55 I see that ...
}if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, address, data64) == HAL_OK) { address = address +8; data = data +8; }else{ status =-1; } } }else{/* case where data is aligned, so let's avoid any copy */while((address < (StartAddress + size)) && (status ==0)) {...
FLASH_OBProgramInitTypeDef flash_ob_init; HAL_FLASHEx_OBGetConfig(&flash_ob_init); if(flash_ob_init.RDPLevel!=SET) { printf("Device is readable %d rn",flash_ob_init.RDPLevel); //flash_ob_init.RDPLevel = OB_RDP_LEVEL_1; //flash_ob_init.OptionType = OPTIONBYTE_RDP; HAL_FLASH_Unl...
/* FLASH总页数 */ #define STM32FLASH_PAGE_NUM (STM32FLASH_SIZE / STM32FLASH_PAGE_SIZE) /// 导出函数声明 void FLASH_Init(void); uint32_t FLASH_Read(uint32_t Address, void *Buffer, uint32_t Size); uint32_t FLASH_Write(uint32_t Address, const uint16_t *Buffer, uint32_t NumTo...
(Address < FLASH_USER_END_ADDR) { if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, DATA_32) == HAL_OK) { Address = Address + 4; } else { /*写入出错,返回,实际应用中可加入处理 */ return -1; } } /* 给FLASH上锁,防止内容被篡改*/ HAL_FLASH_Lock(); /* 从FLASH中读取出...