USB论坛-百合电子工作室USB专题站
标题:
程序代码问题(共用体EPPFLAGS怎么理解)
[打印本页]
作者:
玩玩
时间:
2015-9-27 11:44
标题:
程序代码问题(共用体EPPFLAGS怎么理解)
typedef union _epp_flags
{
struct _flags
{
INT8U bus_reset : 1; //总线复位标志
INT8U suspend : 1; //挂起改变标志
INT8U setup_packet : 1; //收到SETUP包
INT8U remote_wakeup : 1; //远程唤醒标志(未使用)
INT8U in_isr : 1; //USB中断服务标志
INT8U control_state : 2; //控制端点处理标志
//0: IDLE 空闲状态
//1: TRANSMIT 数据发送状态
//2: RECEIVE 数据接收状态
INT8U configuration : 1; //配置标志(0: 未配置; 1: 已经配置)
INT8U command : 1; //未使用
INT8U ep1_rxdone : 1; //端点 1 收到数据标志
INT8U ep2_rxdone : 1; //端点 2 收到数据标志
INT8U ep2buf_full : 1; //端点 2 接收双缓冲区满标志
} bits;
INT16U value;
} EPPFLAGS;
作者:
玩玩
时间:
2015-9-27 11:46
共用体和结构体都有,到底哪些变量是结构体,那些变量是共用体!还是整个结构体都是共用体的变量!
作者:
baiheee
时间:
2015-9-27 22:36
这句代码的结果是定义了一个共用体变量EPPFLAGS,占用两个字节存储空间,“INT16U value”这句用于占位,目的是为变量EPPFLAGS分配两个字节存储空间,实际使用时EPPFLAGS变量只用到其内部字义的结构体,结构体只用了12个位,余下6个位无意义
其实建议学习USB时不要过多关注USB接口芯片的固件程序底层驱动代码,应该将精力放在USB的枚举过程、各种命令及描述符等。
欢迎光临 USB论坛-百合电子工作室USB专题站 (http://usb.baiheee.com/usb_bbs/)
Powered by Discuz! X2.5