学习板源码里“#define D12_SETUPPACKET 0x20”这句代码为什么要定义成0x20
如题,为什么要定义成0x20 首先看D12_SETUPPACKET用在什么地方,它出现在如下代码里:void ep0_rxdone(void)
{
INT8U ep_last, i;
INT8U req;
ep_last = D12_ReadLastTransactionStatus(0); //清除中断寄存器状态,取得最后处理状态
if (ep_last & D12_SETUPPACKET) { //如果收到了建立包(Setup包)
其中D12_ReadLastTransactionStatus函数是读PDIUSBD12的最后处理状态寄存器,此寄存器结构如下(请查D12数据手册):
数据接收/发送成功 1 表示数据已经成功地接收或发送
错误代码
SETUP 设置信息包 1 表示最后成功接收的信息包有一个 SETUP 标志 对IN 缓冲区进行读总为 0
数据 0/1 包 1 表示最后成功接收/发送包含有一个 DATA1 PID
前一状态未读 1 表示在前一状态被读出之前发生了第二个事件
位5代表设置信息包,当这个位为1时代表收到一个SETUP包,什么是SETUP包,可以参考USB协议。而0x20转换成二进制是00100000,正好是第5位的值是1,所以要这样定义
页:
[1]