历史上的今天
返回首页

历史上的今天

今天是:2025年02月18日(星期二)

正在发生

2019年02月18日 | 【单片机笔记】STM8S系列单片机FLASH操作

2019-02-18 来源:eefocus

    1. 修改stm8s_conf.h的注释,让#include "stm8s_flash.h"得以编译


    2.修改stm8s.h的注射,让使Flash功能能够从RAM中运行


#if !defined (RAM_EXECUTION)

    #define RAM_EXECUTION  (1)                                                  // 块写入时,必须打开这里的注射

#endif /* RAM_EXECUTION */



   3.修改完成后,将产生不少警告,消除的方法,暂时还没有找到,但不影响代码的运行。




附上代码:



#include "fy_flash.h"



//操作flash前需要取消注释stm8s.h中154行的/* #define RAM_EXECUTION  (1) */



//从块的指定的第三个字节读取数据(词条序号)

u8 Flash_ReadByte_3(u8 Block)

  u32 addr;

   

  addr = FLASH_PROG_START_PHYSICAL_ADDRESS + Block*FLASH_BLOCK_SIZE;

  return FLASH_ReadByte(addr+2);

}


//向Flash指定的块写入内容

void Flash_WriteBlock(u8 Block , u8 *buf)

{  

  if(Block>FLASH_PROG_BLOCKS_NUMBER) return;

  

  FLASH_Unlock(FLASH_MEMTYPE_PROG); //解锁flash

  while (FLASH_GetFlagStatus(FLASH_FLAG_PUL) == RESET); //等待解锁标志位置位

 

  //块标准编程,写入前,硬件自动删除内容

  FLASH_ProgramBlock(Block, FLASH_MEMTYPE_PROG, FLASH_PROGRAMMODE_STANDARD,buf);

  //等待操作完成

  FLASH_WaitForLastOperation(FLASH_MEMTYPE_PROG);

  //操作完上锁

  FLASH_Lock(FLASH_MEMTYPE_PROG);   

}


//从Flash指定数量的块读取内容

void Flash_ReadBlock(u8 Block ,u8 *buf)

{

  u8 i;

  u32 addr;

  u8 sta=0;

  if(Block>FLASH_PROG_BLOCKS_NUMBER) return;

  

  //计算地址

  addr = FLASH_PROG_START_PHYSICAL_ADDRESS + Block*FLASH_BLOCK_SIZE;

  

  for(i=0;i

  {

*(buf+i) = FLASH_ReadByte(addr+i); //读取一块数据

/* if(buf[i]=='\r' && sta==0) sta=1;

else if(buf[i]=='\n' && sta==1) return;

else sta=0;

*/

  }

}



void Flash_Test(void)

{

u8 write_buf[FLASH_BLOCK_SIZE]="MARS->This is a Flash Data Memory write and read test...\r\n";

u8 read_buf[FLASH_BLOCK_SIZE];

Flash_WriteBlock(120,write_buf);

Flash_ReadBlock(120,read_buf);

UART1_SendString(read_buf);

while(1)

{

  LED_TOG;Delay_ms(350);

}

}

/*********************************************END OF FILE**********************************************/


推荐阅读

史海拾趣

DELTA公司的发展小趣事

为了更好地服务全球客户,Delta公司积极推进全球布局战略。公司在全球范围内设立了多个研发中心和生产基地,如中国大陆、中国台湾、美国、泰国、日本、墨西哥、印度、巴西以及欧洲等地。这些研发中心和生产基地不仅为Delta提供了强大的技术支持和生产能力,还使其能够更快速地响应市场需求,提供更贴近客户的服务。

Aplus Integrated Circuits公司的发展小趣事

Aplus Integrated Circuits公司在成立之初,便专注于集成电路的研发与生产。公司创始人凭借在半导体行业多年的积累,带领团队攻克了一系列技术难题,成功研发出具有高性能、低功耗特点的集成电路产品。这一技术突破为公司赢得了市场的认可,奠定了其在行业内的地位。

Dongguan City Niuhang Electronics Co.LTD公司的发展小趣事

在技术创新的基础上,Dongguan City Niuhang Electronics Co.LTD开始积极拓展市场。公司先后在安徽省池州市、江苏省扬州市和宿迁市等地设立生产基地,形成了覆盖全国的销售网络。同时,公司还加强品牌建设,通过参加行业展会、举办技术研讨会等方式,提升品牌知名度和影响力。随着市场的不断扩大,公司的销售业绩也实现了快速增长。

Directed Energy Inc公司的发展小趣事

在电子行业中,创新是企业持续发展的关键。Directed Energy Inc始终将创新作为企业的核心竞争力之一,不断投入研发资源,推动技术创新和产品升级。公司拥有一支高素质的研发团队,他们紧跟行业发展趋势,不断探索新的技术和应用,为公司的发展注入了源源不断的动力。这种持续的创新精神使得Directed Energy Inc在电子行业中始终保持领先地位。

益升华(Essentra)公司的发展小趣事

在电子产品的保护领域,益升华(Essentra)公司一直走在行业前列。多年前,公司研发团队发现市场上缺乏一种既轻便又耐用的塑料保护盖。于是,他们投入大量资源进行研发,经过数百次的试验和改进,最终成功开发出一种新型的塑料保护盖,它不仅具备优异的抗冲击性和耐磨损性,还能有效隔绝外界环境中的静电和尘埃。这一创新产品迅速获得市场的认可,为益升华(Essentra)公司带来了可观的收益。

Dolphin Interconnect Solutions Asa公司的发展小趣事

Dolphin Interconnect Solutions ASA深知创新是企业发展的根本动力。因此,公司不断投入研发资源,鼓励员工进行创新实践。同时,Dolphin还注重人才培养和引进,建立了一支高素质、专业化的技术团队。这些人才为公司的发展提供了源源不断的创新动力。

问答坊 | AI 解惑

不错的单片机模拟软件

对于学习51单片机系列的模拟有很好的实现方式,有很好的学习效果…

查看全部问答>

射频关键性设计教程

射频关键性设计教程…

查看全部问答>

group box 问题

我用的wm5.0 对话框里放置groupbox, 里面添加了几个控件 但是运行起来的时候,只能看见groupbox,里面的控件看不到? 请问时怎么回事?…

查看全部问答>

wince调用webservice问题

用一块2410板子上的wince系统调用webservice必须要板子和电脑联网吗?利用usb连接是否可以?怎样才能配置板子上的wince的ip使得wince与pc可以相互ping通?求救!!!…

查看全部问答>

让GPRS模块智能化,嵌入应用更轻松

让GPRS模块智能化,嵌入应用更轻松     目前GPRS模块供应商,各自提供自己的标准品, 面对不同行业应用,用户必须自己编写软件来 使用通信功能。这要求用户必须熟悉GSM通信, 可能需要更改原有产品设计,用户需要反复调试, 延长产 ...…

查看全部问答>

CE6 Camera 应用程序

平台:WINCE6.0+S3C6410    camera 驱动已写好,用BSP里面的CameraDshowApp.exe,能正常地进行120x160、320x240、 640x480进行预览, 但是现在用了某家开发板的camera App DEMO,能用120x160进行预览,但是当调到640x480进行预览,就出现 ...…

查看全部问答>

lwIP的TCP client在资料接收问题?

使用8962範例专案enet_lwip中加入tcp client,使mcu能连接到PC端的tcp listener. 已测试可正常连线至pc,接通时发送6个byte至pc端去,如下程式码:static err_tTcpClient_Connected(void *arg, struct tcp_pcb *pcb, err_t err){unsigned char bb[ ...…

查看全部问答>

关于MDK支持unicode码的问题

应用MDK 执行代码char *test="汉字"后,test内的内容为“汉字”的AnsiCode内码:BABAD7D6 我希望test内的内容是“汉字”的UniCode内码:496C575B 请问应该如何设置?…

查看全部问答>

TI DSP部门处理器分类法

德州仪器 (TI) 为各种应用(包括基于 ARM® 的微处理器 (ARM MPU) 和数字信号处理器 (DSP))的开发提供了广泛的嵌入式处理器平台。 请浏览我们的选择指南以选择适合您的应用开发的器件。    * Sitara™ ARM 微处理器  ...…

查看全部问答>

请问大家现在都用什么PCB制图软件?altium designer有msp430库么?

请问大家现在都用什么PCB制图软件?altium designer现在比例怎样?altium designer有msp430的sch和pcb的封装库么?谢谢…

查看全部问答>