gnuk/src/usb_lld.c

30 lines
617 B
C
Raw Normal View History

2010-08-18 03:57:45 +00:00
#include "ch.h"
#include "hal.h"
2012-01-16 03:17:45 +00:00
#include "usb_lib.h"
2010-08-18 03:57:45 +00:00
#include "usb_lld.h"
extern void USB_Istr (void);
CH_IRQ_HANDLER (Vector90) {
CH_IRQ_PROLOGUE();
2010-08-19 08:09:59 +00:00
chSysLockFromIsr();
2010-08-18 03:57:45 +00:00
USB_Istr();
2010-08-19 08:09:59 +00:00
chSysUnlockFromIsr();
2010-08-18 03:57:45 +00:00
CH_IRQ_EPILOGUE();
}
void usb_lld_init (void) {
RCC->APB1ENR |= RCC_APB1ENR_USBEN;
NVICEnableVector (USB_LP_CAN1_RX0_IRQn,
CORTEX_PRIORITY_MASK (STM32_USB_IRQ_PRIORITY));
/*
2010-08-19 08:09:59 +00:00
* Note that we also have other IRQ(s):
* USB_HP_CAN1_TX_IRQn (for double-buffered or isochronous)
* USBWakeUp_IRQn (suspend/resume)
2010-08-18 03:57:45 +00:00
*/
RCC->APB1RSTR = RCC_APB1RSTR_USBRST;
RCC->APB1RSTR = 0;
}