您的位置:首页 > 编程语言

STM32F103 Flash操作代码解析

2017-03-27 17:43 127 查看
/************************************************************************/
// !!!一定要记住!!!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,人人有责!!!
/************************************************************************/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stm32