良许Linux教程网 干货合集 STM32L0芯片FLASH编程示例及提醒

STM32L0芯片FLASH编程示例及提醒

这里就STM32L053芯片的FLASH编程进行一个简单的演示并给予一些提醒,供有实际需求的人士参考。

通常情况下,FLASH编程主要包括擦除、代码编程和Option字修改操作,关于Option编程的详细介绍在本文不做涉及。

STM32L0芯片的擦除操作不仅支持全片擦除,还支持页擦除,每页大小为128Bytes,即32个字。编程可以选择按字或按半页【64Bytes】进行。单页擦除、单字编程以及半页编程所需要的时间都大致相同,约为3.2ms左右,这一点在芯片数据手册中也有明确说明

image-20231126220950058
image-20231126220950058

这里提醒两点。第一点,在做擦除或编程时,要注意地址对齐的问题,页擦除时地址要128字节对齐,字编程注意4字节对齐,半页编程时注意64字节对齐。还有一点就是做半页编程时,半页编程的执行代码要放到RAM里进行,这点手册也强调了。

下面演示字编程、页编程、页擦除的操作。这里我先以字编程模式写5个字,然后以半页编程模式对5个半页进行FLASH编程,并记录二者所花的时间,看看字编程时间跟半页编程的是否一致。另外,在完成5个半页编程之后,又进行了页擦除操作,擦除刚才已编程的5个半页中的1页,即最后应只剩下3个半页的内容【注:对于STM32L0系列芯片,内部FLASH被擦除后内容为全0】。

下面代码截图是基于STM32Cube库来组织的,主要涉及到字编程、半页编程、页擦除三个操作,对应着绿色下划线的3个库函数。

image-20231126220953590
image-20231126220953590

其中,半页编程的执行代码需配置到RAM里去运行。另外,Period1和Period2分别来存放写5个字和5个半页的编程时间,并放在指定的FLASH位置。编译运行后我们可以看到如下结果:

image-20231126220956993
image-20231126220956993

上面截图是经过运行后芯片内部的部分FLASH空间的内容。5个红色方框围住的数据乃5个字编程后的结果,蓝色方框内的数据乃5次半页编程后的结果,但最终只看到3个半页的编程内容,那是因为后面两个半页的内容经页擦除操作后而消失了。

用来统计编程时间的定时器的计数频率为1MHz,显然Period1和Period2基本是相等的,将它们再除以5后所得编程时间都是3.3ms的样子。显而易见,进行批量代码编程时采用半页编程更高效。

前面说了做半页编程时其执行代码需放到RAM运行,该代码在STM32cube库的这个文件stm32l0xx_hal_flash_ramfunc.c里面。实现该操作对于不同的IDE在处理上稍有差异。这里基于ARM MDK进行简单配置,划分点RAM出来给它用。

image-20231126221001963
image-20231126221001963
image-20231126221006039
image-20231126221006039

关于STM32L0系列FLASH编程的演示就介绍到这里,愿能帮到有需之人以节省些时间和精力。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部