使用工具
STM32F407ZGT6正点原子探索者开发板
STM32CubeMX:版本V4.27.0
STM32CubeF4 Firmware Package V1.21.0 / 23-February-2018
官方例程:D:STM32CubeRepositorySTM32Cube_FW_F4_V1.21.0ProjectsSTM324xG_EVALApplicationsLwIPLwIP_IAP
项目中用到了远程升级(IAP)功能,即通过以太网设备+LWIP协议栈实现远程升级stm32f407开发板。官方提供的例程中,开发板使用的PHY设备是DP83848,与实验室开发板使用的LAN8720有着一些不同,DP83848是MII接口的,而LAN8720使用的是RMII接口,这两种协议的具体区别读者可以参考其他资料。
STM32F407开发板的HTTP模式IAP远程升级之官方例程移植
STM32F407开发板的HTTP模式IAP远程升级之新建模板
准备工作
一。新建以太网工程模板
1.打开STM32CubeMX,点击New Project
2.选择STM32F407ZG芯片,双击即可打开配置界面
3.Pinout配置
选择PHY接口
选择LWIP
选择外部晶振
选择烧写方式和时基
选择串口1
添加BUTTON_WAKEUP按钮引脚(进入升级模式时使用)
根据LAN8720原理图修改下列引脚
ETH_TX_EN -》 PG11
ETH_TXD0 -》 PG13
ETH_TXD1 -》 PG14
PD3配置成GPIO输出(LAN8720A的硬件复位引脚)
4.Clock Configuratoin
出现下图提示,点击Yes即可
修改一下红框所示的参数
3.Configuration配置
串口1配置
以太网配置
LWIP配置
取消DHCP,使用静态IP,方便测试
GPIO设置
PD3为PHY输入引脚,设置高,LAN8720正常工作
PA0设置,修改User Label,作为进入升级模式的判定按键引脚(输入模式)
5.生成工程
每个外设生成单独的配置文件
二。调试串口输出
以下代码加入到usart.c中
/******************************************************************************
* 描述 : 重定向c库函数printf到串口
* 参数 : 无
* 返回 : HAL_OK = 0x00U
HAL_ERROR = 0x01U
HAL_BUSY = 0x02U
HAL_TIMEOUT = 0x03U
******************************************************************************/
int fputc(int ch, FILE *f)
{
return HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
}
三。创建app文件
在工程文件夹下新建一个名为user的文件夹,在user文件夹下新建一个名为app的文件夹
在keil工程中新建一个名为user/app的group(如果出现keil卡死的情况,就先创建一个名为user的group,然后再将其改成user/app即可)
新建app.c文件,保存到文件夹user/app文件夹下,并将app.c添加到user/app的group中
app.c如下
/**
*****************************************************************************
* @file app.c
* @author Zorb
* @version V1.0.0
* @date 2018-09-04
* @brief 应用的实现
*****************************************************************************
* @history
*
* 1. Date:2018-09-04
* Author:Zorb
* Modification:建立文件
*
*****************************************************************************
*/
#include “app.h”
/******************************************************************************
* 描述 : 应用的初始化
* 参数 : 无
* 返回 : 无
******************************************************************************/
void App_init(void)
{
printf(“hello zorbrn”);
}
/******************************************************************************
* 描述 : 应用程序
* 参数 : 无
* 返回 : 无
******************************************************************************/
void App_process(void)
{
}
/******************************** END OF FILE ********************************/
新建app.h,保存到user/app文件夹中,并将其路径添加到keil的include路径中
app.h如下
/**
*****************************************************************************
* @file app.h
* @author Zorb
* @version V1.0.0
* @date 2018-09-04
* @brief 应用的头文件
*****************************************************************************
* @history
*
* 1. Date:2018-09-04
* Author:Zorb
* Modification:建立文件
*
*****************************************************************************
*/
#ifndef __APP_H__
#define __APP_H__
#ifdef __cplusplus
extern “C” {
#endif
#include “stm32f4xx_hal.h”
/* 应用的初始化 */
void App_init(void);
/* 应用程序 */
void App_process(void);
#ifdef __cplusplus
}
#endif
#endif /* __APP_H__ */
/******************************** END OF FILE ********************************/
在main.c中添加一下代码
此时将程序下载至开发板,运行ping命令,成功ping通,至此模板搭建完成
使用工具
STM32F407ZGT6正点原子探索者开发板
STM32CubeMX:版本V4.27.0
STM32CubeF4 Firmware Package V1.21.0 / 23-February-2018
官方例程:D:STM32CubeRepositorySTM32Cube_FW_F4_V1.21.0ProjectsSTM324xG_EVALApplicationsLwIPLwIP_IAP
项目中用到了远程升级(IAP)功能,即通过以太网设备+LWIP协议栈实现远程升级stm32f407开发板。官方提供的例程中,开发板使用的PHY设备是DP83848,与实验室开发板使用的LAN8720有着一些不同,DP83848是MII接口的,而LAN8720使用的是RMII接口,这两种协议的具体区别读者可以参考其他资料。
STM32F407开发板的HTTP模式IAP远程升级之官方例程移植
STM32F407开发板的HTTP模式IAP远程升级之新建模板
准备工作
一。新建以太网工程模板
1.打开STM32CubeMX,点击New Project
2.选择STM32F407ZG芯片,双击即可打开配置界面
3.Pinout配置
选择PHY接口
选择LWIP
选择外部晶振
选择烧写方式和时基
选择串口1
添加BUTTON_WAKEUP按钮引脚(进入升级模式时使用)
根据LAN8720原理图修改下列引脚
ETH_TX_EN -》 PG11
ETH_TXD0 -》 PG13
ETH_TXD1 -》 PG14
PD3配置成GPIO输出(LAN8720A的硬件复位引脚)
4.Clock Configuratoin
出现下图提示,点击Yes即可
修改一下红框所示的参数
3.Configuration配置
串口1配置
以太网配置
LWIP配置
取消DHCP,使用静态IP,方便测试
GPIO设置
PD3为PHY输入引脚,设置高,LAN8720正常工作
PA0设置,修改User Label,作为进入升级模式的判定按键引脚(输入模式)
5.生成工程
每个外设生成单独的配置文件
二。调试串口输出
以下代码加入到usart.c中
/******************************************************************************
* 描述 : 重定向c库函数printf到串口
* 参数 : 无
* 返回 : HAL_OK = 0x00U
HAL_ERROR = 0x01U
HAL_BUSY = 0x02U
HAL_TIMEOUT = 0x03U
******************************************************************************/
int fputc(int ch, FILE *f)
{
return HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
}
三。创建app文件
在工程文件夹下新建一个名为user的文件夹,在user文件夹下新建一个名为app的文件夹
在keil工程中新建一个名为user/app的group(如果出现keil卡死的情况,就先创建一个名为user的group,然后再将其改成user/app即可)
新建app.c文件,保存到文件夹user/app文件夹下,并将app.c添加到user/app的group中
app.c如下
/**
*****************************************************************************
* @file app.c
* @author Zorb
* @version V1.0.0
* @date 2018-09-04
* @brief 应用的实现
*****************************************************************************
* @history
*
* 1. Date:2018-09-04
* Author:Zorb
* Modification:建立文件
*
*****************************************************************************
*/
#include “app.h”
/******************************************************************************
* 描述 : 应用的初始化
* 参数 : 无
* 返回 : 无
******************************************************************************/
void App_init(void)
{
printf(“hello zorbrn”);
}
/******************************************************************************
* 描述 : 应用程序
* 参数 : 无
* 返回 : 无
******************************************************************************/
void App_process(void)
{
}
/******************************** END OF FILE ********************************/
新建app.h,保存到user/app文件夹中,并将其路径添加到keil的include路径中
app.h如下
/**
*****************************************************************************
* @file app.h
* @author Zorb
* @version V1.0.0
* @date 2018-09-04
* @brief 应用的头文件
*****************************************************************************
* @history
*
* 1. Date:2018-09-04
* Author:Zorb
* Modification:建立文件
*
*****************************************************************************
*/
#ifndef __APP_H__
#define __APP_H__
#ifdef __cplusplus
extern “C” {
#endif
#include “stm32f4xx_hal.h”
/* 应用的初始化 */
void App_init(void);
/* 应用程序 */
void App_process(void);
#ifdef __cplusplus
}
#endif
#endif /* __APP_H__ */
/******************************** END OF FILE ********************************/
在main.c中添加一下代码
此时将程序下载至开发板,运行ping命令,成功ping通,至此模板搭建完成
举报