STM32F103 Flash操作代码解析
发布时间:2020-12-15 19:56:17 所属栏目:百科 来源:网络整理
导读:/************************************************************************/ // !!!一定要记住!!!Flash寿命是有限的,别程序开着一直擦!!用到再擦 // !!!爱护Flash人人有责 // 必须先解锁Flash uint64_t data = 0 ; // 一页 1KB // stm32f103 Flash 建议
/************************************************************************/
// !!!一定要记住!!!Flash寿命是有限的,别程序开着一直擦!!用到再擦
// !!!爱护Flash人人有责
// 必须先解锁Flash
uint64_t data = 0;
// 一页 1KB
// stm32f103 Flash 建议使用页地址为:0x0807F000
// 寻址范围:0x0807F000 - 0x0807FFFF
uint32_t *Address = (uint32_t*)0x0807F000;
HAL_FLASH_Unlock();
FLASH_PageErase((uint32_t)Address);
// 为防止出错,需要延时等待下,当然一般不会出错
if(HAL_OK != FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE)){
// TODO: Error 操作
}
// 必须清楚标志位
CLEAR_BIT(FLASH->CR,FLASH_CR_PER);
// 开始写数据
// 分为三类写法:FLASH_TYPEPROGRAM_HALFWORD
// FLASH_TYPEPROGRAM_WORD
// FLASH_TYPEPROGRAM_DOUBLEWORD
// 关于详细应用,自己脑补
if(HAL_OK == HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD,(uint32_t)Address,data)){
HAL_GPIO_WritePin(LED1,LED_ON);
}else{
HAL_GPIO_WritePin(LED2,LED_ON);
}
// 搞完之后记得加个锁撒
HAL_FLASH_Lock();
// Flash可以直接寻址哦,写到该地址之后,直接寻址就ok了!
if(*Address == data){
HAL_GPIO_WritePin(LED3,LED_ON);
}
// 最后再说一句,爱护Flash,人人有责!!!
/************************************************************************/
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |