前言

学习stm32 USB接口使用,学会用CUBE工具快速创建USB设备工程及调试,关于usb的相关知道请读者提前准备并学习,当然如果不想深究其中原理的话,跟着本文来操作就可以实现基于USB的设备开发了。需要提示的是,stm32在使用usb接口功能是一般需要在DP引脚上上拉一个1.5K电阻到3.3V(部分MCU内部会上拉)。

示例详解

基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。

本示例所用的最小系统板原理图:

  1. 从本节开始,关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置:
  1. 系统时钟树

  1. USB接口配置

  1. USB设备配置(选择DFU)

  1. 引脚配置

  1. 中断配置(保持默认)

  1. 工程代码

    1. 在main.c中作如下修改:

给工程加入事先准备好的flash.c及flash.h 两个文件,在usbd_dfu_if.c中加入如下代码:

烧录默认代码,连上电脑可在电脑的设备管理器中可以看到人全学输入设备中可以看到stm Device in Dfu mode设备:

安装好ST在DFU软件(可从文中给定资料下载方法中下载,也可以自行去官网下载),安装过程就不讲了,下面直接讲使用,首先在安装文件夹下找到 DfuFileMgr.exe 运行它用于生成下载所用的 .dfu 文件,具体过程如下:

同样在安装文件夹下找到DfuSeDemo.exe,运行该工具,按下面图中所示步骤操作:

如下图便完成对指定flash(0x08004000)空间的数据编写,实现了基本的DFU功能,要想真正实现DFU功能,还需保证所升级的数据内容在指令的内存空间能被正确执行。

好了,本节内容就先到此,在此我们学习了USB DFU设备的基本使用情况,文中我们将芯片内部flash空间分成三个区,第一个是0-16k ,用于存放Bootloader代码,也就是本文工程代码,第二个是16-56k区间,用于存放app程序,也就是写进去的数据内容,第三个是56-64K区间,未定义其功能。本节主要讲如何用DFU接口,至于怎么编写APP程序,我们到后面章节再讲。

OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,每天都会有技术干货推出!!

文中资料及源码下载,在公众号里给十三发消息:

下载|STM32基础系列教程28

关注十三公众号

STM32 基础系列教程 28 - USB_DFU相关推荐

  1. STM32 基础系列教程 50 – MbedTls

    前言 mbed TLS(以前称为PolarSSL)是TLS和SSL协议的实现,并且需要相应的加密算法和支持代码.这是双重许可与Apache许可证 2.0版(与GPLv2许可也可).网站上指出,mbed ...

  2. STM32 基础系列教程 49 – Jansson

    前言 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全 ...

  3. STM32 基础系列教程 48 – CJSON

    前言 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全 ...

  4. STM32 基础系列教程 47 - MD5

    前言 MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信 ...

  5. STM32 基础系列教程 46 – RNG

    前言 随机数发生器(RNG)是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的随机数.STM32F407自带RNG ,本节将给大演示STM32F4系列MCU中的RNG的使用.用 ...

  6. STM32 基础系列教程 45 - FSMC_LCD_Touch

    前言 上一节我们完成了用 STM32F4的 FSMC接口来控制 TFTLCD的显示的操作,其实正点原子的探索者F4开发板带的屏幕支持触摸操作,笔者用的是4.3寸的电容触摸屏,本节我们继续实验,来完成基 ...

  7. STM32 基础系列教程 44 - FSMC_LCD

    前言 TFT-LCD 即薄膜晶体管液晶显示器.其英文全称为: Thin Film Transistor-Liquid Crystal Display. TFT-LCD 与无源 TN-LCD. STN- ...

  8. STM32 基础系列教程 43 – SRAM

    前言 STM32F407ZGT6 自带了 192K 字节的 SRAM,对一般应用来说,已经足够了,不过在一些对内存要求高的场合, 比如跑算法或者跑 GUI 等,自带的这些内存就不够用了.比如跑算法或者 ...

  9. STM32 基础系列教程 42 - SDMMC+Fatfs

    前言 本节我们将基于42讲 "STM32 基础系列教程 41 - SDMMC" 的基础来实现基于SD卡文件系统的文件操作. 示例详解 基于硬件平台: 正点源子的stm32f4 探索 ...

最新文章

  1. ASP.NET 应用中大文件上传研究
  2. 有了这篇 Shell 脚本实践指南,同事对我“刮目相看”!
  3. MapReduce开发总结
  4. Android之工程目录介绍
  5. iOS进阶之底层原理-锁、synchronized
  6. 行人跟踪python_使用Python为初学者构建AI汽车和行人跟踪
  7. System.out.println与System.err.println的区别
  8. 朱佳俊的无人车公司Nuro又有新进展:要给全美最大生鲜超市Kroger送货
  9. Java课堂作业03
  10. 微软总部首席测试专家做客中关村图书大厦“说法”
  11. Android开发进阶-接入Google Admob
  12. 有氧运动存在哪些误区
  13. 计算机组成原理语言方框图,计算机组成原理3---方框图语言
  14. Xms Xmx PermSize MaxPermSize的含义
  15. 平板一定要用原装电容笔吗?十大电容笔知名品牌
  16. 【详细说明】二代身份证号码的组成结构(含校验码算法与行政区划代码)
  17. 谷歌商店应用上架最新流程!Googleplay 上架流程(2023版)
  18. Net Core DocXCore 实现word模板导出
  19. 实习的时候拿C++写的游戏《星际夺宝》
  20. 一文弄懂软件发布生命周期中各阶段名称及代表含义

热门文章

  1. Angular26 ng-content和ng-container、投影的使用
  2. shell-extension
  3. python文件读写2
  4. UA MATH567 高维统计 专题0 为什么需要高维统计理论?——理解稀疏向量与hard-threshold
  5. 摄像机的上方向(UpDirection)- 使用WPF演示
  6. 使用Bochs调试Linux内核初级入门
  7. java 两行代码解析json文件
  8. PTA 1067 Sort with Swap(0, i) (25 分)(思维)
  9. 译:Spring Boot 自动伸缩
  10. CIR,CBS,EBS,PIR,PBS傻傻分不清楚?看这里!—-揭秘令牌桶