STM32 USB升级

首先移植USB官方库,移植方法详见另一篇文章USB OTG官方库移植。

建议移植DFU模式,或者MSC模式。DFU模式作为PC端连接数据线下载到目标板,MSC模式可用U盘连接升级。

按键 屏幕显示驱动什么的不提了。主要提一下要修改的地方。

     /* Jump to user application */
     JumpAddress = *(__IO uint32_t*) (APP_DEFAULT_ADD + 4);
     Jump_To_Application = (pFunction) JumpAddress;
     /* Initialize user application's Stack Pointer */
     __set_MSP(*(__IO uint32_t*) APP_DEFAULT_ADD); 
     Jump_To_Application();

官方库中,程序跳转有如上代码,需要修改APP_DEFAULT_ADD的地址,将地址修改为你所需要下载的APP的地址。__set_MSP();可将栈的指针也指向APP的栈,因此此地址也需要设置。

DFU中,基本不需要修改什么。MSC模式中,要做升级先要做U盘读取,读取完成后升级就很简单了。相当于直接把bin文件读取出来,写入到片内FLASH中的APP起始地址部分。

APP中,需要在project->option->link->edit设置中断向量地址,程序起始地址。这两个地址可以设为一起,因为程序起始的开头就是中断向量。此外,还需要在system_stm32f2xx.c等文件中 ,将VECT_TAB_OFFSET 偏移改掉,如程序起始地址为0x800c000就改为0xc000。

然后就可以愉快的下载运行了。将app生成的bin文件放在u盘指定目录下 开机检测到U盘 读取文件 写入FLASH,最后写入完成,跳入指定目标地址,运行APP程序。

你可能感兴趣的:(STM32)