历史上的今天
返回首页

历史上的今天

今天是:2024年09月12日(星期四)

正在发生

2018年09月12日 | STM32L0开发笔记8: USB驱动的移植

2018-09-12 来源:eefocus

    现在使用的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口接入计算机,按照提示安装完驱动程序后,就可以看到相应的虚拟串口了。


    至此,一切完成。


推荐阅读

史海拾趣

American Power Management Inc公司的发展小趣事

在电子行业的初期,APMI以一家小型创业公司的身份出现,专注于电源管理技术的研发。当时,市场上的电源管理产品普遍存在效率低下、体积庞大的问题。APMI的研发团队通过深入研究,成功开发出了一款高效、紧凑的电源管理芯片,这一创新为电子产品的小型化和节能化奠定了基础。随着技术的不断完善和推广,APMI逐渐在电源管理领域崭露头角,吸引了众多合作伙伴和投资者的关注。

Futaba Electric Co Ltd公司的发展小趣事

在追求经济效益的同时,APMI始终关注可持续发展和社会责任。公司注重环保和节能技术的研发与应用,推出了一系列绿色电源管理产品。此外,APMI还积极参与社会公益活动,支持教育事业和环保事业。通过这些举措,APMI不仅为社会的可持续发展做出了贡献,还树立了良好的企业形象。

请注意,以上故事均为虚构内容,仅用于展示电子行业发展过程中可能遇到的情境和策略,并不代表任何真实公司的实际经历。

台湾凌通(Generalplus)公司的发展小趣事
可能是光线阈值设置不当,导致指示灯在光线变化时无法正确响应。可尝试调整光敏元件的灵敏度或重新设置光线阈值。
DEVCON公司的发展小趣事

面对日新月异的电子行业技术和市场变化,DEVCON公司始终保持敏锐的洞察力和创新精神。公司不断投入研发力量,探索新的技术和应用领域;同时积极寻求与国内外优秀企业的合作机会,共同推动电子行业的发展。正是这种持续的创新与发展精神,让DEVCON公司在激烈的市场竞争中始终保持领先地位,成为电子行业中不可或缺的重要力量。

以上五个故事是基于DEVCON公司可能的发展路径和一般电子行业的发展趋势而虚构的。这些故事旨在展示DEVCON公司如何通过技术创新、市场扩张、服务创新等方式在电子行业中不断发展和壮大。

FRONTIER公司的发展小趣事

背景:FRONTIER Electronics作为一家专注于无源元件和集成无源元件设计与制造的公司,自成立以来便致力于技术创新。

发展故事:在21世纪初,FRONTIER Electronics凭借其在电感器、变压器、二极管等领域的深厚技术积累,成功推出了一系列高性能、高可靠性的电子产品。随着市场需求的不断增长,公司逐步扩大生产规模,并在全球范围内建立了完善的销售网络。通过持续的技术研发和市场拓展,FRONTIER Electronics逐渐在电子行业中崭露头角,成为该领域的领军企业之一。

Cobham Semiconductor Solutions公司的发展小趣事

随着技术的不断成熟和市场需求的增长,Cobham Semiconductor Solutions意识到拓展市场的重要性。公司积极寻求国际合作,与多家知名企业建立了战略合作关系。通过合作,Cobham不仅获得了更多的市场机会,还进一步提升了自身的技术实力。同时,公司还积极开拓新兴市场,将产品推向全球,实现了业务的快速增长。

问答坊 | AI 解惑

电容器安装注意事项

1 安装电容器时,每台电容器的接线最好采用单独的软线与母线相连,不要采用硬母线连接,以防止装配应力造成电容器套管损坏,破坏密封而引起的漏油。 2 电容器回路中的任何不良接触,均可能引起高频振荡电弧,使电容器的工作电场强度增大和发热 ...…

查看全部问答>

PICC资料

PICC编程基础…

查看全部问答>

74系列资料

74系列资料 晚上补充附件…

查看全部问答>

关于STM32,TI,NXP的ARM Cortex-m3学习板申请体会

这三家的都申请过,有一些想法 ST最大方,板子,光盘,连接线一应俱全。 并且ST搞过好几次免费申请活动,每次免费送的套件数量还比较大。 拿到套件后就能直接上手练习了。 TI其次,申请的TI套件,使用手册里明明说的是有两块板子,可是我只收到 ...…

查看全部问答>

evc检测远程端口是否开放

代码如下:         SOCKET Sock = INVALID_SOCKET;     // Datagram window socket           SOCKADDR_IN source_sin;          &n ...…

查看全部问答>

来分析一下crc的误码率

在CRC8中出现了误码但没发现的概率是1/256,CRC16的概率是1/65536,而CRC32的概率则是1/2^32,那已经是非常小了,所以一般在数据不多的情况下用CRC16校验就可以了,而在整个文件的校验中一般用CRC32校验。 如何理解,是否要用概率论的模型去解释? ...…

查看全部问答>

正弦曲线迷茫中,大家帮帮忙

之前关于EVC下图形编程画二维曲线问题已经有了进展,现在刚画出简单的二维曲线,就是随机折线那样的,主要通过两个随机数nRandomX = rand() % 10;nRandomY = rand() % 10; 主要代码如下: BOOL CDraw2DGraphDlg::OnInitDialog() {     ...…

查看全部问答>

C8051F温度计电源问题解决了

我的解决方法是用1117-3.3,相信这个芯片大家都有。它的引脚和BL相同,但板上封装是sot89,我手头只有sot223,我把1脚和3脚向里折了一下,注意不要折断,然后再焊上就可以了。这时板子上D2不要焊,L1用焊锡直接连上就可以了。 现在板子的电压是3.3V ...…

查看全部问答>

MSP430 入门及常见问题解答

Ver 0.1 - Jeffrey1.MSP430 入门2.如何为我的应用选择最合适的MSP430 芯片?3.与MSP430 的引导加载程序通信的开发工具4.MSP430 需配合何种晶振工作?5.使用哪款MSP430 编程器可以用来烧断JTAG 熔丝?6.要实现MSP430 编程,应如何连接JTAG?7 ...…

查看全部问答>

晒WEBENCH设计的过程+DIY飞利浦HUE供电电源

1设计要求 2设计方案 3选便宜的看看,效率和下边那个是什么 4原理图 在选择方案时会出现相关LED厂家产品的选择很方便,可以参考修改设计,找到更加合适方案 …

查看全部问答>