STM32开发笔记21: USB驱动的移植

2019-07-16来源: eefocus关键字:STM32  USB驱动  移植

单片机型号:STM32L053R8T6


    现在使用的STM32L053R8T6单片机带有USB接口,原先一直使用UART转USB芯片来完成USB功能的支持,现在这款单片机带了就希望使用以下。由于已经建立了自己的工程目录,再重新使用STM32CubeMX生成的工程文件,重新建立是不显示的,所以本文探索将USB驱动文件移植到自己项目中的方法,我使用的是USB的CDCD类,步骤如下:


    1、使用STM32CubeMX使能USB,如下图所示:

    2、设置时钟,USB需要48M时钟,使用内部和外部均可,我这里使用外部时钟。

    3、生成工程文件。


    4、在自己的工程目录中加入如下图所示的2个文件,如果此2个文件不存在,则从新生成的工程目录中复制即可(包含头文件)。



    5、在自己的工程目录中加入以下4个文件,这4个文件需从新生成的工程目录中复制(包含头文件)。



    6、在自己的工程目录中加入或更新以下文件,USB开头的文件需要从新生成的工程目录中复制(包含头文件),其余文件需要更新。



    7、如果使用C++进行程序设计,按照STM32L0开发笔记4: 解决使用--CPP11编译USB驱动报错问题对代码进行调整。


    8、如果希望分层次编译,可按照STM32L0开发笔记3: 使用静态库加快Keil编译速度方法,生成静态库。


    9、更新时钟设置程序,一定要更新。


    10、在main.cpp中,包含usb_device.h文件,并调用MX_USB_DEVICE_Init函数初始化USB,样例程序如下:


#include "include.h"

#include "usb_device.h"

 

CTarget Target;

 

boolean bMilliSecond_1000 = FALSE;

boolean bMilliSecond_100 = FALSE;

 

int main(void)

{

uint8_t temp[3] = {0xC1, 0xC1, 0xC1};

MX_USB_DEVICE_Init();

  while (1)

  {

if (bMilliSecond_1000 == TRUE)

{

bMilliSecond_1000 = FALSE;

Target.HAL.LED.Turn();

Target.HAL.TestUart1.SendData(temp, 3);

}

if (bMilliSecond_100 == TRUE)

{

bMilliSecond_100 = FALSE;

Target.HAL.E0.Turn();

Target.HAL.E1.Turn();

Target.HAL.E2.Turn();

Target.HAL.E3.Turn();

}

if (Target.HAL.TestUart1.IsReceivedData() == TRUE)

{

Target.HAL.TestUart2.SendData(Target.HAL.TestUart1.u8_Buffer, Target.HAL.TestUart1.u16_Number);

}

  }

}

    11、对文件进行编译,下载程序。


    12、硬件USB的USB_DP引脚需要1.5K上拉,务必注意,我就没有上拉,后来在PCB上飞的线。


    13、进入ST的官网,搜索32102,下载CDC驱动。



    14、解压缩后,根据自己的操作系统,选择相应的驱动库进行安装。


    15、如果一切正常,可以将设备通过USB口接入计算机,按照提示安装完驱动程序后,就可以看到相应的虚拟串口了。



    至此,一切完成。


关键字:STM32  USB驱动  移植

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic468089.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32开发笔记22: 手动添加驱动文件
下一篇:STM32开发笔记20: STM32L053R8T6的keil配置

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

第8章 自己写库-构建库函数雏形—零死角玩转STM32-F429系列

本章参考资料:《STM32F4xx 中文参考手册》、《STM32F429规格书》虽然我们上面用寄存器点亮了 LED,乍看一下好像代码也很简单,但是我们别侥幸以后就可以一直用寄存器开发。在用寄存器点亮 LED 的时候,我们会发现 STM32 的寄存器都是 32 位的,每次配置的时候都要对照着《STM32F4xx参考手册》中寄存器的说明,然后根据说明对每个控制的寄存器位写入特定参数,因此在配置的时候非常容易出错,而且代码还很不好理解,不便于维护。所以学习 STM32 最好的方法是用软件库,然后在软件库的基础上了解底层,学习遍所有寄存器。8.1 什么是STM32函数库以上所说的软件库是指"STM32标准函数库",它是
发表于 2019-09-18
第8章 自己写库-构建库函数雏形—零死角玩转STM32-F429系列

第9章 初识STM32固件库—零死角玩转STM32-F429系列

本章参考资料:《STM32F4xx参考手册》、《STM32F4xx规格书》、《Cortex-M3权威指南》, STM32标准库帮助文档:《stm32f4xx_dsp_stdperiph_lib_um.chm》。在上一章中,我们构建了几个控制GPIO外设的函数,算是实现了函数库的雏形,但GPIO还有很多功能函数我们没有实现,而且STM32芯片不仅仅只有GPIO这一个外设。如果我们想要亲自完成这个函数库,工作量是非常巨大的。ST公司提供的标准软件库,包含了STM32芯片所有寄存器的控制操作,我们直接学习如何使用ST标准库,会极大地方便控制STM32芯片。9.1 CMSIS标准及库层次关系因为基于Cortex系列芯片采用的内核都是相同
发表于 2019-09-18
第9章 初识STM32固件库—零死角玩转STM32-F429系列

第14章 启动文件详解—零死角玩转STM32-F429系列

本章参考资料《STM32F4xx 中文参考手册》第十章-中断和事件:表 46. STM32F42xxx 和 STM32F43xxx 的向量表;MDK中的帮助手册—ARM Development Tools:用来查询ARM的汇编指令和编译器相关的指令。14.1 启动文件简介启动文件由汇编编写,是系统上电复位后第一个执行的程序。主要做了以下工作:1、初始化堆栈指针SP=_initial_sp2、初始化PC指针=Reset_Handler3、初始化中断向量表4、配置系统时钟5、调用C库函数_main初始化用户堆栈,从而最终调用main函数去到C的世界14.2 查找ARM汇编指令在讲解启动代码的时候,会涉及到ARM的汇编指令
发表于 2019-09-18
第14章 启动文件详解—零死角玩转STM32-F429系列

第15章 RCC—使用HSE/HSI配置时钟—零死角玩转STM32-F429系列

本章参考资料:《STM32F4xx中文参考手册》RCC章节。学习本章时,配合《STM32F4xx中文参考手册》RCC章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。RCC :reset clock control  复位和时钟控制器。本章我们主要讲解时钟部分,特别是要着重理解时钟树,理解了时钟树,F429的一切时钟的来龙去脉都会了如指掌。1.1 RCC主要作用—时钟部分设置系统时钟SYSCLK、设置AHB分频因子(决定HCLK等于多少)、设置APB2分频因子(决定PCLK2等于多少)、设置APB1分频因子(决定PCLK1等于多少)、设置各个外设的分频因子;控制AHB、APB2和APB1这三条总线时钟的开启、控制
发表于 2019-09-18
第15章 RCC—使用HSE/HSI配置时钟—零死角玩转STM32-F429系列

第16章 STM32中断应用概览—零死角玩转STM32-F429系列

本章参考资料《STM32F4xx 中文参考手册》第十章-中断和事件、《 ARM Cortex™-M4F 技术参考手册》-4.3 章节:NVIC和4.4章节:SCB—4.4.5的AIRCR。STM32中断非常强大,每个外设都可以产生中断,所以中断的讲解放在哪一个外设里面去讲都不合适,这里单独抽出一章来做一个总结性的介绍,这样在其他章节涉及到中断部分的知识我们就不用费很大的篇幅去讲解,只要示意性带过即可。本章如无特别说明,异常就是中断,中断就是异常,请不要刻意钻牛角尖较劲。16.1 异常类型F429在内核水平上搭载了一个异常响应系统,支持为数众多的系统异常和外部中断。其中系统异常有10个,外部中断有91个。除了个别异常的优先级被定死外
发表于 2019-09-18
第16章 STM32中断应用概览—零死角玩转STM32-F429系列

第17章 EXTI—外部中断/事件控制器—零死角玩转STM32-F429系列

本章参考资料:《STM32F4xx中文参考手册》系统配置控制器以及中断和事件章节。上一章节我们已经详细介绍了NVIC,对STM32F4xx中断管理系统有个全局的了解,我们这章的内容是NVIC的实例应用,也是STM32F4xx控制器非常重要的一个资源。学习本章时,配合《STM32F4xx中文参考手册》系统配置控制器以及中断和事件章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。特别说明,本书内容是以STM32F42xxx系列控制器资源讲解。17.1 EXTI简介外部中断/事件控制器(EXTI)管理了控制器的23个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI可以实现
发表于 2019-09-18
第17章 EXTI—外部中断/事件控制器—零死角玩转STM32-F429系列

小广播

何立民专栏

单片机及嵌入式宝典

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

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