
STM32F0系列通过USART创建在线应用编程 简介 对于大多数基于 Flash 的系统而言,在最终产品中安装之后,能够对固件进行更新,这一点非常重要。这一功能被称为在应用中编程 (IAP)。此应用笔记的目的就是为创建 IAP 应用程序提供通用准则。 STM32F0xx 微控制器能够运行用户指定的固件,从而执行微处理器内置 Flash 的 IAP。借助这一特性,在重新编程过程中可以使用任意类型的通信协议。本应用笔记以 USART 为例进行说明。 1 IAP 概述 STM32F0xx器件可在意法半导体的 STM320518-EVAL 评估板上实现。 1.1 原理 应使用所选的开发工具,或系统存储区中工厂内置的自举程序,通过串行调试 (SWD) 接口将 IAP 驱动程序编程到 Flash 的基址。 IAP 驱动程序使用 USART 执行以下操作: ● 从超级终端将二进制文件下载到 STM32F0xx 的内部 Flash 中。 ● 将 STM32F0xx 的内部 Flash 内容(从指定的用户应用程序地址开始)上传到二进制文件中。 ● 执行用户程序。 1.2 IAP 驱动程序说明 IAP 驱动程序包含下列源文件: ● main.c:在此文件中对 USART 初始化及 RCC 配置进行设置。然后通过 menu.c 文件执行主菜单。 ● menu.c:包含主菜单例程。主菜单提供了多种操作选项,包括下载新的二进制文件,上传内部 Flash,执行已加载的二进制文件,以及对于用户加载二进制文件的页面执行取消写保护操作(如果这些页面被写保护)。 ● flash_if.c 包含写入、擦除和取消写保护内部 Flash 功能。 ● common.c:包含从/向 USART 外设读取/写入的相关功能 ● ymodem.c:使用 YMODEM 协议(a) 从 / 向超级终端应用程序接收 / 发送数据。在数据接收失败时,显示错误消息“接收文件失败”。如果数据接收成功,则该数据将从合适的地址编程到内部 Flash。然后将内部 RAM 内容与内部 Flash 内容进行比较,以验证数据是否完整。如果数据存在不一致的情况,则显示错误消息“验证失败”。有时还会显示其他错误消息,例如,在映像文件大小超过允许的存储空间或用户中止任务时。 ● STM32F0xx 标准外设库。 用户可以选择是否按下连接到某个引脚的按钮来决定是运行用户应用程序还是运行可以重新编程的 IAP 程序。 ● 若复位时不按按钮,将切换到用户应用程序。 ● 若复位时按下按钮,将显示 IAP 主菜单。 有关 STM320518-EVAL 板上用于进入 IAP 模式的按钮的详细信息,请参见表 1:STM32F0xxIAP 的实现。 IAP 流程图如图 1 所示。 ![]() 2 运行 IAP 驱动程序 2.1 超级终端配置 要使用 IAP,用户的 PC 必须运行超级终端或其它支持 ymodem 协议的终端程序。本文档使用超级终端。图 2 给出了超级终端的配置。 ![]() 注: 使用波特率值 115200 bps 举例进行说明。选择系统时钟频率时,必须要小心。为了能顺利通过 USART 进行通信,最终应用中的系统时钟频率必须保证能够产生 115200 bps 的波特率。 2.2 执行 IAP 驱动程序 在本应用笔记中,以按下连接到引脚的按钮来执行 IAP 驱动程序为例进行说明。 在复位时按下按钮,用户可运行 IAP 驱动程序以重写编程 STM32F0xx 的内部 Flash。当然,不一定要使用按钮,用户还可以对该引脚施加相当于有效电平的信号。请参见表 1:STM32F0xx IAP 的实现。 3 IAP 驱动程序菜单 运行 IAP 驱动程序时,超级终端窗口中显示以下菜单。 ![]() |
谢谢图图的分享 |
支持~~~~~~~~~~~~~ |
非常感谢!!!!!!!!!!!!! |
STM32F0系列通过USART创建在线应用编程 |