📄 stm32f10x_usb.hpp
字号:
#ifndef __STM32F10x_USB_HPP__
#define __STM32F10x_USB_HPP__
//-----------------------------------------------------------------------------
#include"common.h"
//-----------------------------------------------------------------------------
enum EP_TYPE{BULK,CONTROL,ISO,INTERRUPT};
enum EP_STAT{DISABLED,STALL,NAK,VALID};
//-----------------------------------------------------------------------------
#define ACK VALID
//-----------------------------------------------------------------------------
class EPxR
{
public:
volatile unsigned long* WORD;
volatile unsigned long* BITS;
public:
unsigned int ID;
EPxR(unsigned int id);
public:
void TYPE(EP_TYPE Value);
void STAT_RX_TX(EP_STAT RxValue,
EP_STAT TxValue);
void KIND(unsigned int Value);
void Clear_CTR_RX(void);
void Clear_CTR_TX(void);
public:
void Set_COUNT_RX(unsigned short Value);
public:
volatile Four_Byte* Rx_Buffer;
volatile unsigned long* Tx_Buffer;
public:
void Send(unsigned short* pBuffer,unsigned int Length);
};
//-----------------------------------------------------------------------------
class stm32f10x_usb
{
public:
EPxR EP0R;
EPxR EP1R;
public:
stm32f10x_usb(void);
void Configuration(void);
public:
void SetAddress(unsigned short Value);
public:
unsigned int Reserived_Data;
};
//-----------------------------------------------------------------------------
extern stm32f10x_usb usb0;
//-----------------------------------------------------------------------------
#define CNTR (*((volatile unsigned long*)0x40005C40))
#define ISTR (*((volatile unsigned long*)0x40005C44))
#define FNR (*((volatile unsigned long*)0x40005C48))
#define DADDR (*((volatile unsigned long*)0x40005C4C))
#define BTABLE (*((volatile unsigned long*)0x40005C50))
#define CNTR_BITS ((volatile unsigned long*)(0x42000000+(0x00005c40<<5)))
#define ISTR_BITS ((volatile unsigned long*)(0x42000000+(0x00005c44<<5)))
#define FNR_BITS ((volatile unsigned long*)(0x42000000+(0x00005c48<<5)))
#define DADDR_BITS ((volatile unsigned long*)(0x42000000+(0x00005c4C<<5)))
#define BTABLE_BITS ((volatile unsigned long*)(0x42000000+(0x00005c50<<5)))
#define EP0_ADDR_TX (*((volatile unsigned long*)(BTABLE+0x40006000)))
#define EP0_COUNT_TX (*((volatile unsigned long*)(BTABLE+0x40006004)))
#define EP0_ADDR_RX (*((volatile unsigned long*)(BTABLE+0x40006008)))
#define EP0_COUNT_RX (*((volatile unsigned long*)(BTABLE+0x4000600C)))
#define EP1_ADDR_TX (*((volatile unsigned long*)(BTABLE+0x40006010)))
#define EP1_COUNT_TX (*((volatile unsigned long*)(BTABLE+0x40006014)))
#define EP1_ADDR_RX (*((volatile unsigned long*)(BTABLE+0x40006018)))
#define EP1_COUNT_RX (*((volatile unsigned long*)(BTABLE+0x4000601C)))
#define EP2_ADDR_TX (*((volatile unsigned long*)(BTABLE+0x40006020)))
#define EP2_COUNT_TX (*((volatile unsigned long*)(BTABLE+0x40006024)))
#define EP2_ADDR_RX (*((volatile unsigned long*)(BTABLE+0x40006028)))
#define EP2_COUNT_RX (*((volatile unsigned long*)(BTABLE+0x4000602C)))
#define EP3_ADDR_TX (*((volatile unsigned long*)(BTABLE+0x40006030)))
#define EP3_COUNT_TX (*((volatile unsigned long*)(BTABLE+0x40006034)))
#define EP3_ADDR_RX (*((volatile unsigned long*)(BTABLE+0x40006038)))
#define EP3_COUNT_RX (*((volatile unsigned long*)(BTABLE+0x4000603C)))
//CNTR-------------------------------------------------------------------------
#define CTRM 15
#define ERRM 13
#define WKUPM 12
#define SUSPM 11
#define RESETM 10
#define SOFM 9
#define ESOFM 8
#define RESUME 4
#define PWDN 1
#define FRES 0
//ISTR-------------------------------------------------------------------------
#define CTR 15
#define PMAOVR 14
#define ERR 13
#define WKUP 12
#define SUSP 11
#define ISR_RESET 10
#define SOF 9
#define ESOF 8
#define DIR 4
#define EP_ID_3 3
#define EP_ID_2 2
#define EP_ID_1 1
#define EP_ID_0 0
//EPxR-------------------------------------------------------------------------
#define CTR_RX 15
#define DTOG_RX 14
#define STAT_RX_1 13
#define STAT_RX_0 12
#define SETUP 11
#define EP_TYPE_1 10
#define EP_TYPE_0 9
#define EP_KIND 8
#define CTR_TX 7
#define DTOG_TX 6
#define STAT_TX_1 5
#define STAT_TX_0 4
#define EA_3 3
#define EA_2 2
#define EA_1 1
#define EA_0 0
//-----------------------------------------------------------------------------
void USB_Configuration(void);
//-----------------------------------------------------------------------------
extern unsigned int EPxR_STATUS;
extern unsigned int* pEPxR_STATUS;
//-----------------------------------------------------------------------------
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -