stm32: Portability changes

Allow to compile on STM32F0 platform too.
This commit is contained in:
Uwe Bonnes 2021-07-10 16:48:02 +02:00 committed by UweBonnes
parent 41719c5559
commit b887a8d355
3 changed files with 35 additions and 3 deletions

View File

@ -418,7 +418,9 @@ static void dfu_detach_complete(usbd_device *dev, struct usb_setup_data *req)
platform_request_boot();
/* Reset core to enter bootloader */
#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__)
scb_reset_core();
#endif
}
static enum usbd_request_return_codes cdcacm_control_request(usbd_device *dev,

View File

@ -40,7 +40,7 @@ char *serial_no_read(char *s)
uint16_t *uid = (uint16_t *)DESIG_UNIQUE_ID_BASE;
# if defined(STM32F4) || defined(STM32F7)
int offset = 3;
# elif defined(STM32L0) || defined(STM32F3)
# elif defined(STM32L0) || defined(STM32F0) || defined(STM32F3)
int offset = 5;
# endif
sprintf(s, "%04X%04X%04X",

View File

@ -50,8 +50,12 @@
#define TX_LED_ACT (1 << 0)
#define RX_LED_ACT (1 << 1)
#define RX_FIFO_SIZE (128)
#define TX_BUF_SIZE (128)
/* F072 with st_usbfs_v2_usb_drive drops characters at the 64 byte boundary!*/
#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 */
static uint8_t buf_tx[TX_BUF_SIZE * 2];
@ -164,11 +168,19 @@ void usbuart_init(void)
/* Enable interrupts */
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_RX_IRQ, IRQ_PRI_USBUSART_DMA);
#endif
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_RX_IRQ);
#endif
/* Finally enable the USART */
usart_enable(USBUSART);
@ -392,7 +404,11 @@ static void usbuart_run(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);
#endif
/* Get IDLE flag and reset interrupt flags */
const bool isIdle = usart_get_flag(USBUSART, USART_FLAG_IDLE);
@ -409,7 +425,11 @@ void USBUSART_ISR(void)
usbuart_run();
}
#if defined(USBUSART_DMA_RXTX_IRQ)
nvic_enable_irq(USBUSART_DMA_RXTX_IRQ);
#else
nvic_enable_irq(USBUSART_DMA_RX_IRQ);
#endif
}
void USBUSART_DMA_TX_ISR(void)
@ -449,6 +469,16 @@ void USBUSART_DMA_RX_ISR(void)
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
enum {
RDI_SYS_OPEN = 0x01,