stm32: Portability changes
Allow to compile on STM32F0 platform too.
This commit is contained in:
parent
41719c5559
commit
b887a8d355
|
@ -418,7 +418,9 @@ static void dfu_detach_complete(usbd_device *dev, struct usb_setup_data *req)
|
||||||
platform_request_boot();
|
platform_request_boot();
|
||||||
|
|
||||||
/* Reset core to enter bootloader */
|
/* Reset core to enter bootloader */
|
||||||
|
#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__)
|
||||||
scb_reset_core();
|
scb_reset_core();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum usbd_request_return_codes cdcacm_control_request(usbd_device *dev,
|
static enum usbd_request_return_codes cdcacm_control_request(usbd_device *dev,
|
||||||
|
|
|
@ -40,7 +40,7 @@ char *serial_no_read(char *s)
|
||||||
uint16_t *uid = (uint16_t *)DESIG_UNIQUE_ID_BASE;
|
uint16_t *uid = (uint16_t *)DESIG_UNIQUE_ID_BASE;
|
||||||
# if defined(STM32F4) || defined(STM32F7)
|
# if defined(STM32F4) || defined(STM32F7)
|
||||||
int offset = 3;
|
int offset = 3;
|
||||||
# elif defined(STM32L0) || defined(STM32F3)
|
# elif defined(STM32L0) || defined(STM32F0) || defined(STM32F3)
|
||||||
int offset = 5;
|
int offset = 5;
|
||||||
# endif
|
# endif
|
||||||
sprintf(s, "%04X%04X%04X",
|
sprintf(s, "%04X%04X%04X",
|
||||||
|
|
|
@ -50,8 +50,12 @@
|
||||||
#define TX_LED_ACT (1 << 0)
|
#define TX_LED_ACT (1 << 0)
|
||||||
#define RX_LED_ACT (1 << 1)
|
#define RX_LED_ACT (1 << 1)
|
||||||
|
|
||||||
#define RX_FIFO_SIZE (128)
|
/* F072 with st_usbfs_v2_usb_drive drops characters at the 64 byte boundary!*/
|
||||||
#define TX_BUF_SIZE (128)
|
#if !defined(USART_DMA_BUF_SIZE)
|
||||||
|
# define USART_DMA_BUF_SIZE 128
|
||||||
|
#endif
|
||||||
|
#define RX_FIFO_SIZE (USART_DMA_BUF_SIZE)
|
||||||
|
#define TX_BUF_SIZE (USART_DMA_BUF_SIZE)
|
||||||
|
|
||||||
/* TX double buffer */
|
/* TX double buffer */
|
||||||
static uint8_t buf_tx[TX_BUF_SIZE * 2];
|
static uint8_t buf_tx[TX_BUF_SIZE * 2];
|
||||||
|
@ -164,11 +168,19 @@ void usbuart_init(void)
|
||||||
|
|
||||||
/* Enable interrupts */
|
/* Enable interrupts */
|
||||||
nvic_set_priority(USBUSART_IRQ, IRQ_PRI_USBUSART);
|
nvic_set_priority(USBUSART_IRQ, IRQ_PRI_USBUSART);
|
||||||
|
#if defined(USBUSART_DMA_RXTX_IRQ)
|
||||||
|
nvic_set_priority(USBUSART_DMA_RXTX_IRQ, IRQ_PRI_USBUSART_DMA);
|
||||||
|
#else
|
||||||
nvic_set_priority(USBUSART_DMA_TX_IRQ, IRQ_PRI_USBUSART_DMA);
|
nvic_set_priority(USBUSART_DMA_TX_IRQ, IRQ_PRI_USBUSART_DMA);
|
||||||
nvic_set_priority(USBUSART_DMA_RX_IRQ, IRQ_PRI_USBUSART_DMA);
|
nvic_set_priority(USBUSART_DMA_RX_IRQ, IRQ_PRI_USBUSART_DMA);
|
||||||
|
#endif
|
||||||
nvic_enable_irq(USBUSART_IRQ);
|
nvic_enable_irq(USBUSART_IRQ);
|
||||||
|
#if defined(USBUSART_DMA_RXTX_IRQ)
|
||||||
|
nvic_enable_irq(USBUSART_DMA_RXTX_IRQ);
|
||||||
|
#else
|
||||||
nvic_enable_irq(USBUSART_DMA_TX_IRQ);
|
nvic_enable_irq(USBUSART_DMA_TX_IRQ);
|
||||||
nvic_enable_irq(USBUSART_DMA_RX_IRQ);
|
nvic_enable_irq(USBUSART_DMA_RX_IRQ);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Finally enable the USART */
|
/* Finally enable the USART */
|
||||||
usart_enable(USBUSART);
|
usart_enable(USBUSART);
|
||||||
|
@ -392,7 +404,11 @@ static void usbuart_run(void)
|
||||||
|
|
||||||
void USBUSART_ISR(void)
|
void USBUSART_ISR(void)
|
||||||
{
|
{
|
||||||
|
#if defined(USBUSART_DMA_RXTX_IRQ)
|
||||||
|
nvic_disable_irq(USBUSART_DMA_RXTX_IRQ);
|
||||||
|
#else
|
||||||
nvic_disable_irq(USBUSART_DMA_RX_IRQ);
|
nvic_disable_irq(USBUSART_DMA_RX_IRQ);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Get IDLE flag and reset interrupt flags */
|
/* Get IDLE flag and reset interrupt flags */
|
||||||
const bool isIdle = usart_get_flag(USBUSART, USART_FLAG_IDLE);
|
const bool isIdle = usart_get_flag(USBUSART, USART_FLAG_IDLE);
|
||||||
|
@ -409,7 +425,11 @@ void USBUSART_ISR(void)
|
||||||
usbuart_run();
|
usbuart_run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USBUSART_DMA_RXTX_IRQ)
|
||||||
|
nvic_enable_irq(USBUSART_DMA_RXTX_IRQ);
|
||||||
|
#else
|
||||||
nvic_enable_irq(USBUSART_DMA_RX_IRQ);
|
nvic_enable_irq(USBUSART_DMA_RX_IRQ);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void USBUSART_DMA_TX_ISR(void)
|
void USBUSART_DMA_TX_ISR(void)
|
||||||
|
@ -449,6 +469,16 @@ void USBUSART_DMA_RX_ISR(void)
|
||||||
nvic_enable_irq(USBUSART_IRQ);
|
nvic_enable_irq(USBUSART_IRQ);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USBUSART_DMA_RXTX_ISR)
|
||||||
|
void USBUSART_DMA_RXTX_ISR(void)
|
||||||
|
{
|
||||||
|
if (dma_get_interrupt_flag(USBUSART_DMA_BUS, USBUSART_DMA_RX_CHAN, DMA_CGIF))
|
||||||
|
USBUSART_DMA_RX_ISR();
|
||||||
|
if (dma_get_interrupt_flag(USBUSART_DMA_BUS, USBUSART_DMA_TX_CHAN, DMA_CGIF))
|
||||||
|
USBUSART_DMA_TX_ISR();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_DEBUG
|
#ifdef ENABLE_DEBUG
|
||||||
enum {
|
enum {
|
||||||
RDI_SYS_OPEN = 0x01,
|
RDI_SYS_OPEN = 0x01,
|
||||||
|
|
Loading…
Reference in New Issue