读取USB设备连接状态
读取
HcRhPortStatus
寄存器可以得到相应
USB
端口是否有设备连接,但是在嵌入式系统中,为了增强系统的稳定性,要有适当的算法保证在一段时间内,连续读到设备连接或断开,则才能确定设备的连接状态,下面的函数在定时中断中被调用,用来检测
USB
设备的连接状况:
/**
*
读取
USB
设备连接情况
*/
void
ohciReadConState(
unsigned
short
port)
{
ohciConnectState <<= 1;
//
读取寄存器,得到当前状态
if
(pUhp->
UHP_HcRhPortStatus
[port] & 0x01)
{
ohciConnectState |= 1;
}
if
(ohciConnectState == 0xFF)
{
//
设备连接
ohciConnectFlag = 0x55;
}
else
if
(ohciConnectState == 0x00)
{
//
设备断开
ohciConnectFlag = 0x00;
}
}
|
定时中断为
10ms
,上述代码的意思就是连续
80ms
检测到设备连接或者断开,才能修改设备的连接状态。