📄 define.h
字号:
//出错延时
#define TIME_OUT 8000
#define UINT uint
#define UCHAR uchar
#define ULONG ulong
void Delay(ulong time)
{
while(time--);
}
ULONG RTI_count = 0;
ULONG CAN_REV_COUNT = 0;
//CAN的波特率设置
#define BTR0_125kbps 0x87
#define BTR1_125kbps 0xD8
#define BTR0_250kbps 0x83
#define BTR1_250kbps 0xD8
#define BTR0_500kbps 0x81
#define BTR1_500kbps 0xD8
#define BTR0_1000kbps 0x80//有问题
#define BTR1_1000kbps 0xD8//有问题
UCHAR CAN_BTR0 = BTR0_500kbps;//波特率初始值是500kbps
UCHAR CAN_BTR1 = BTR1_500kbps;//波特率初始值是500kbps
//------------------- CAN ------------------------
//定义CAN信息帧的数据类型。
typedef struct _ASCL_CAN_OBJ{
ulong time;
ulong channel ;//接收该帧的CAN通道
ulong ID;
uchar RemoteFlag ;//是否是远程帧
uchar ExternFlag ;//是否是扩展帧
uchar DataLen ;
uchar Data[8];
uchar Recv_buffer_overflow_status;
}ASCL_CAN_OBJ;
uchar Recv_buffer_overflow = 0;
uchar SCI_CMD = 0;
uchar RX0_OK = 0;
uchar RX1_OK = 0;
uchar TX_OK = 0;
//发送帧信息格式定义
typedef struct _SendFrame_OBJ
{
uchar RemoteFlag; //远程帧标志
uchar ExternFlag; //扩展帧标志
ulong ID; //标识符
uchar Priority; //优先级
uchar DataLen; //数据长度
uchar Data[8]; //数据域
}SendFrame_OBJ;
SendFrame_OBJ SendFrame;
//------------------- USB ------------------------
#define D12_DATA (*((volatile unsigned char*)(0x0000)))
#define D12_CMD (*((volatile unsigned char*)(0x0001)))
#define D12_DATA_SOFT 0x0000
#define D12_COMMAND 0x0100
#define D12_CMD_HARD 0xAAAA
#define D12_DATA_HARD 0xBBBB
#define D12_SPD_0 ( PTM_PTM6 = 0 )
#define D12_SPD_1 ( PTM_PTM6 = 1 )
#define D12_A0_0 ( PTM_PTM7 = 0 ) //或者( PORTB_BIT0 = 0 ) //看硬件连接情况
#define D12_A0_1 ( PTM_PTM7 = 1 ) //或者( PORTB_BIT0 = 1 ) //看硬件连接情况
#define D12_INT_0 ( PORTE_BIT1 == 0 )
#define D12_INT_1 ( PORTE_BIT1 == 1 )
#define D12_WR_1 PORTE_BIT4 = 0;
#define D12_WR_0 PORTE_BIT2 = 0;PORTE_BIT4 = 1;
#define D12_RD_1 PORTE_BIT4 = 0;
#define D12_RD_0 PORTE_BIT2 = 1;PORTE_BIT4 = 1;
#define Set_LED(led) (PTP = ~led)
uchar Get_LED()
{
return ~PTP;
}
uchar USB_D12_OK = 0;
#define RTI_LED_ON (PTP_PTP0 = 0)
#define RTI_LED_OFF (PTP_PTP0 = 1)
#define USB_LED_ON (PTP_PTP1 = 0)
#define USB_LED_OFF (PTP_PTP1 = 1)
#define LED2_ON (PTP_PTP2 = 0)
#define LED2_OFF (PTP_PTP2 = 1)
#define LED3_ON (PTP_PTP3 = 0)
#define LED3_OFF (PTP_PTP3 = 1)
#define CAN1_TX_LED_ON (PTP_PTP4 = 0)
#define CAN1_TX_LED_OFF (PTP_PTP4 = 1)
#define CAN1_RX_LED_ON (PTP_PTP5 = 0)
#define CAN1_RX_LED_OFF (PTP_PTP5 = 1)
#define CAN0_TX_LED_ON (PTP_PTP6 = 0)
#define CAN0_TX_LED_OFF (PTP_PTP6 = 1)
#define CAN0_RX_LED_ON (PTP_PTP7 = 0)
#define CAN0_RX_LED_OFF (PTP_PTP7 = 1)
UCHAR D12_INT = 0;
UINT EP0_Request_wLength = 0;
UINT EP0_Request_wCount = 0;
UCHAR * EP0_Request_PData;
UINT EP0_state = 0;
UINT EP0_Receive_wLength = 0;
UINT EP0_Receive_wCount = 0;
UCHAR EP0_Receive_PData[16] = {0};
UINT EP1_CMD = 0;
UINT EP1_Request_wLength = 0;
UINT EP1_Request_wCount = 0;
UCHAR EP1_Request_PData[64] = {0};
UINT EP1_state = 0;
UINT EP2_CMD = 0;
ULONG EP2_Request_wLength = 0;
ULONG EP2_Request_wCount = 0;
UCHAR* EP2_Request_PData;
UCHAR EP2_Test_data[64] ={0};
UINT EP2_state = 0;
#define IDLE 0
#define TRANSMIT 1
#define RECEIVE 2
UCHAR EP1_Out_buf[16] = {0};
UCHAR EP2_Out_buf[64] = {0};
#define SWAP(x) ((((x) & 0xFF) << 8) | (((x) >> 8) & 0xFF))
//设备描述符
UCHAR DeviceDescr[18] =
{
0x12,0x01,
0x10,0x01,//USB规范版本1.1,以BCD码表示
0xdc, //设备类码(0xdc表示测试类型)
0, //设备子类码
0, //设备协议
16,//最大封包大小
0xaa,0xaa,//制造商ID(idVendor)
0xbb,0xbb,//产品ID(idProduct)
0x00,0x01,//发行序号,以BCD表示
0,//制造商的字符串描述符索引
0,//产品的字符串描述符索引
0,//设备序号的字符串描述符索引
1//配置描述符的个数
};
UCHAR ConfigDescr[46] =
{
//配置描述符
0x09, 0x02,
0x2e,0x00, //描述符的总长度
1, //接口描述符的个数
1, //该配置描述符的值
0, //该配置描述符的字符串描述符的索引
0xa0, //供电方式:总线供电
1, //最大耗电量
//接口描述符
0x09,//接口描述符长度
0x04,//接口描述符标识
0, //接口描述符的索引(从0开始)
0, //交互设定值 bAlternateSetting
4, //端点数目
0xdc, //接口类码(0xdc表示测试类型)
0xa0, //接口次类码,0表示无无次类码,1表示引导接口次类
0xb0, //接口协议,0表示无,1表示键盘接口协议,2表示鼠标接口协议
0, //接口描述符的字符串描述符的索引
//端点描述符--EP1_IN
0x07,//sizeof(USB_ENDPOINT_DESCRIPTOR),
0x05,//USB_ENDPOINT_DESCRIPTOR_TYPE,
0x81,//端点的地址
0x03,//00->控制传输;01->实时传输;02->大量传输;03->中断传输
16,0x00,//该断点能传输的最大字节数
10, //轮循间隔,以1毫秒为单位(只对中断端点和同步端点有效)
//端点描述符--EP1_OUT
0x07, //sizeof(USB_ENDPOINT_DESCRIPTOR),
0x05, //USB_ENDPOINT_DESCRIPTOR_TYPE,
0x01, //端点的地址
0x03, ////00->控制传输;01->实时传输;02->大量传输;03->中断传输
16,0x00, //该断点能传输的最大字节数,
10, ////轮循间隔,以1毫秒为单位(只对中断端点和同步端点有效)
//端点描述符--EP2_IN
0x07,//sizeof(USB_ENDPOINT_DESCRIPTOR),
0x05,//USB_ENDPOINT_DESCRIPTOR_TYPE,
0x82,//端点的地址
0x02,////00->控制传输;01->实时传输;02->大量传输;03->中断传输
64,0x00,//该断点能传输的最大字节数
0, ////轮循间隔,以1毫秒为单位(只对中断端点和同步端点有效)
//端点描述符--EP2_OUT
0x07, //sizeof(USB_ENDPOINT_DESCRIPTOR),
0x05, //USB_ENDPOINT_DESCRIPTOR_TYPE,
0x02, //端点的地址
0x02, ////00->控制传输;01->实时传输;02->大量传输;03->中断传输
64,0x00, //该断点能传输的最大字节数,
0 ////轮循间隔,以1毫秒为单位(只对中断端点和同步端点有效)
};
struct _device_request
{
UCHAR bmRequestType;//一个字节
UCHAR bRequest;//一个字节
UINT wValue;//两个字节
UINT wIndex;//两个字节
UINT wLength;//两个字节
} device_request;
UCHAR * my_buf= (UCHAR *)"This is TMS320LF2407 and PDIUSBD12's Response To PC! I Love USB.(BY LvWei)--------*";
UCHAR CMD_EXE_STATUS[8] = {0};//前五个字节复制bRequest,wValue,wIndex, 5,6,字节保留,7字节表示CMD是否成功执行
#define CAN_RECV_BUF_LENGTH 256 //接收缓冲区长度
uchar Recv_Frame_status[CAN_RECV_BUF_LENGTH];
//USB包的格式定义
//注意:这个结构体修改了,在EP2中的发送历程中计算packet长度的地方也要修改
typedef union _union_USB_Packet_OBJ
{
struct _USB_Packet_OBJ
{
ULONG start;
ULONG CAN_frame_num;
ASCL_CAN_OBJ Recv_Frame[CAN_RECV_BUF_LENGTH];//缓冲区
ULONG end;
} USB_Packet_struct;
UCHAR Bytes[1 + 2 + sizeof(ASCL_CAN_OBJ)*CAN_RECV_BUF_LENGTH + 1];
} USB_Packet_;
USB_Packet_ USB_Packet;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -