历史上的今天
返回首页

历史上的今天

今天是:2024年12月07日(星期六)

2020年12月07日 | STM32f103 —— 内部flash读写

2020-12-07 来源:elecfans

#ifndef _MCU_FLASH_H_

#define _MCU_FLASH_H_

 

#include

 

// STM32f103C8T6 64KB FLASH,20KB RAM,1个扇区1KB,程序起始0x8000000

#define FLASH_START_ADDR    ((uint32_t)0x8000000)

#define FLASH_END_ADDR      ((uint32_t)(0x8000000 + FLASH_SECTOR_NUM * FLASH_SECTOR_SIZE))

#define FLASH_SECTOR_NUM    128  // 扇区数量

#define FLASH_SECTOR_SIZE   1024 // 扇区大小1KB

 

typedef enum

  FLASH_FAILURE = 0,

  FLASH_SUCCESS,

} flash_status_t;

 

//===========================================================================

flash_status_t FlashErase(uint32_t addr, uint8_t count);

uint32_t FlashWrite(uint32_t addr, uint8_t *buffer, uint32_t length);

uint32_t FlashRead(uint32_t addr, uint8_t *buffer, uint32_t length);

 

#endif /* _MCU_FLASH_H_ */

 


#include "mcu_flash.h"

#include

#include "stm32f10x_flash.h"

 

// addr:地址  count:块数量

flash_status_t FlashErase(uint32_t addr, uint8_t count)

{

  uint8_t i;

 

  FLASH_Unlock();

 

  FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);

 

  for(i = 0; i < count; ++i)

  {

    if(FLASH_ErasePage(addr + i * FLASH_SECTOR_SIZE) != FLASH_COMPLETE)

    {

      return FLASH_FAILURE;

    }

  }

 

  FLASH_Lock();

 

  return FLASH_SUCCESS;

}

 

uint32_t FlashWrite(uint32_t addr, uint8_t *buffer, uint32_t length)

{

  uint16_t i, data = 0;

 

  FLASH_Unlock();

 

  FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);

 

  for(i = 0; i < length; i += 2)

  {

    data = (*(buffer + i + 1) << 8) + (*(buffer + i));

    if(FLASH_ProgramHalfWord((uint32_t)(addr + i), data) != FLASH_COMPLETE)

    {

      return i;

    }

  }

  

  FLASH_Lock();

 

  return length;

}

 

uint32_t FlashRead(uint32_t addr, uint8_t *buffer, uint32_t length)

{

  memcpy(buffer, (void *)addr, length);

 

  return length;

}


推荐阅读

史海拾趣

CEVA, Inc公司的发展小趣事

CEVA公司一直以来都是无线连接和智能传感技术的领先许可方。公司提供了包括数字信号处理器、人工智能处理器、无线平台以及一系列用于传感器融合、图像增强、计算机视觉、语音输入和人工智能的补充软件。这些技术和产品使得CEVA在多个终端市场,如移动、消费、汽车、机器人、工业和物联网等领域,都能够提供节能、智能和互联的设备解决方案。通过与全球半导体公司和原始设备制造商的紧密合作,CEVA成功地将这些技术应用于实际产品中,推动了相关市场的快速发展。

Hamlin ( Littelfuse )公司的发展小趣事

随着万物互联时代的到来,CEVA公司迎来了新的发展机遇。Wi-Fi 6、Wi-Fi 7、5G-Advanced和蜂窝式物联网等技术的快速发展,推动了客户对新建置芯片和解决方案的需求。CEVA凭借其在无线连接和智能传感技术领域的领先地位,能够为客户提供全面的解决方案,满足这些技术在多个终端市场带来的巨大商机。同时,CEVA也是唯一能够提供蓝牙加上Wi-Fi或UWB加上蓝牙等组合解决方案的授权许可商,这一优势使得CEVA在全球半导体产业中占据了重要地位。

以上是基于公开资料对CEVA, Inc.在电子行业中的几个重要发展节点的概述。这些故事展示了CEVA如何在技术创新、市场布局和应对挑战等方面取得了显著成就,为公司的持续发展奠定了坚实基础。然而,由于电子行业的快速发展和不断变化的市场环境,CEVA的未来仍充满挑战和机遇。

Crydom公司的发展小趣事

随着万物互联时代的到来,CEVA公司迎来了新的发展机遇。Wi-Fi 6、Wi-Fi 7、5G-Advanced和蜂窝式物联网等技术的快速发展,推动了客户对新建置芯片和解决方案的需求。CEVA凭借其在无线连接和智能传感技术领域的领先地位,能够为客户提供全面的解决方案,满足这些技术在多个终端市场带来的巨大商机。同时,CEVA也是唯一能够提供蓝牙加上Wi-Fi或UWB加上蓝牙等组合解决方案的授权许可商,这一优势使得CEVA在全球半导体产业中占据了重要地位。

以上是基于公开资料对CEVA, Inc.在电子行业中的几个重要发展节点的概述。这些故事展示了CEVA如何在技术创新、市场布局和应对挑战等方面取得了显著成就,为公司的持续发展奠定了坚实基础。然而,由于电子行业的快速发展和不断变化的市场环境,CEVA的未来仍充满挑战和机遇。

AXSEM公司的发展小趣事

CEVA, Inc.最初于1999年11月22日在美国特拉华州注册成立,起初的名称并非CEVA。随着公司的业务扩展和技术积累,其在2002年11月进行了更名,成为ParthusCeva公司。这一更名反映了公司业务的进一步发展和市场定位的调整。随后,在2003年12月,公司再次更名为CEVA公司,这一名称沿用至今,成为无线连接和智能传感技术领域的知名品牌。

GCi Technologies公司的发展小趣事
对电池进行定期维护和充电,以延长电池使用寿命。
Eutech公司的发展小趣事

EUtech公司注重品牌塑造和市场拓展。他们通过参加国际展会、举办技术研讨会等方式提高品牌知名度。同时,公司积极拓展海外市场,产品已出口到新加坡、香港、韩国等国家和地区。凭借优异的产品质量和良好的市场口碑,EUtech公司逐渐在国际市场上树立起了品牌形象。

问答坊 | AI 解惑

QAM and OFDM 调制的一篇好用的论文

一些论文的地方也可以下载,我觉得还可以,就共享一下了…

查看全部问答>

问一下大家要是想判断MAX232的好坏

EEWORLD合作qq群:49900581 群主:wangkj 我从T1in接5V然后测T1out的电压可以不?…

查看全部问答>

异步fifo中使用格雷码读写的关键问题

异步FIFO中使用格雷码的优点:地址变换是不会产生冒险竞争,不会产生错误的读写,这点大家都明白,没问题! 问题是:读指针和写指针随着fifo的深度的不同而不停变化,那么读指针和写指针是用格雷码也需要同步才能产生空满信号标志,那么两者是如何 ...…

查看全部问答>

周工的新开发板TinyM0—CAN开发套件资料

周工最近新开一款开发板:     设计和以前那块一样的,芯片换成新的,带CAN功能的TinyM0-CAN——LPC11C14 。    …

查看全部问答>

请帮忙推荐本驱动开发入门的书籍!

就是那种从0开始的. 比如,去哪里下载DDK ,DDK是啥? 怎么搭建一个开发环境等等. 谢谢! …

查看全部问答>

500分请教EVC中注册表操作REG_BINARY值的问题

[HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn\\VSPD1] \"DevConfig\"=hex:\\   10,00,00,00,05,00,00,00,10,01,00,00,00,4b,00,00,00,00,08,00,00,00,00,00,00 [HKEY_LOCAL_MACHINE\\Drivers\\Active\\22] \"Hnd\"=dword:0004c9a0 \"Name ...…

查看全部问答>

最近在试验FLASH+AP的应用架构,不知道有谁成熟地应用在产品上

目前平台SIRFIV+WINCE6.0 不知道哪位兄弟可否告知已经这条方法是否比较成熟 …

查看全部问答>

FSMC扩展模式的疑问?

FSMC的时序规则,模式A、B、C、D,模式1、模式2等,扩展模式指的是A、B、C、D吗?对谁的扩展,模式1、模式2的扩展?请教,谢谢。…

查看全部问答>

【好消息】下载STM32在Altium(Protel)上的封装库

下载地址: 相关链接:http://www2.altium.com/forms/libraries/designer6/IntLib_contents_ad06.asp?lib=ST+Microcontroller+32-Bit+STM32.IntLib&man=ST-Microelectronics…

查看全部问答>

基于51单片机的简易计算器

基于51单片机的简易计算器资料总汇,带程序还有电路图。很好的设计资料,不容错过…

查看全部问答>