lpc2378_lpc2378厂家_lpc1788

电脑杂谈  发布时间:2017-03-10 16:12:59  来源:网络整理

前段时间买了块D12+51的开发板来玩,现在公司要求用ARM来做一个USB项目。原来用D12也就做了个LED流水灯,还是HID设备的,现在不能满足要求,你总不能显示公司的设备时,还搞个“人体工学设备”。于是把开发流程又理了一遍,这里是第一部分,讲固件的编写。

使用的MCU是NXP的ARM,LPC2378,自带了USB模块,关于2378的寄存器定义什么的,大家去看手册,ZLG网上还有中文版的下。

固件编写其实不用从头开始,我一般是拿官网的例子改改,就变成自己的代码了,这个USB的也是一样,X:/Keil/ARM/Boards/Keil/MCB2300 路径下有多个2300开发板的例子,我拿USBMem的例子改了一下,因为一会我要用的是BULK传输。

1、打开/USBMem下的Memory.Uv2,查看项目的target Option ,你会发现是LPC2368,这个可以改为你想要的芯片类型,只要USB模块相同的系列都行。

2、查看下项目文件列表,如图1所示,删除不需要的文件,增加main.c和USB_trans.c 2个文件,如图2所示

图1 图2

usbcfg.h——usb配置文件

usbcore.c——USB内核文件

usbdesc.c——USB Descriptors

usbhw.c——USB Hardware Layer Module for Philips LPC23xx/24xx

usbuser.c——USB Custom User Module

2.代码修改

(1)usbcfg.h :

这个文件是定义USB相关代码的宏,其他文件根据这些宏来判断某个函数或某个代码段是否需要编译,这样可以最小的减少代码量。

我只定义了以下事件(函数),也可以根据设计需要定义

#define USB_POWER_EVENT 0

#define USB_RESET_EVENT 1

#define USB_SUSPEND_EVENT 0

#define USB_RESUME_EVENT 0

#define USB_WAKEUP_EVENT 0

#define USB_SOF_EVENT 0

#define USB_ERROR_EVENT 0

#define USB_EP_EVENT 0x0005 //该宏使能了2个端口处理函数,USB_EndPoint0和USB_EndPoint2,

#define USB_CONFIGURE_EVENT 1

#define USB_INTERFACE_EVENT 0

#define USB_FEATURE_EVENT 0

以下宏全部设为0,因为我们是自定义的设备,不是以下类别

#define USB_CLASS0

#define USB_HID 0

#define USB_HID_IF_NUM 0

#define USB_MSC 0

#define USB_MSC_IF_NUM 0

#define USB_AUDIO 0

#define USB_ADC_CIF_NUM 0

#define USB_ADC_SIF1_NUM 0

#define USB_ADC_SIF2_NUM 0

#define USB_CDC 0

#define USB_CDC_CIF_NUM 0

#define USB_CDC_DIF_NUM 0

#define USB_CDC_BUFSIZE 0

(2)usbcore.c——USB内核文件


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-36858-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...