STM32F103程序存储为Flash,支持在线读写以及擦除。Flash写的特性为:先要按照页擦除,擦除之后每个字节的数值为0xFF,然后才能对Flash进行写操作。读的特性倒是没有特殊的要求,可以直接读。
STM32的HAL库里面有Flash的写操作以及擦除操作的,这就为我们Firmware Update提供了便利。
STM32(HAL库)BootLoader实现(BootLoader跳转到Application)
STM32(HAL库)BootLoader实现2(Application跳转到BootLoader)
上面两篇文章详细叙述了如何为了Firmware升级建立BootLoader(如果没有思路的,可以看看我的这两篇文章)。BootLoader和Application的相互可以通过上述方式实现,那么具体的Firmware的操作(即Flash的擦除与写操作)是怎么弄的呢?
首先是Flash的擦除,见下面代码:
写操作的代码如下:(仍然有库函数作为基本的调用)
这样只需要调用上面的两个函数就可以对Flash进行基本的更新操作了。
另外需要提醒一下,STM32的Flash擦除和写操作的时候需要对其进行解锁,如下面代码:
最后再说明一点,Flash的解锁,写和擦除操作上面代码都已经有叙述,那么读操作呢?
如下:
这就是所有对Flash的操作,加上我上文提到的实现BootLoader以及之前文章中分享的USB HID接口实现,其实,现在已经可以实现STM32 Flash的自定义升级了。我后面的文章就将其总结完善,敬请期待。