📄 initial.c
字号:
void P_HWInit(void)
{
P0 = 0xFF; //初始化I/O口
P1 = 0xFF;
P2 = 0xFF;
P3 = 0xFF;
IT0 = 0; //初始化中断
EX0 = 1;
PX0 = 0;
EA = 1;
D12SUSPD = 0; //让器件不再挂起
MCU_D12CS = 0x0; //片选
}
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(0x0); //设置D12工作模式
D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT, D12_SETTOONE | D12_CLOCK_12M);
}
//USB总线重新连接(先断开,再连接)子程序
void reconnect_USB(void)
{
unsigned long clk_cnt = 0x9000;
D12SUSPD = 0;
disconnect_USB();
while(clk_cnt--);
connect_USB();
}
//setup packet deal
void control_handler(void)
{
unsigned char type, req;
type = ControlData.DeviceRequest.bmRequestType & USB_REQUEST_TYPE_MASK;//USB_REQUEST_TYPE_MASK=(unsigned char)0x60
req = ControlData.DeviceRequest.bRequest & USB_REQUEST_MASK;//USB_REQUEST_MASK=(unsigned char)0x0F
if(type == USB_STANDARD_REQUEST) //标准请求 define USB_STANDARD_REQUEST (unsigned char)0x00
{
(*StandardDeviceRequest[req])();
}
else if (type == USB_VENDOR_REQUEST) //厂商请求 0x40
{
(*VendorDeviceRequest[req])();
}
else stall_ep0();
}
void usbserve(void)
{
if (GETBIT(B_D12_Lb,SETUP))//define GETBIT(C_Sou,C_Bit) (C_Sou & (0x01<<C_Bit))
{
DISABLE; //define SETUP 1 //设置包
CLRBIT(B_D12_Lb,SETUP);//define CLRBIT(C_Sou,C_Bit) (C_Sou &= ~(0x01<<C_Bit))
control_handler(); //设置包控制处理
ENABLE;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -