下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、STM32入门利用ST提供的USB例程实现USBIAP功厶匕冃能我们知道ST推出的Cortex-M3平台STM32内部有两个Flash区域,一是SystemFlash,ST官方保留的一个区域,用于存放IAP代码。该区域不对用户开放,仅提供UART的通讯接口用于IAP升级;另一个区域是UserFlash,这一部分是供用户自由使用的。STM32自带USB2.0Device接口,如果需要通过USB接口来实现IAP功能需要如何做呢?这里介绍如何利用STSTM32xxUSBDevelopmentKit提供的DFU代码来实现上述功能。我用STM3210EVB来演示这个功能。阅读前请下下载下列代码压缩包和应
2、用软件:1、STM3210B-EVALdemonstrationsoftwarev1.1.zipSTM3210B-EVALdemonstrationsoftwarev1.1.zip(文件大小:2.15M)ST官方的下载路径:HYPERLINK /sto/stonline/products/support/micro/files/um0435.zip2、STM32F10 xxxUSBdeveloperkitv1.0.zipSTM32F10 xxxUSBdeveloperkitv1.0.zip(文件大小:461K)ST官方的下载路径:HYPERLINK /sto/stonline/products
3、/support/micro/files/um0424.zip3、DfuSeUSBDeviceFirmwareUpgradev2.2.zipDfuSeUSBDeviceFirmwareUpgradev2.2.zip(文件大小:7.85M)ST官方的下载路径:HYPERLINK /st/stonline/products/support/micro/files/um0412.zip上述文档对于的用户参考手册,请自行到STMCU网站下载。HYPERLINK http:/www.st.eom/mcu/familiesdocs-110.html%23Applicatihttp:/www.st.eom/
4、mcu/familiesdocs-110.html#Application%20Note下列步骤将介绍如何通过ST官方的USB升级代码实现程序的下载更新的功能(IAP)。1、打开STM3210B-EVALdemonstrationsoftware压缩包,在STM3210B-EVALdemonstrationsoftwareDemosource下打开main.c文件,找至UvoidInterruptConfig(void)函数/*SettheVectorTablebaseaddressat0 x08000000*/NVIC_SetVectorTable(NVIC_VectTab_FLASH,0
5、x00);这里我们需要修改代码的中断矢量起始地址,这样做的目的是为了处理IAP代码在Flash存放的区域与ApplicationCode部分的存放空间不会发生地址冲突。这里我们假设IAP存放在UserFlash的0 x080000000 x08003FFF区域,Applicationcode存放在UserFlash的0 x080040000 x0801FFFF区域。因为Applicationcode的开始地址是由0 x08004000开始,这样我们需要为应用代码的中断向量地址做一个重映射。因此我们修改该代码为:/*SettheVectorTablebaseaddressat0 x0800400
6、0*/NVIC_SetVectorTable(NVIC_VectTab_FLASH,0 x4000);请注意这里NVIC_SetVectorTable函数的型参送入的是相对偏移地址,而不是绝对地址;2、在STM3210B-EVALdemonstrationsoftwareDemoprojectEWARM下找到lnkarm_flash.xcl文件,在XCL文件中找到下面的配置,该配置用于定制应用代码在Flash区域的存放空间和代码运行是RAM可以提供的空间。/CodememoryinFLASH-DR0MSTART=0 x8000000-DR0MEND=0 x803FFFF/DatainRAM-D
7、RAMSTART=0 x20000000-DRAMEND=0 x20004FFF由于我们的目标应用代码将是在0 x08004000区域运行,因此我们修改为:/CodememoryinFLASH-DR0MSTART=0 x8004000-DROMEND=0 x801FFFF/DatainRAM-DRAMSTART=0 x20000000-DRAMEND=0 x20004FFF在编译的时候请确保ProjectOptionsLinkerConfig标签下的链接命令文件选择的是上述Inkarm_flash.xcl文件;3、应用部分改好,现在我们修改USB固件升级部分的代码,打开STM32F10XxxU
8、SBdeveloperkit开发包。4、在开发包下面找到STM32F10 xUSBLibUSBLibdemosDevice_Firmware_Upgrade例程,该例程是一个在STM32F10 xx系列MCU上实现运行在UserFlash区域的IAP自升级代码,通过STM32自身提供的USB接口实现。在STM32F10 xUSBLibUSBLibdemosDevice_Firmware_Upgradesource路径下找到main.c文件,在56行:if(DFU_Button_Read()!=0 x00)/*Testifusercodeisprogrammedstartingfromaddre
9、ss0 x8003000*/if(*(vu32*)0 x8003000)&0 x2FFF0000)=0 x20000000)/*Jumptouserapplication*/JumpAddress=*(vu32*)(ApplicationAddress+4);Jump_To_Application=(pFunction)JumpAddress;/*InitializeuserapplicationsStackPointer*/_MSR_MSP(*(vu32*)ApplicationAddress);Jump_To_Application();/*OtherwiseentersDFUmodetoallowusertoprogramhisapplication*/这段代码的功能是对应用部分的代码开始地址做判断,这里的地址与我们之前的步骤1、2都是对应的。同样这个代码做如下更改:/*Testifusercodeisprogrammedstartingfromaddress0 x8004000*/if(*(vu32*)0 x8004000)&0 x2FFF0000)=0 x20000000)5、hw_config.h中定义:#defineApplicationAddress0 x080
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024至2030年中国电路板卡座行业投资前景及策略咨询研究报告
- 2024至2030年中国搅拌/砂磨/分散多用机行业投资前景及策略咨询研究报告
- 建立XX县区人口和计划生育管理服务新机制工作汇报
- 2024至2030年中国通信机柜行业投资前景及策略咨询研究报告
- 2024至2030年中国茶叶机行业投资前景及策略咨询研究报告
- 2024至2030年中国络筒机清洁机行业投资前景及策略咨询研究报告
- 夜雨寄北复习课件
- 2024至2030年陶瓷自动酒座项目投资价值分析报告
- 2024至2030年锦棉项目投资价值分析报告
- 2024至2030年远程会议系统项目投资价值分析报告
- 电子课件《英语(第一册)(第三版)》A013820英语第一册第三版Unit4
- 健康饮食有机蔬菜宣传画册模板课件
- 主谓一致公开课课件(基础课堂)
- 幼儿园小班绘本:《一步一步_走啊走》 PPT课件
- 疯狂动物城(英语版)(课堂PPT)
- 酒店住宿水单01
- 染厂跟单员工作流程
- 北宋铜钱监与版式的对应关系初探
- 振冲碎石桩软基处理施工工艺
- 化工厂防火防爆设计
- D级GPS控制网的布设与精度分析
评论
0/150
提交评论