初级会员

- 积分
- 102
- 金钱
- 102
- 注册时间
- 2018-4-4
- 在线时间
- 21 小时
|
20金钱
使用芯片:STM32F070 固件库:使用HAL库编写
问题:无法对FLASH进行擦除或者读写。
代码:
void Flash_Erase_Main(void)
{
/*解锁flash密匙*/
HAL_FLASH_Unlock();
/*定义擦除方式和类型*/
EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES; //页删除方式
EraseInitStruct.PageAddress = FLASH_USER_START_ADDR; //起始地址
EraseInitStruct.NbPages = 1; //擦除次数
if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK){ //将所有的数据进行擦除
while(1); //用于检查错误
}
/*锁定FLASH密匙*/
HAL_FLASH_Lock();
}
void Flash_Write_Main(uint32_t FlashAddress, uint32_t *Data, uint32_t DataSize)
{
uint32_t FlashAddressEnd = 0; //地址的最后一位变量
FlashAddressEnd = FlashAddress + 4 * DataSize;
/*解锁flash密匙*/
HAL_FLASH_Unlock();
while (FlashAddress < FlashAddressEnd)
{
/* FLASH的写入 */
if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, FlashAddress, *Data) == HAL_OK)
{
FlashAddress = FlashAddress + 4;
Data++;
}
}
/*锁定FLASH密匙*/
HAL_FLASH_Lock();
}
注:起始地址使用的是固件库事例中的起始地址(应该没有问题)
上述代码在F103的正点原子的精英版学习板上测试有效,可以使用。
现在利用上述代码,无法对FLASH进行操作。(现在考虑:是否是因为BOOT启动设置导致的无法访问)
|
|