写一段代码将AT90USB1286usb设置为和teensy++2.0一样的设置
时间: 2023-12-14 12:37:51 浏览: 103
这里提供一个AT90USB1286的USB设置参考代码,可以实现类似于Teensy++ 2.0的USB设置。
```c
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <avr/wdt.h>
#include <avr/eeprom.h>
#include <util/delay.h>
#include "usbdrv.h"
// USB设备描述符
const PROGMEM char usbHidReportDescriptor[22] = {
0x06, 0x00, 0xff, // Usage Page (Vendor Defined)
0x09, 0x01, // Usage (Vendor Usage 1)
0xa1, 0x01, // Collection (Application)
0x75, 0x08, // Report Size (8)
0x95, 0x40, // Report Count (64)
0x15, 0x00, // Logical Minimum (0)
0x26, 0xff, 0x00, // Logical Maximum (255)
0x09, 0x02, // Usage (Vendor Usage 2)
0x81, 0x02, // Input (Data,Var,Abs)
0xc0 // End Collection
};
// USB设备信息
USB_PUBLIC usbMsgLen_t usbFunctionSetup(uchar data[8]) {
usbRequest_t *rq = (void *)data;
if (rq->bmRequestType == 0x80 && rq->bRequest == 6 && rq->wValue.bytes[1] == 0xff) {
usbMsgPtr = (usbMsgPtr_t)usbHidReportDescriptor;
return sizeof(usbHidReportDescriptor);
}
return 0;
}
int main() {
// USB初始化
usbInit();
usbDeviceDisconnect();
_delay_ms(250);
usbDeviceConnect();
sei();
// 主循环
while (1) {
usbPoll();
}
return 0;
}
```
需要注意的是,这里只提供了USB设置的参考代码,如果需要实现完整的Teensy++ 2.0功能,还需要添加其他的代码。同时,根据具体的需求,可能需要对代码进行适当的调整。
阅读全文