📄 main.c
字号:
#include "CHAP_9.H"
#include "d12.h"
#include "uart.h"
#include "ini.h"
#include "mytype.h"
#include "ISR.H"
#define USB_INT P3_2
extern EPPFLAGS bEPPflags;
CONTROL_XFER ControlData;
code void (*StandardDeviceRequest[])(void) =
{
get_status,
clear_feature,
reserved,
set_feature,
reserved,
set_address,
get_descriptor,
reserved,
get_configuration,
set_configuration,
get_interface,
set_interface,
reserved,
reserved,
reserved,
reserved
};
//用户厂商请求
code void (*VendorDeviceRequest[])(void) =
{
reserved,
reserved,
reserved,
reserved,
reserved,
reserved,
reserved,
reserved,
reserved,
reserved,
reserved,
reserved,
reserved,
reserved,
reserved,
reserved
};
/*void help_devreq(unsigned char typ, unsigned char req)
{
typ >>= 5;
if(typ == USB_STANDARD_REQUEST) {
}
else {
if(bEPPflags.bits.verbose)
printf("Request Type = %s, bRequest = 0x%bx.\n", _NAME_USB_REQUEST_TYPE[typ],
req);
}
}*/
//请求处理子程序
void control_handler()
{
unsigned char type, req;
type = ControlData.DeviceRequest.bmRequestType & USB_REQUEST_TYPE_MASK;
req = ControlData.DeviceRequest.bRequest & USB_REQUEST_MASK;
Prints("\r\nbmRequestType=");
PrintShortIntHex(ControlData.DeviceRequest.bmRequestType);
Prints("\r\nbRequest=");
PrintShortIntHex(ControlData.DeviceRequest.bRequest);
//help_devreq(type, req); //显示设备请求
if (type == USB_STANDARD_REQUEST)
(*StandardDeviceRequest[req])();//调用标准请求
else if (type == USB_VENDOR_REQUEST)
(*VendorDeviceRequest[req])();//调用厂商请求
else
stall_ep0();
}
void main(void)
{
InitUART(); //串口初始化
Printc(0x0c); //清屏
Printc(0x0c);
Prints("系统启动.\r\n");
disconnect_usb(); //断开USB连接
delay(1000); //延迟
init_usb(); //初始化USB芯片
bEPPflags.value = 0;
connect_usb(); //连接USB
while(1)
{
if(!USB_INT)
{
Prints("interrupt");
fn_usb_isr();
}
if(bEPPflags.bits.setup_packet)
{
bEPPflags.bits.setup_packet=0;
control_handler();
}
if(bEPPflags.bits.bus_reset)
{
EA=0;
bEPPflags.bits.bus_reset=0;
EA=1;
}
if(bEPPflags.bits.suspend)
{
EA=0;
bEPPflags.bits.suspend=0;
EA=1;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -