STM32 USB的DFU功能

发布者:SerendipityGlow最新更新时间:2017-09-11 来源: eefocus关键字:STM32  USB  DFU功能 手机看文章 扫描二维码
随时随地手机看文章

最近用到USB,后来发现了STM32F103可以程序实现DFU,在网上搜到代码对比官方文件发现是大容量FLASH的DFU,我用的是STM32F103C8T6,属于中容量。自己对着官方例程修改了网友的代码,改成中容量后可以使用DFU更新固件。修改过程中要注意几点

1.在库函数“void SystemInit (void)”结尾处添加向量表偏移量,开全局中断(在dfu中关闭了中断,在此处打开)。如下图


2.修改MDK app程序偏移量,如下图:(预留了20K FLASH给USB DFU使用,所以APP代码起始地址0x8005000)


3.APP修改完成后,需要在DFU代码中修改APP跳转地址,如下图:



修改完成后,使用官方的“DfuSe_Demo_V3.0_Setup.exe”软件下载即可。


应用环境:下位机-STM32F103C8T6

  DFU代码长度16K

APP代码长度27K(基于USB-HID类的发卡器)

上位机-win7 旗舰版64位

DfuSe_Demo_V3.0_Setup.exe


关键字:STM32  USB  DFU功能 引用地址:STM32 USB的DFU功能

上一篇:STM32 SD bootloader实现
下一篇:STM32F4 RTC的使用

推荐阅读最新更新时间:2024-03-16 15:36

STM32启动文件初探之startup_stm32f10x_hd.s(Reset_Handler函数)
该文件主要实现目的: 设置初始SP 设置初始PC=Reset_Handler 设置向量表入口地址,并初始化向量表 调用SystemInit,把系统时钟配制成72M,SystemInit在库文件system_stm32f10.c定义 调转到标号_main,最终来到C程序文件 ; Reset handler Reset_Handler PROC EXPORT Reset_Handler IMPORT __main IMPORT SystemInit LDR R0, =SystemInit BLX R0
[嵌入式]
STM32的ADC1+ADC3 16路采集 DMA传输 数据不错位
1) ADC多通道采集:(多通道采集必须用扫描模式,扫描模式时规则组的通道共用一个寄存器,so必须用DMA传输;为防止数据错位,不能用连续模式,而应在查询或中断中先关闭ADC转换,再开启ADC转换)so应采用扫描、非连续的方式、DMA正常模式,DMA的EOC中断或查询; 上述的配置下,ADC运行流程如下: 每个规则通道采集之后,每个ADC_DR会更新,这个更新会启动一次DMA,同时会产生EOC,然后DMA会传输此数据,DMA的传输会清除EOC标志,然后DMA的传输量计数器--,so,每一组规则通道转换完成后也不会产生EOC(详情看英文版STM32手册V15版本-Page220,而非V9版本),so利用这个EOC产生ADC中断或查询
[单片机]
USB软件狗的设计及反破解技术
    摘要: 介绍了软件狗技术的发展,提出了一种改进的低成本USB软件狗的设计方案,分析了常见的加解密技术,并据此提出了一系列反破解措施。     关键词: USB 软件狗 加解密技术 反破解 1 软件狗技术 近年来,软件狗技术在保护软件开发者利益、防止软件盗版方面起了很大作用。软件狗技术属于硬加密技术,它具有加密强度大、可靠性高等特点,已广泛应用于计算机软件保护。软件狗技术的发展经历了多次更新换代。第一代软件狗通过短接并行口的某两根线,或者再加上些电阻、电容、二极管等实现;第二代软件狗采用逻辑门电路跨接在开行口上,并采取适当的措施尽量避免软件狗和打印机之间的相互干扰;第三代软件狗的核心芯片是EEPROM
[应用]
STM32之关于USART以及波特率的一些思考
一、UART与USART?   UART:通用异步收发器    USART:通用同步和异步收发器   同步:发送端发送数据后,接收端回应后才发下一个数据包,是为阻塞模式   异步:发送端发送收据后,不需要等待接收端回应,接着发送下一个数据包,是为非阻塞模式   半双工:允许数据在两个方向上传输,但是某一时间,只允许数据在一个方向上传输   全双工:允许数据同时在两个方向上传输   SPI为同步全双工通信、IIC为同步半双工通信,UART为异步全双工通信、USART为同步或异步通信   UART数据格式:          数据帧格式:开始位、数据位、奇偶校验位、停止位       起始位:开始发送一个字节数据,数据线为逻辑0状态
[单片机]
<font color='red'>STM32</font>之关于USART以及波特率的一些思考
stm32使用MDK开发中的一些常见问题
1. 解决:keil报错invalid redeclaration of type name s32 答案:一般在Target Options C/C++选项卡里的Include Paths 里要添加几个固定的头文件路径, ..CMSISCM3CoreSupport ..CMSISCM3DeviceSupportSTSTM32F10x ..STM32F10x_StdPeriph_Driverinc ..userinc 是头文件路径问题,KEIL只要有一个头文件找不到,就会自已从本身的INC文件夹找头文件,结果就会出现以上错提示。把老版的头文件改为STM32F10X.H. 新的库已经把.CONF.MAP.TYPE
[单片机]
STM32 IO寄存器操作
STM32的IO端口有八种模式: 1、输入浮空 5、开漏输出 2、输入上拉 6、推挽输出 3、输入下拉 7、推挽复用 4、模拟输入 8、开漏复用 每个IO口都有七个寄存器来控制: CHL、CHR :端口配置寄存器(32位) IDR、ODR :数据寄存器(32位) BSRR :置位/复位寄存器(32位) BRR :复位寄存器(16位) LCKR :所存寄存器(32位) 其中,比较常用的IO端口寄存器为CRL,CRH,IDR,ODR 低配置寄存器CRL: 该寄存器复位值为0x4444 4444。即
[单片机]
<font color='red'>STM32</font> IO寄存器操作
STM32单片机的ADC多通道采样
一 单通道采样 参考资料: 《STM32库开发实战指南》 原理性质的东西还是少讲,因为上面那本书里面讲解的很详细了,直接来看硬件电路图 这里使用的是3362电位器(10K),即用STM32来测量PB0和GND两端的电压,这样的电路设计比较简单也容易理解,但是存在一定的弊端,下面给出《STM32库开发实战指南》上面配套的硬件电路图 如果设计电路图的话,可以参考这种思路。 我的收获 1 引脚初始化的时候需要注意 每一个ADC通道都对应一个GPIO引脚,看图中的ADC123_IN10,表示这个引脚(PC0)可以配置为ADC1的通道10,或者是ADC2的通道10,或者是ADC3的通道10,这个地方非常重要,涉及到后面ADC初
[单片机]
<font color='red'>STM32</font>单片机的ADC多通道采样
如何有效地使用串口通讯接收数据
引言 在使用stm32或者其他单片机的时候,会经常使用到串口通讯,那么如何有效地接收数据呢?假如这段数据是不定长的有如何高效接收呢? 同学A:数据来了就会进入串口中断,在中断中读取数据就行了! 中断就是打断程序正常运行,怎么能保证高效呢?经常把主程序打断,主程序还要不要运行了? 同学B:串口可以配置成用DMA的方式接收数据,等接收完毕就可以去读取了! 这个同学是对的,我们可以使用DMA去接收数据,不过DMA需要定长才能产生接收中断,如何接收不定长的数据呢? DMA简介 题外话:其实,上面的问题是很有必要思考一下的,不断思考,才能进步。 什么是DMA DMA :全称Direct Memory Access,即直接存储器访问
[单片机]
如何有效地使用串口通讯接收数据
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved