基于
stm32
的
usb iap
程序升级步骤
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 */