/*----------------------------------------------------------------------------
* RL-ARM - USB
*----------------------------------------------------------------------------
* Name: usbd_STM32F103.c
* Purpose: Hardware Layer module for ST STM32F103
* Rev.: V4.70
*----------------------------------------------------------------------------
* This code is part of the RealView Run-Time Library.
* Copyright (c) 2004-2013 KEIL - An ARM Company. All rights reserved.
*---------------------------------------------------------------------------*/
/*
* Reset Endpoint
* Parameters: EPNum: Endpoint Number
* EPNum.0..3: Address
* EPNum.7: Dir
* Return Value: None
*/
void EP_Reset (U32 EPNum) {
U32 num, val;
num = EPNum & 0x0F;
val = EPxREG(num);
if (EPNum & 0x80) { /* IN Endpoint */
EPxREG(num) = val & (EP_MASK | EP_DTOG_TX);
} else { /* OUT Endpoint */
EPxREG(num) = val & (EP_MASK | EP_DTOG_RX);
}
}
/**********************************************************************
* Set Endpoint Status
* Parameters: EPNum: Endpoint Number
* EPNum.0..3: Address
* EPNum.7: Dir
* stat: New Status
* Return Value: None
**********************************************************************/
num = EPNum & 0x0F;
val = EPxREG(num);
if (EPNum & 0x80) { /* IN Endpoint */
EPxREG(num) = (val ^ (stat & EP_STAT_TX)) & (EP_MASK | EP_STAT_TX);
} else { /* OUT Endpoint */
EPxREG(num) = (val ^ (stat & EP_STAT_RX)) & (EP_MASK | EP_STAT_RX);
}
}
/**********************************************************************
* USB Device Interrupt enable
* Called by USBD_Init to enable the USB Interrupt
* Return Value: None
**********************************************************************/