HAL_FLASH_Unlock(); // 解锁FLASH status = HAL_FLASH_OB_Unlock(); // 解锁选项字节区域 HAL_FLASH_OB_Launch(); // 生效设置 // 写入OPT数据 for (uint32_t i = 0; i < size; i++) {// 按字写入数据 status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, addr, data[i]); if (status...
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); 前者为轮询方式写,后者为中断方式写。第一个参数为写模式,它定义了写的字节数量:双字,字,半字与字节。第...
写入操作可以通过HAL_FLASH_Program()函数来完成。 c void FLASH_Write(uint32_t address, uint32_t data) { FLASH_Unlock(); FLASH_Erase_Sector(FLASH_SECTOR_11, FLASH_VOLTAGE_RANGE_3); // 假设擦除第11页 if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, address, data) != HAL_OK) { // ...
intmain(void){HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_USART1_UART_Init();while(1){HAL_FLASH_Unlock();uint32_tPageError=0;__disable_irq();//擦除前关闭中断if(HAL_FLASHEx_Erase(&EraseInitStruct,&PageError)==HAL_OK){printf("擦除 成功\r\n");}__enable_irq();//擦除后...
}//开始写数据uint32_t startAddressIndex = PAGE_START_ADDRESS + (1024*paramSizeKb);//startAddressIndex += 8,写入位置,每次+8是因为存储的类型是uint64_t,占用64bit,8字节for(inti =0; i < len;i ++ , startAddressIndex +=8) {//写入数据HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, startAddres...
STM32H7的两个Flash BANK是256bit带宽,CPU访问是采用的两个64bit AXI总线。 HAL库的内部Flash编程函数HAL_FLASH_Program固定编写32字节数据。 70.2 内部Flash基础知识 70.2.1 内部Flash的硬件框图 认识一个外设,最好的方式就是看它的框图,方便我们快速的了解内部Flash的基本功能,然后再看手册了解细节。
HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, (uint32_t)(dest+i), *(uint32_t*)(src+i)) == HAL_OK) { / Check the written value */ if*(uint32_t *)(src + i) != *(uint32_t*)(dest+i)) { / Flash content doesn't match SRAM content */ return2; } } ...
对于STM32L475来说,这里只有使用FLASH_TYPEPROGRAM_DOUBLEWORDf。而且要注意传入的地址只能8字节对齐,因为这里只能一次性写入8字节,没有别的模式可选。 5. 读Flash 我现在使用的读Flash的宏定义如下: #define FlashGetChar(addr) *((char*)(addr)) #define FlashGetU8(addr) *((uint8_t*)(addr)) #define...
WaitForLastOperation(50);/* 双字编程 */if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, start...
FlashAddress:待写入FLASH的地址 Data:待写入数据的缓存区地址 DataLength:待写入数据的长度 说明: APP_END_ADDR:为宏定义 #define APP_END_ADDR ((uint32_t)0x0803FFFFUL) HAL库接口函数HAL_FLASH_Program的写入方式有三种: 1、半字写入(FLASH_TYPEPROGRAM_HALFWORD) 16bit(2字节) ...