这里就STM32L053芯片的FLASH编程做个简单演示并做些提醒,以供有需要的人参考。
一般来讲,FLASH编程主要包括擦除、代码编程、Option字修改操作,关于Option编程下面不做介绍。STM32L0芯片的擦除除了支持全片擦除外,再就是支持页擦除,每页的大小为128Bytes,即32个字。编程可以按字或按半页【64Bytes】编程。单页擦除、单字编程以及半页编程的时间都是一样的,大概3.2ms左右,这点在芯片数据手册上也明确出来了。
这里提醒两点。第一点,在做擦除或编程时,要注意地址对齐的问题,页擦除时地址要128字节对齐,字编程注意4字节对齐,半页编程时注意64字节对齐。还有一点就是做半页编程时,半页编程的执行代码要放到RAM里进行,这点手册也强调了。
下面演示字编程、页编程、页擦除的操作。这里我先以字编程模式写5个字,然后以半页编程模式对5个半页进行FLASH编程,并记录二者所花的时间,看看字编程时间跟半页编程的是否一致。另外,在完成5个半页编程之后,又进行了页擦除操作,擦除刚才已编程的5个半页中的1页,即最后应只剩下3个半页的内容【注:对于STM32L0系列芯片,内部FLASH被擦除后内容