📄 initial.c
字号:
void P_HWInit(void)
{
// P0 = 0xFF; //初始化I/O口
// P1 = 0xFF;
// P2 = 0xFF;
// P3 = 0xFF;
MCU_D12CS = 0; //片选
D12SUSPD = 0; //让器件不再挂起
D12_COMMAND = 0xd0; //使能地址0
D12_DATA = 0x80;
D12_COMMAND = 0xd8; //端点使能
D12_DATA = 0x01;
D12_COMMAND = 0x00; //选择端点
D12_COMMAND = 0xf2; //清除端点缓冲区
MCU_D12CS=1;
IT0 = 0; //初始化中断
// IE=0x01;
// XICON=0x00;
EX0 = 1;
PX0 = 1;
EA = 1;
}
void P_DataInit(void)
{
}
//断开USB总线连接
void disconnect_USB(void)
{
D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M);
}
//连接到USB总线
void connect_USB(void)
{
DISABLE;
B_D12_Lb = 0;
B_CommFlg = 0;
ENABLE;
D12_SetDMA(0x00); //设置D12工作模式
D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT, D12_SETTOONE | D12_CLOCK_12M);
// SerialTran(0xa5);
// delay(2);
}
//USB总线重新连接(先断开,再连接)子程序
void reconnect_USB(void)
{
unsigned long clk_cnt = 0x9000;
// SerialTran(0xcc);
// delay(2);
D12SUSPD = 0;
disconnect_USB();
while(clk_cnt--);
// D12_COMMAND = 0xd0;
// D12_DATA = 0x80;
// D12_COMMAND = 0xd8;
// D12_DATA = 0x01;
connect_USB();
}
//setup packet deal
void control_handler(void)
{
unsigned char type, req;
type = ControlData.DeviceRequest.bmRequestType & USB_REQUEST_TYPE_MASK;
req = ControlData.DeviceRequest.bRequest & USB_REQUEST_MASK;
if(type == USB_STANDARD_REQUEST) //标准请求
{
(*StandardDeviceRequest[req])();
}
else if (type == USB_VENDOR_REQUEST) //厂商请求
{
(*VendorDeviceRequest[req])();
}
else stall_ep0();
}
void usbserve(void)
{
if (GETBIT(B_D12_Lb,SETUP))
{
// SerialTran(B_D12_Lb);
// delay(2);
DISABLE;
CLRBIT(B_D12_Lb,SETUP);
control_handler(); //设置包控制处理
// SerialTran(B_D12_Lb);
// delay(2);
ENABLE;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -