mirror of
https://github.com/micropython/micropython.git
synced 2026-01-06 12:10:13 +01:00
stm32: Add support for USB on L0 MCUs.
This commit is contained in:
@@ -140,11 +140,14 @@ int8_t usbd_cdc_control(usbd_cdc_state_t *cdc_in, uint8_t cmd, uint8_t* pbuf, ui
|
||||
if (length & 1) {
|
||||
// The actual connection state is delayed to give the host a chance to
|
||||
// configure its serial port (in most cases to disable local echo)
|
||||
PCD_HandleTypeDef *hpcd = cdc->base.usbd->pdev->pData;
|
||||
USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
|
||||
cdc->connect_state = USBD_CDC_CONNECT_STATE_CONNECTING;
|
||||
usbd_cdc_connect_tx_timer = 8; // wait for 8 SOF IRQs
|
||||
USBx->GINTMSK |= USB_OTG_GINTMSK_SOFM;
|
||||
#if defined(STM32L0)
|
||||
USB->CNTR |= USB_CNTR_SOFM;
|
||||
#else
|
||||
PCD_HandleTypeDef *hpcd = cdc->base.usbd->pdev->pData;
|
||||
hpcd->Instance->GINTMSK |= USB_OTG_GINTMSK_SOFM;
|
||||
#endif
|
||||
} else {
|
||||
cdc->connect_state = USBD_CDC_CONNECT_STATE_DISCONNECTED;
|
||||
}
|
||||
@@ -216,7 +219,11 @@ void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) {
|
||||
--usbd_cdc_connect_tx_timer;
|
||||
} else {
|
||||
usbd_cdc_msc_hid_state_t *usbd = ((USBD_HandleTypeDef*)hpcd->pData)->pClassData;
|
||||
#if defined(STM32L0)
|
||||
USB->CNTR &= ~USB_CNTR_SOFM;
|
||||
#else
|
||||
hpcd->Instance->GINTMSK &= ~USB_OTG_GINTMSK_SOFM;
|
||||
#endif
|
||||
for (int i = 0; i < MICROPY_HW_USB_CDC_NUM; ++i) {
|
||||
usbd_cdc_itf_t *cdc = (usbd_cdc_itf_t*)usbd->cdc[i];
|
||||
if (cdc->connect_state == USBD_CDC_CONNECT_STATE_CONNECTING) {
|
||||
|
||||
Reference in New Issue
Block a user