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)  

  {  

  }  

}  


关键字:stm32  usb  iap  程序升级 引用地址:基于stm32的usb iap程序升级步骤

上一篇:ARM中的RO段、RW段和ZI段的区别
下一篇:STM32(Cortex-M3)中优先级的概念

推荐阅读

近年来许多厂商纷纷展出MicroLED显示器,在该显示技术量产之前,MiniLED做为LCD显示器的背光应用产品将会率先上市。然而,这波LED的微型化趋势掀起的不仅是显示技术的革命,也将为智能车头灯的应用带来更多可能性。 这几年发光二极管(Light Emitting Diode, LED)的微小化,掀起一阵显示器产品的革命。直下式微型LED背光模组能提供LCD TV更细腻的区域调...
(文章来源:中科罗伯特机器人学院) 近年来我国机器人产业取得了令人瞩目的成就。人机协作机器人、云智能机器人等工业机器人新品不断涌现,机器人关键零部件的技术水平稳步提升。手术机器人等服务机器人的产品类型日益丰富,机器人领域正在快速拓展。 根据前瞻产业研究院发布的《中国互联网+机器人行业市场需求预测与投资战略规划分析报告》统计的数...
当一加OnePlus 8和8 Pro在今年早些时候推出时,我们已经知道一加将在今年晚些时候带来其中一款设备的略微好一些的版本。 在这之前经过多个泄露渠道,我们已经看到OnePlus 8T泄露了几次渲染图以及一些详细规格,但今天,有消息表明一加OnePlus 8T最早将在10月14日推出,这意味着它离发布还有不到一个月的时间。一加目前正在筹划OnePlus 8T的发布会,...
在5G技术、算力、交互能力的加速发展和技术提升之下,商用VR将加快落地,而这将助推整个VR产业规模的发展与突破,分析机构也指VR行业已进入爆发前期。8月末,字节跳动正式收购VR公司Pico,这次投资随即也引来资本市场的关注,随后,在元宇宙概念加持下,VR板块A股迎来普遍上涨行情,金龙机电、华立科技、宝通科技等概念股涨停,歌尔股份股价一度冲到51.2元...

史海拾趣

问答坊 | AI 解惑

如何判断是电压还是电流反馈?

在判断放大电路的反馈组态时,很难判断是电压还是电流反馈,虽然有什么负载短路法,或根据放大的输出与反馈的输入是否在同一个点来判断,但是,有时还是回判断错误,请问有什么更好的判断方法吗?…

查看全部问答∨

我做的PIC下载调试器ICD2.5,拿出来秀下,相当便宜

PIC烧写调试器ICD2,18F4550+16F877A+USB取电,配进口USB线, 淘宝地址http://auction1.taobao.com/auction/item_detail-0db2-f856961a8480fb64ad9297cf42c260f3.jhtml…

查看全部问答∨

ATMEGA8

很奇怪的问题                      我到我朋友那去,写了个简单的循环点灯的程序,编译后烧到芯片里是OK的 然后我把他的设备都拿回去,用我自己电脑上的avr   ...…

查看全部问答∨

关于操作系统中自检问题

本人做了个上电自检的程序,是基于vxworks6.5的, 我把自检函数直接添加在usrconfig.c文件中,usrRoot()函数里,bootrom启动过程中完成了上电自检, 且检测所有硬件(主要是内存和flash)都正常,可是生成操作系统以后(用workbench生成的操作系 ...…

查看全部问答∨

HVQFN33是什么封装,ms只有LPC111x有这种封装……

如题,看到了不解。是和某种别的封装兼容吗?…

查看全部问答∨

自制硬币收音机

摘要: 我们称这个收音机为三个硬币收音机是因为我们使用了三个硬币作为锚点,连接收音机各个部件,这将使我们的制作过程变得极为简单。在这个收音机中我们使用了一个特殊的10晶体管集成电路,使最后做出的收音机效果非常出 ...  我们称这个 ...…

查看全部问答∨

请教STR912KEIL下UCOS移植

楼主:     你好!     买了一个STR912的开发板,发现912的性能还不错,听说又有一个加强版的要出来了,很想把UCOS移上去,请发一个移植模板.谢谢!…

查看全部问答∨

串口DMA发送的问题

u8 buf1[100]; //都初始化0 u8 buf2[100]; //都初始化0 u16 rev;   //中断接收计数 串口发送方式: DMA 串口接收方式: 中断 DMA_InitStructure.DMA_PeripheralBaseAddr = USART1_DR_Base; DMA_InitStructure.DMA_MemoryBaseAdd ...…

查看全部问答∨

【求助】我用c编程,想给某个引脚定义个名称,比如

我想给P3.1定义为data,然后编程时写data=1;P3.1就输出1,我该如何定义? 我写了 #define P3.1 data 不好使啊???…

查看全部问答∨

我用的MSP430F235编的AD转换程序,得到的转换结果很不稳定。希望各位大虾帮帮忙。

程序如下,主要用来调试新焊的板子上430的ad转换功能。 #include\"MSP430x23x.h\"int AD_TEMP = 0;/************************A/D转换初始化*********************/void Init_Adc(void){   P6SEL |= 0x08;      ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved