stm32f4 usb 升级程序_基于stm32的usb iap程序升级步骤

本文详细介绍了基于STM32F4的USB In-Application Programming (IAP)过程,包括如何实现USB自动升级和DFU(Development Firmware Upgrade)模式。用户程序从0x80003000地址开始,大小为500KB,而IAP程序位于0x80000000至0x80002FFF,大小为12KB。为了进行升级,需要在NVIC_Configuration函数中修改向量表地址,并调整编译地址。此外,用户需要在PC上安装ST的DFuSe软件来转换和升级HEX文件。
摘要由CSDN通过智能技术生成

usb自动更新程序IAP(in application programming)DFU(develepment firemeware upgrate).整个芯片有512k的片内flash,用户程序下载在里面运行,flash的地址是0x8000000,大小为0x80000,usb自动更新程序首先下载0x8000000——0x80002FFF,总大小为12K,用户程序下载到0x80003000,大小为0x7D000(500K),usb自动更新代码为如下,如果按键按下,就进入DFU模式,否则就启动用户代码。

用户程序除了在void NVIC_Configuration(void)

{

/* Set the Vector Table base location at 0x3000 */

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x3000);

}

里面修改,还要修改编译的地址,修改为0x80003000,大小为0x7d000,

iap程序编译地址为0x80000000,结束为0x80002fff,大小为0x3000,这样分别烧写用户程序和usb iap程序,启动即可。需要pc主机安装st公司的dfuse_demo_v3.0,其中会有dfu的驱动程序,插上usb后手动安装驱动程序C:\Program Files\STMicroelectronics\Software\DfuSe\Driver\x86\文件就好了运行DFU filemanager将编译生成的.hex文件转换成.dfu,然后运行DFUse demonstration upgrade生成的.dfu文件即可.

int main(void)

{

DFU_Button_Config();//配置usb自动升级程序的按键标识

/* Check if the Key push-button on STM3210x-EVAL Board is pressed */

if (DFU_Button_Read() != 0x00)

{ /* Test if user code is programmed starting from address 0x8003000 */

if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)

{ /* Jump to user application */

JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);

Jump_To_Application = (pFunction) JumpAddress;

/* Initialize user application's Stack Pointer */

__set_MSP(*(__IO uint32_t*) ApplicationAddress);

Jump_To_Application();

}

} /* Otherwise enters DFU mode to allow user to program his application */

/* Enter DFU mode */

DeviceState = STATE_dfuERROR;

DeviceStatus[0] = STATUS_ERRFIRMWARE;

DeviceStatus[4] = DeviceState;

Set_System();

Set_USBClock();

USB_Init();

/* Main loop */

while (1)

{

}

}

本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值