21天学通Linux嵌入式开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

6.3 STM32的在应用编程

STM32的在应用编程及BootLoader的使用非常简单,这里将给出完整的电路原理图,以及BootLoader使用步骤。

6.3.1 电路原理图

STM32的BootLoader应用电路原理图,如图6-2所示。这个电路是在前面的STM32最小电路基础上,增加BootLoader启动模式选择及USART1串口通信电路来实现的。电路图中所使用的元器件,如表6-1所示。

图6-2 STM32的BootLoader应用电路

表6-1 元器件列表

这里,P2和P3分别连接STM32的BOOT0引脚和BOOT1引脚,通过选择可以分别置芯片于不同的启动模式。BOOT1=0,BOOT0=1系统存储器被选为启动区,BootLoader便开始执行。USART1的TX引脚为PA9,RX引脚为PA10。我们便可以在计算机上通过串口来下载固件程序。

6.3.2 BootLoader固件下载步骤

有了电路支持后,我们还需要一个通过BootLoader下载固件的程序。意法半导体公司提供了一个PC端的免费程序供用户通过BootLoader升级固件,用户可以访问网站www.st.com来获得。

这里我们便基于这个BootLoader的Flash加载程序来演示如何通过STM32的BootLoader来升级固件。下载固件的步骤如下:

① 关闭硬件电路的电源。

② 在电路上置BOOT1=0和BOOT0=1,此时系统内存被选为启动区。

③ 打开电源,系统读取BOOT[1:0]引脚将启动BootLoader程序。

④ 将串口数据线连接至计算机的RS232接口。

⑤ 打开意法半导体提供的BootLoader加载程序“Flash Loader Demo”,如图6-3所示。这里,参数设置如下:

图6-3 “Flash Loader Demo”软件

· Port Name为所使用的串口号。

· Parity必须设置为Even,即偶校验。

· Band Rate即波特率,可以任意选择,最高为115200。

· Timeout一般设置为5s,可以根据系统配置的高度来适当选择。

⑥ 单击“Next”按钮,正确认出STM32芯片的Flash容量,如图6-4所示。

图6-4 ARM芯片容量

⑦ 单击“Next”按钮,正确识别出STM32 芯片的类型,如图6-5 所示。其中,各个部分的含义如下:

图6-5 硬件类型

· Target表示了芯片的类型。

· PID表示了目标ID。

· Version表示了BootLoader的版本号。

· Flash区域表示了各个Flash页的起始地址、结束地址、大小及读写状态等。

⑧ 单击“Next”按钮,进入主要功能区。这里可以完成固件下载、读取及擦除等操作。其中,各项的含义如下:

· Erase用于擦除STM32的Flash存储器,可以选择全部擦除或者部分擦除。

· Download to device用于下载固件。

· Upload from device用于读取STM32芯片内部的固件程序。

· Enable/Disable Flash protection用于启用或者禁用Flash的读写保护。

· Edit option bytes用于编辑选项字节。

这里,选择“Download to device”,并选择升级的固件文件,如图6-6所示。固件文件以hex为后缀。

图6-6 选择固件文件

⑨ 单击“Next”按钮,便开始依次执行固件下载和校验,如图6-7所示。在该页面还显示了目标芯片、固件文件名称、固件文件大小、升级进度及升级所使用的时间等。

图6-7 固件下载

⑩ 最后,固件下载完成且校验无误后,显示下载成功,如图6-8所示。

图6-8 选择固件文件

⑪ 此时,单击“Finish”按钮可以退出固件下载程序。

这时,用户的固件程序便下载到STM32芯片内部。用户重新更改BOOT1=x(x表示任意电平)和BOOT0=0,选择用户Flash闪存被选为启动区。然后,重新启动电路后便可以运行新的固件程序了。