Merge pull request #325 from hathach/refactor-irqhandler

move irqhandler to application
This commit is contained in:
Ha Thach 2020-04-13 10:18:17 +07:00 committed by GitHub
commit 7a93894b99
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
82 changed files with 713 additions and 269 deletions

View File

@ -1,4 +1,18 @@
# TinyUSB changelog # TinyUSB Changelog
## Master branch (WIP)
### Breaking
- TinyUSB does not directly implement USB IRQ Handler function anymore. Application must implement IRQ Handler and invoke `tud_irq_handler(rhport)`. This is due to:
- IRQ Handler name can be different across system depending on the startup
- Some OS need to execute enterISR()/exitISR() to work properly, also tracing tool may need to insert trace ISR enter/exit to record usb event
- Give application full control of IRQ handler, can be useful e.g signaling there is new usb event without constant polling
### MCU
- All default IRQ Handler is renamed to `dcd_irq_handler()`
## 0.6.0 - 2019.03.30 ## 0.6.0 - 2019.03.30

View File

@ -60,23 +60,30 @@ All of the code for the low-level device API is in `src/portable/<vendor>/<chip
#### Device Setup #### Device Setup
##### dcd_init ##### dcd_init
Initializes the USB peripheral for device mode and enables it.
Initializes the USB peripheral for device mode and enables it.
This function should leave an internal D+/D- pull-up in its default power-on state. `dcd_connect` will be called by the USBD core following `dcd_init`. This function should leave an internal D+/D- pull-up in its default power-on state. `dcd_connect` will be called by the USBD core following `dcd_init`.
#### dcd_int_enable / dcd_int_disable ##### dcd_int_enable / dcd_int_disable
Enables or disables the USB device interrupt(s). May be used to prevent concurrency issues when mutating data structures shared between main code and the interrupt handler. Enables or disables the USB device interrupt(s). May be used to prevent concurrency issues when mutating data structures shared between main code and the interrupt handler.
##### dcd_irq_handler
Processes all the hardware generated events e.g Bus reset, new data packet from host etc ... It will be called by application in the MCU USB interrupt handler.
##### dcd_set_address ##### dcd_set_address
Called when the device is given a new bus address. Called when the device is given a new bus address.
If your peripheral automatically changes address during enumeration (like the nrf52) you may leave this empty and also no queue an event for the corresponding SETUP packet. If your peripheral automatically changes address during enumeration (like the nrf52) you may leave this empty and also no queue an event for the corresponding SETUP packet.
##### dcd_set_config ##### dcd_set_config
Called when the device received SET_CONFIG request, you can leave this empty if your peripheral does not require any specific action. Called when the device received SET_CONFIG request, you can leave this empty if your peripheral does not require any specific action.
##### dcd_remote_wakeup ##### dcd_remote_wakeup
Called to remote wake up host when suspended (e.g hid keyboard) Called to remote wake up host when suspended (e.g hid keyboard)
##### dcd_connect / dcd_disconnect ##### dcd_connect / dcd_disconnect
@ -84,6 +91,7 @@ Called to remote wake up host when suspended (e.g hid keyboard)
Connect or disconnect the data-line pull-up resistor. Define only if MCU has an internal pull-up. (BSP may define for MCU without internal pull-up.) Connect or disconnect the data-line pull-up resistor. Define only if MCU has an internal pull-up. (BSP may define for MCU without internal pull-up.)
#### Special events #### Special events
You must let TinyUSB know when certain events occur so that it can continue its work. There are a few methods you can call to queue events for TinyUSB to process. You must let TinyUSB know when certain events occur so that it can continue its work. There are a few methods you can call to queue events for TinyUSB to process.
##### dcd_event_bus_signal ##### dcd_event_bus_signal
@ -102,6 +110,7 @@ The first `0` is the USB peripheral number. Statically saying 0 is common for si
The `true` indicates the call is from an interrupt handler and will always be the case when porting in this way. The `true` indicates the call is from an interrupt handler and will always be the case when porting in this way.
##### dcd_setup_received ##### dcd_setup_received
SETUP packets are a special type of transaction that can occur at any time on the control endpoint, numbered `0`. Since they are unique, most peripherals have special handling for them. Their data is always 8 bytes in length as well. SETUP packets are a special type of transaction that can occur at any time on the control endpoint, numbered `0`. Since they are unique, most peripherals have special handling for them. Their data is always 8 bytes in length as well.
Calls to this look like: Calls to this look like:

View File

@ -9,4 +9,10 @@ INC += \
EXAMPLE_SOURCE += $(wildcard src/*.c) EXAMPLE_SOURCE += $(wildcard src/*.c)
SRC_C += $(addprefix $(CURRENT_PATH)/, $(EXAMPLE_SOURCE)) SRC_C += $(addprefix $(CURRENT_PATH)/, $(EXAMPLE_SOURCE))
# board_test example is special example that doesn't enable device or host stack
# This can cause some TinyUSB API missing, this hack to allow us to fill those API
# to pass the compilation process
CFLAGS += \
-D"tud_irq_handler(x)= " \
include ../../rules.mk include ../../rules.mk

View File

@ -35,9 +35,17 @@
#include "nrf_soc.h" #include "nrf_soc.h"
#endif #endif
/*------------------------------------------------------------------*/ //--------------------------------------------------------------------+
/* MACRO TYPEDEF CONSTANT ENUM // Forward USB interrupt events to TinyUSB IRQ Handler
*------------------------------------------------------------------*/ //--------------------------------------------------------------------+
void USBD_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define _PINNUM(port, pin) ((port)*32 + (pin)) #define _PINNUM(port, pin) ((port)*32 + (pin))
#define LED_PIN _PINNUM(1, 1) #define LED_PIN _PINNUM(1, 1)

View File

@ -36,6 +36,14 @@
#include "nrf_soc.h" #include "nrf_soc.h"
#endif #endif
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USBD_IRQHandler(void)
{
tud_irq_handler(0);
}
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/
/* MACRO TYPEDEF CONSTANT ENUM /* MACRO TYPEDEF CONSTANT ENUM
*------------------------------------------------------------------*/ *------------------------------------------------------------------*/

View File

@ -35,6 +35,14 @@
#include "nrf_soc.h" #include "nrf_soc.h"
#endif #endif
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USBD_IRQHandler(void)
{
tud_irq_handler(0);
}
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/
/* MACRO TYPEDEF CONSTANT ENUM /* MACRO TYPEDEF CONSTANT ENUM
*------------------------------------------------------------------*/ *------------------------------------------------------------------*/

View File

@ -35,6 +35,14 @@
#include "hpl_pm_config.h" #include "hpl_pm_config.h"
#include "hpl/pm/hpl_pm_base.h" #include "hpl/pm/hpl_pm_base.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB_Handler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM DECLARATION // MACRO TYPEDEF CONSTANT ENUM DECLARATION
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
@ -134,6 +142,7 @@ int board_uart_write(void const * buf, int len)
} }
#if CFG_TUSB_OS == OPT_OS_NONE #if CFG_TUSB_OS == OPT_OS_NONE
volatile uint32_t system_ticks = 0; volatile uint32_t system_ticks = 0;
void SysTick_Handler (void) void SysTick_Handler (void)
{ {
@ -144,4 +153,5 @@ uint32_t board_millis(void)
{ {
return system_ticks; return system_ticks;
} }
#endif #endif

View File

@ -27,6 +27,23 @@
#include "chip.h" #include "chip.h"
#include "../board.h" #include "../board.h"
//--------------------------------------------------------------------+
// USB Interrupt Handler
//--------------------------------------------------------------------+
void USB_IRQHandler(void)
{
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_HOST
tuh_isr(0);
#endif
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_irq_handler(0);
#endif
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM DECLARATION
//--------------------------------------------------------------------+
#define LED_PORT 2 #define LED_PORT 2
#define LED_PIN 19 #define LED_PIN 19
@ -113,21 +130,6 @@ void board_init(void)
LPC_USB->StCtrl = 0x3; LPC_USB->StCtrl = 0x3;
} }
//--------------------------------------------------------------------+
// USB Interrupt Handler
//--------------------------------------------------------------------+
void USB_IRQHandler(void)
{
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_HOST
tuh_isr(0);
#endif
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_isr(0);
#endif
}
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// Board porting API // Board porting API
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -240,7 +240,7 @@ void USB0_IRQHandler(void)
#endif #endif
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_isr(0); tud_irq_handler(0);
#endif #endif
} }
@ -251,7 +251,7 @@ void USB1_IRQHandler(void)
#endif #endif
#if CFG_TUSB_RHPORT1_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT1_MODE & OPT_MODE_DEVICE
tud_isr(1); tud_irq_handler(1);
#endif #endif
} }

View File

@ -35,6 +35,14 @@
#include "hpl_pm_config.h" #include "hpl_pm_config.h"
#include "hpl/pm/hpl_pm_base.h" #include "hpl/pm/hpl_pm_base.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB_Handler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM DECLARATION // MACRO TYPEDEF CONSTANT ENUM DECLARATION
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -32,6 +32,29 @@
#include "hpl/gclk/hpl_gclk_base.h" #include "hpl/gclk/hpl_gclk_base.h"
#include "hpl_mclk_config.h" #include "hpl_mclk_config.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB_0_Handler (void)
{
tud_irq_handler(0);
}
void USB_1_Handler (void)
{
tud_irq_handler(0);
}
void USB_2_Handler (void)
{
tud_irq_handler(0);
}
void USB_3_Handler (void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM DECLARATION // MACRO TYPEDEF CONSTANT ENUM DECLARATION
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -36,6 +36,14 @@
#include "nrf_soc.h" #include "nrf_soc.h"
#endif #endif
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USBD_IRQHandler(void)
{
tud_irq_handler(0);
}
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/
/* MACRO TYPEDEF CONSTANT ENUM /* MACRO TYPEDEF CONSTANT ENUM
*------------------------------------------------------------------*/ *------------------------------------------------------------------*/
@ -92,6 +100,7 @@ void board_init(void)
nrfx_uarte_init(&_uart_id, &uart_cfg, NULL); //uart_handler); nrfx_uarte_init(&_uart_id, &uart_cfg, NULL); //uart_handler);
//------------- USB -------------//
#if TUSB_OPT_DEVICE_ENABLED #if TUSB_OPT_DEVICE_ENABLED
// Priorities 0, 1, 4 (nRF52) are reserved for SoftDevice // Priorities 0, 1, 4 (nRF52) are reserved for SoftDevice
// 2 is highest for application // 2 is highest for application

View File

@ -35,6 +35,14 @@
#include "nrf_soc.h" #include "nrf_soc.h"
#endif #endif
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USBD_IRQHandler(void)
{
tud_irq_handler(0);
}
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/
/* MACRO TYPEDEF CONSTANT ENUM /* MACRO TYPEDEF CONSTANT ENUM
*------------------------------------------------------------------*/ *------------------------------------------------------------------*/

View File

@ -29,6 +29,18 @@
#include "stm32f4xx.h" #include "stm32f4xx.h"
#include "stm32f4xx_hal_conf.h" #include "stm32f4xx_hal_conf.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void OTG_FS_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
// Blue LED is chosen because the other LEDs are connected to ST-LINK lines. // Blue LED is chosen because the other LEDs are connected to ST-LINK lines.
#define LED_PORT GPIOC #define LED_PORT GPIOC
#define LED_PIN GPIO_PIN_1 #define LED_PIN GPIO_PIN_1

View File

@ -14,11 +14,6 @@ BSP_DIR = hw/bsp/fomu
# All source paths should be relative to the top level. # All source paths should be relative to the top level.
LD_FILE = hw/bsp/$(BOARD)/fomu.ld LD_FILE = hw/bsp/$(BOARD)/fomu.ld
# TODO remove later
SRC_C += src/portable/$(VENDOR)/$(CHIP_FAMILY)/hal_$(CHIP_FAMILY).c
SRC_C +=
SRC_S += hw/bsp/fomu/crt0-vexriscv.S SRC_S += hw/bsp/fomu/crt0-vexriscv.S
INC += \ INC += \

View File

@ -26,7 +26,7 @@
#include <stdint.h> #include <stdint.h>
#include <stdbool.h> #include <stdbool.h>
#include "common/tusb_common.h" #include "../board.h"
#include "csr.h" #include "csr.h"
#include "irq.h" #include "irq.h"
@ -34,8 +34,6 @@
// Board porting API // Board porting API
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
void hal_dcd_isr(uint8_t rhport);
void fomu_error(uint32_t line) void fomu_error(uint32_t line)
{ {
(void)line; (void)line;
@ -65,7 +63,7 @@ void isr(void)
#if CFG_TUSB_RHPORT0_MODE == OPT_MODE_DEVICE #if CFG_TUSB_RHPORT0_MODE == OPT_MODE_DEVICE
if (irqs & (1 << USB_INTERRUPT)) { if (irqs & (1 << USB_INTERRUPT)) {
hal_dcd_isr(0); tud_irq_handler(0);
} }
#endif #endif
if (irqs & (1 << TIMER0_INTERRUPT)) { if (irqs & (1 << TIMER0_INTERRUPT)) {
@ -114,4 +112,4 @@ uint32_t board_millis(void)
{ {
return system_ticks; return system_ticks;
} }
#endif #endif

View File

@ -35,6 +35,14 @@
#include "hpl_pm_config.h" #include "hpl_pm_config.h"
#include "hpl/pm/hpl_pm_base.h" #include "hpl/pm/hpl_pm_base.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB_Handler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM DECLARATION // MACRO TYPEDEF CONSTANT ENUM DECLARATION
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -32,6 +32,29 @@
#include "hpl/gclk/hpl_gclk_base.h" #include "hpl/gclk/hpl_gclk_base.h"
#include "hpl_mclk_config.h" #include "hpl_mclk_config.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB_0_Handler (void)
{
tud_irq_handler(0);
}
void USB_1_Handler (void)
{
tud_irq_handler(0);
}
void USB_2_Handler (void)
{
tud_irq_handler(0);
}
void USB_3_Handler (void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM DECLARATION // MACRO TYPEDEF CONSTANT ENUM DECLARATION
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -27,6 +27,17 @@
#include "chip.h" #include "chip.h"
#include "../board.h" #include "../board.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB_IRQHandler(void)
{
tud_irq_handler(0);
}
//---------------------------------------------------------------- ----+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT 1 #define LED_PORT 1
#define LED_PIN 24 #define LED_PIN 24
#define LED_STATE_ON 0 #define LED_STATE_ON 0

View File

@ -27,6 +27,17 @@
#include "chip.h" #include "chip.h"
#include "../board.h" #include "../board.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT 2 #define LED_PORT 2
#define LED_PIN 17 #define LED_PIN 17
#define LED_STATE_ON 0 #define LED_STATE_ON 0

View File

@ -27,6 +27,17 @@
#include "chip.h" #include "chip.h"
#include "../board.h" #include "../board.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT 0 #define LED_PORT 0
#define LED_PIN 7 #define LED_PIN 7

View File

@ -27,6 +27,17 @@
#include "chip.h" #include "chip.h"
#include "../board.h" #include "../board.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT 0 #define LED_PORT 0
#define LED_PIN 25 #define LED_PIN 25

View File

@ -27,6 +27,23 @@
#include "chip.h" #include "chip.h"
#include "../board.h" #include "../board.h"
//--------------------------------------------------------------------+
// USB Interrupt Handler
//--------------------------------------------------------------------+
void USB_IRQHandler(void)
{
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_HOST
tuh_isr(0);
#endif
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_irq_handler(0);
#endif
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT 0 #define LED_PORT 0
#define LED_PIN 22 #define LED_PIN 22
#define LED_STATE_ON 1 #define LED_STATE_ON 1
@ -143,20 +160,6 @@ void board_init(void)
#endif #endif
} }
//--------------------------------------------------------------------+
// USB Interrupt Handler
//--------------------------------------------------------------------+
void USB_IRQHandler(void)
{
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_HOST
tuh_isr(0);
#endif
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_isr(0);
#endif
}
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// Board porting API // Board porting API
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -30,6 +30,17 @@
#include "fsl_power.h" #include "fsl_power.h"
#include "fsl_iocon.h" #include "fsl_iocon.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB0_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT 0 #define LED_PORT 0
#define LED_PIN 29 #define LED_PIN 29
#define LED_STATE_ON 0 #define LED_STATE_ON 0

View File

@ -30,6 +30,17 @@
#include "fsl_power.h" #include "fsl_power.h"
#include "fsl_iocon.h" #include "fsl_iocon.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB0_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT 0 #define LED_PORT 0
#define LED_PIN 29 #define LED_PIN 29
#define LED_STATE_ON 0 #define LED_STATE_ON 0

View File

@ -30,6 +30,22 @@
#include "fsl_power.h" #include "fsl_power.h"
#include "fsl_iocon.h" #include "fsl_iocon.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB0_IRQHandler(void)
{
tud_irq_handler(0);
}
void USB1_IRQHandler(void)
{
tud_irq_handler(1);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT 1 #define LED_PORT 1
#define LED_PIN 6 #define LED_PIN 6
#define LED_STATE_ON 0 #define LED_STATE_ON 0

View File

@ -145,7 +145,7 @@ void USB_IRQHandler(void)
#endif #endif
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_isr(0); tud_irq_handler(0);
#endif #endif
} }

View File

@ -27,6 +27,35 @@
#include "chip.h" #include "chip.h"
#include "../board.h" #include "../board.h"
//--------------------------------------------------------------------+
// USB Interrupt Handler
//--------------------------------------------------------------------+
void USB0_IRQHandler(void)
{
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_HOST
tuh_isr(0);
#endif
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_irq_handler(0);
#endif
}
void USB1_IRQHandler(void)
{
#if CFG_TUSB_RHPORT1_MODE & OPT_MODE_HOST
tuh_isr(1);
#endif
#if CFG_TUSB_RHPORT1_MODE & OPT_MODE_DEVICE
tud_irq_handler(1);
#endif
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM DECLARATION
//--------------------------------------------------------------------+
// PD_10 // PD_10
#define LED_PORT 6 #define LED_PORT 6
#define LED_PIN 24 #define LED_PIN 24
@ -35,9 +64,7 @@
#define BUTTON_PORT 2 #define BUTTON_PORT 2
#define BUTTON_PIN 0 #define BUTTON_PIN 0
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM DECLARATION
//--------------------------------------------------------------------+
/* System configuration variables used by chip driver */ /* System configuration variables used by chip driver */
const uint32_t OscRateIn = 12000000; const uint32_t OscRateIn = 12000000;
const uint32_t ExtRateIn = 0; const uint32_t ExtRateIn = 0;
@ -172,30 +199,6 @@ void board_init(void)
#endif #endif
} }
//--------------------------------------------------------------------+
// USB Interrupt Handler
//--------------------------------------------------------------------+
void USB0_IRQHandler(void)
{
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_HOST
tuh_isr(0);
#endif
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_isr(0);
#endif
}
void USB1_IRQHandler(void)
{
#if CFG_TUSB_RHPORT1_MODE & OPT_MODE_HOST
tuh_isr(1);
#endif
#if CFG_TUSB_RHPORT1_MODE & OPT_MODE_DEVICE
tud_isr(1);
#endif
}
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// Board porting API // Board porting API
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -35,6 +35,14 @@
#include "hpl_pm_config.h" #include "hpl_pm_config.h"
#include "hpl/pm/hpl_pm_base.h" #include "hpl/pm/hpl_pm_base.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB_Handler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM DECLARATION // MACRO TYPEDEF CONSTANT ENUM DECLARATION
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -32,6 +32,29 @@
#include "hpl/gclk/hpl_gclk_base.h" #include "hpl/gclk/hpl_gclk_base.h"
#include "hpl_mclk_config.h" #include "hpl_mclk_config.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB_0_Handler (void)
{
tud_irq_handler(0);
}
void USB_1_Handler (void)
{
tud_irq_handler(0);
}
void USB_2_Handler (void)
{
tud_irq_handler(0);
}
void USB_3_Handler (void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM DECLARATION // MACRO TYPEDEF CONSTANT ENUM DECLARATION
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -125,7 +125,7 @@ void USB_OTG1_IRQHandler(void)
#endif #endif
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_isr(0); tud_irq_handler(0);
#endif #endif
} }

View File

@ -125,7 +125,7 @@ void USB_OTG1_IRQHandler(void)
#endif #endif
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_isr(0); tud_irq_handler(0);
#endif #endif
} }

View File

@ -124,7 +124,7 @@ void USB_OTG1_IRQHandler(void)
#endif #endif
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_isr(0); tud_irq_handler(0);
#endif #endif
} }

View File

@ -128,7 +128,7 @@ void USB_OTG1_IRQHandler(void)
#endif #endif
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_isr(0); tud_irq_handler(0);
#endif #endif
} }
@ -139,7 +139,7 @@ void USB_OTG2_IRQHandler(void)
#endif #endif
#if CFG_TUSB_RHPORT1_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT1_MODE & OPT_MODE_DEVICE
tud_isr(1); tud_irq_handler(1);
#endif #endif
} }

View File

@ -128,7 +128,7 @@ void USB_OTG1_IRQHandler(void)
#endif #endif
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_isr(0); tud_irq_handler(0);
#endif #endif
} }
@ -139,7 +139,7 @@ void USB_OTG2_IRQHandler(void)
#endif #endif
#if CFG_TUSB_RHPORT1_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT1_MODE & OPT_MODE_DEVICE
tud_isr(1); tud_irq_handler(1);
#endif #endif
} }

View File

@ -128,7 +128,7 @@ void USB_OTG1_IRQHandler(void)
#endif #endif
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_isr(0); tud_irq_handler(0);
#endif #endif
} }
@ -139,7 +139,7 @@ void USB_OTG2_IRQHandler(void)
#endif #endif
#if CFG_TUSB_RHPORT1_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT1_MODE & OPT_MODE_DEVICE
tud_isr(1); tud_irq_handler(1);
#endif #endif
} }

View File

@ -28,6 +28,17 @@
#include "msp430.h" #include "msp430.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void __attribute__ ((interrupt(USB_UBM_VECTOR))) USB_UBM_ISR(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT P1OUT #define LED_PORT P1OUT
#define LED_PIN BIT0 #define LED_PIN BIT0
#define LED_STATE_ON 1 #define LED_STATE_ON 1

View File

@ -229,7 +229,7 @@ void USB0_IRQHandler(void)
#endif #endif
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_isr(0); tud_irq_handler(0);
#endif #endif
} }
@ -240,7 +240,7 @@ void USB1_IRQHandler(void)
#endif #endif
#if CFG_TUSB_RHPORT1_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT1_MODE & OPT_MODE_DEVICE
tud_isr(1); tud_irq_handler(1);
#endif #endif
} }

View File

@ -35,6 +35,14 @@
#include "nrf_soc.h" #include "nrf_soc.h"
#endif #endif
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USBD_IRQHandler(void)
{
tud_irq_handler(0);
}
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/
/* MACRO TYPEDEF CONSTANT ENUM /* MACRO TYPEDEF CONSTANT ENUM
*------------------------------------------------------------------*/ *------------------------------------------------------------------*/

View File

@ -29,6 +29,17 @@
#include "clk.h" #include "clk.h"
#include "sys.h" #include "sys.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USBD_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT PB #define LED_PORT PB
#define LED_PIN 4 #define LED_PIN 4
#define LED_PIN_IO PB4 #define LED_PIN_IO PB4

View File

@ -29,6 +29,17 @@
#include "clk.h" #include "clk.h"
#include "sys.h" #include "sys.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USBD_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT PB #define LED_PORT PB
#define LED_PIN 4 #define LED_PIN 4
#define LED_PIN_IO PB4 #define LED_PIN_IO PB4

View File

@ -29,6 +29,18 @@
#include "clk.h" #include "clk.h"
#include "sys.h" #include "sys.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USBD_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT PC #define LED_PORT PC
#define LED_PIN 9 #define LED_PIN 9
#define LED_PIN_IO PC9 #define LED_PIN_IO PC9

View File

@ -29,6 +29,17 @@
#include "clk.h" #include "clk.h"
#include "sys.h" #include "sys.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USBD_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT PB #define LED_PORT PB
#define LED_PIN 0 #define LED_PIN 0
#define LED_PIN_IO PB0 #define LED_PIN_IO PB0

View File

@ -27,6 +27,17 @@
#include "bsp/board.h" #include "bsp/board.h"
#include "NUC505Series.h" #include "NUC505Series.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USBD_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT PC #define LED_PORT PC
#define LED_PIN 3 #define LED_PIN 3
#define LED_STATE_ON 0 #define LED_STATE_ON 0

View File

@ -36,6 +36,14 @@
#include "nrf_soc.h" #include "nrf_soc.h"
#endif #endif
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USBD_IRQHandler(void)
{
tud_irq_handler(0);
}
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/
/* MACRO TYPEDEF CONSTANT ENUM /* MACRO TYPEDEF CONSTANT ENUM
*------------------------------------------------------------------*/ *------------------------------------------------------------------*/

View File

@ -35,6 +35,14 @@
#include "nrf_soc.h" #include "nrf_soc.h"
#endif #endif
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USBD_IRQHandler(void)
{
tud_irq_handler(0);
}
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/
/* MACRO TYPEDEF CONSTANT ENUM /* MACRO TYPEDEF CONSTANT ENUM
*------------------------------------------------------------------*/ *------------------------------------------------------------------*/

View File

@ -36,6 +36,14 @@
#include "nrf_soc.h" #include "nrf_soc.h"
#endif #endif
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USBD_IRQHandler(void)
{
tud_irq_handler(0);
}
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/
/* MACRO TYPEDEF CONSTANT ENUM /* MACRO TYPEDEF CONSTANT ENUM
*------------------------------------------------------------------*/ *------------------------------------------------------------------*/

View File

@ -29,6 +29,18 @@
#include "stm32f4xx.h" #include "stm32f4xx.h"
#include "stm32f4xx_hal_conf.h" #include "stm32f4xx_hal_conf.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void OTG_FS_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
// Blue LED is chosen because the other LEDs are connected to ST-LINK lines. // Blue LED is chosen because the other LEDs are connected to ST-LINK lines.
#define LED_PORT GPIOB #define LED_PORT GPIOB
#define LED_PIN GPIO_PIN_4 #define LED_PIN GPIO_PIN_4

View File

@ -35,6 +35,14 @@
#include "nrf_soc.h" #include "nrf_soc.h"
#endif #endif
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USBD_IRQHandler(void)
{
tud_irq_handler(0);
}
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/
/* MACRO TYPEDEF CONSTANT ENUM /* MACRO TYPEDEF CONSTANT ENUM
*------------------------------------------------------------------*/ *------------------------------------------------------------------*/

View File

@ -100,7 +100,7 @@ void board_init(void)
void UDP_Handler(void) void UDP_Handler(void)
{ {
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_isr(0); tud_irq_handler(0);
#endif #endif
} }

View File

@ -35,6 +35,14 @@
#include "hpl_pm_config.h" #include "hpl_pm_config.h"
#include "hpl/pm/hpl_pm_base.h" #include "hpl/pm/hpl_pm_base.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB_Handler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM DECLARATION // MACRO TYPEDEF CONSTANT ENUM DECLARATION
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -25,9 +25,19 @@
*/ */
#include "../board.h" #include "../board.h"
#include "stm32f0xx_hal.h" #include "stm32f0xx_hal.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT GPIOA #define LED_PORT GPIOA
#define LED_PIN GPIO_PIN_5 #define LED_PIN GPIO_PIN_5
#define LED_STATE_ON 1 #define LED_STATE_ON 1
@ -56,8 +66,6 @@ static void all_rcc_clk_enable(void)
void board_init(void) void board_init(void)
{ {
/* Configure the system clock to 48 MHz */ /* Configure the system clock to 48 MHz */
RCC_ClkInitTypeDef RCC_ClkInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct;
RCC_OscInitTypeDef RCC_OscInitStruct; RCC_OscInitTypeDef RCC_OscInitStruct;

View File

@ -25,9 +25,19 @@
*/ */
#include "../board.h" #include "../board.h"
#include "stm32f0xx_hal.h" #include "stm32f0xx_hal.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT GPIOC #define LED_PORT GPIOC
#define LED_PIN GPIO_PIN_6 #define LED_PIN GPIO_PIN_6
#define LED_STATE_ON 1 #define LED_STATE_ON 1

View File

@ -25,9 +25,29 @@
*/ */
#include "../board.h" #include "../board.h"
#include "stm32f1xx_hal.h" #include "stm32f1xx_hal.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB_HP_IRQHandler(void)
{
tud_irq_handler(0);
}
void USB_LP_IRQHandler(void)
{
tud_irq_handler(0);
}
void USBWakeUp_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT GPIOC #define LED_PORT GPIOC
#define LED_PIN GPIO_PIN_13 #define LED_PIN GPIO_PIN_13
#define LED_STATE_ON 0 #define LED_STATE_ON 0

View File

@ -28,6 +28,18 @@
#include "stm32f2xx_hal.h" #include "stm32f2xx_hal.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void OTG_FS_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT GPIOB #define LED_PORT GPIOB
#define LED_PIN GPIO_PIN_14 #define LED_PIN GPIO_PIN_14
#define LED_STATE_ON 1 #define LED_STATE_ON 1

View File

@ -25,9 +25,41 @@
*/ */
#include "../board.h" #include "../board.h"
#include "stm32f3xx_hal.h" #include "stm32f3xx_hal.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
// USB defaults to using interrupts 19, 20, and 42 (based on SYSCFG_CFGR1.USB_IT_RMP)
// FIXME: Do all three need to be handled, or just the LP one?
// USB high-priority interrupt (Channel 19): Triggered only by a correct
// transfer event for isochronous and double-buffer bulk transfer to reach
// the highest possible transfer rate.
void USB_HP_CAN_TX_IRQHandler(void)
{
tud_irq_handler(0);
}
// USB low-priority interrupt (Channel 20): Triggered by all USB events
// (Correct transfer, USB reset, etc.). The firmware has to check the
// interrupt source before serving the interrupt.
void USB_LP_CAN_RX0_IRQHandler(void)
{
tud_irq_handler(0);
}
// USB wakeup interrupt (Channel 42): Triggered by the wakeup event from the USB
// Suspend mode.
void USBWakeUp_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT GPIOE #define LED_PORT GPIOE
#define LED_PIN GPIO_PIN_9 #define LED_PIN GPIO_PIN_9
#define LED_STATE_ON 1 #define LED_STATE_ON 1

View File

@ -29,6 +29,18 @@
#include "stm32f4xx.h" #include "stm32f4xx.h"
#include "stm32f4xx_hal_conf.h" #include "stm32f4xx_hal_conf.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void OTG_FS_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT GPIOC #define LED_PORT GPIOC
#define LED_PIN GPIO_PIN_13 #define LED_PIN GPIO_PIN_13
#define LED_STATE_ON 1 #define LED_STATE_ON 1

View File

@ -28,6 +28,18 @@
#include "stm32f4xx_hal.h" #include "stm32f4xx_hal.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void OTG_FS_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT GPIOD #define LED_PORT GPIOD
#define LED_PIN GPIO_PIN_14 #define LED_PIN GPIO_PIN_14
#define LED_STATE_ON 1 #define LED_STATE_ON 1

View File

@ -28,6 +28,18 @@
#include "stm32f4xx_hal.h" #include "stm32f4xx_hal.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void OTG_FS_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT GPIOC #define LED_PORT GPIOC
#define LED_PIN GPIO_PIN_13 #define LED_PIN GPIO_PIN_13
#define LED_STATE_ON 1 #define LED_STATE_ON 1

View File

@ -25,9 +25,20 @@
*/ */
#include "../board.h" #include "../board.h"
#include "stm32f4xx_hal.h" #include "stm32f4xx_hal.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void OTG_FS_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
// Orange LED // Orange LED
#define LED_PORT GPIOD #define LED_PORT GPIOD
#define LED_PIN GPIO_PIN_13 #define LED_PIN GPIO_PIN_13

View File

@ -28,6 +28,18 @@
#include "stm32f4xx_hal.h" #include "stm32f4xx_hal.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void OTG_FS_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT GPIOE #define LED_PORT GPIOE
#define LED_PIN GPIO_PIN_2 #define LED_PIN GPIO_PIN_2
#define LED_STATE_ON 0 #define LED_STATE_ON 0

View File

@ -29,6 +29,18 @@
#include "stm32f7xx_hal.h" #include "stm32f7xx_hal.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void OTG_FS_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT GPIOB #define LED_PORT GPIOB
#define LED_PIN GPIO_PIN_14 #define LED_PIN GPIO_PIN_14
#define LED_STATE_ON 1 #define LED_STATE_ON 1

View File

@ -29,6 +29,18 @@
#include "stm32h7xx_hal.h" #include "stm32h7xx_hal.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void OTG_FS_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT GPIOB #define LED_PORT GPIOB
#define LED_PIN GPIO_PIN_0 #define LED_PIN GPIO_PIN_0
#define LED_STATE_ON 1 #define LED_STATE_ON 1

View File

@ -25,9 +25,19 @@
*/ */
#include "../board.h" #include "../board.h"
#include "stm32l0xx_hal.h" #include "stm32l0xx_hal.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void USB_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT GPIOA #define LED_PORT GPIOA
#define LED_PIN GPIO_PIN_5 #define LED_PIN GPIO_PIN_5
#define LED_STATE_ON 1 #define LED_STATE_ON 1

View File

@ -28,6 +28,18 @@
#include "stm32l4xx_hal.h" #include "stm32l4xx_hal.h"
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
void OTG_FS_IRQHandler(void)
{
tud_irq_handler(0);
}
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
#define LED_PORT GPIOB #define LED_PORT GPIOB
#define LED_PIN GPIO_PIN_2 #define LED_PIN GPIO_PIN_2
#define LED_STATE_ON 1 #define LED_STATE_ON 1

View File

@ -129,7 +129,7 @@ void USB_OTG1_IRQHandler(void)
#endif #endif
#if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT0_MODE & OPT_MODE_DEVICE
tud_isr(0); tud_irq_handler(0);
#endif #endif
} }
@ -140,7 +140,7 @@ void USB_OTG2_IRQHandler(void)
#endif #endif
#if CFG_TUSB_RHPORT1_MODE & OPT_MODE_DEVICE #if CFG_TUSB_RHPORT1_MODE & OPT_MODE_DEVICE
tud_isr(1); tud_irq_handler(1);
#endif #endif
} }

View File

@ -89,7 +89,7 @@ typedef struct TU_ATTR_ALIGNED(4)
void dcd_init (uint8_t rhport); void dcd_init (uint8_t rhport);
// Interrupt Handler // Interrupt Handler
void dcd_isr (uint8_t rhport); void dcd_irq_handler(uint8_t rhport) TU_ATTR_USED;
// Enable device interrupt // Enable device interrupt
void dcd_int_enable (uint8_t rhport); void dcd_int_enable (uint8_t rhport);

View File

@ -48,7 +48,7 @@ bool tud_init (void);
void tud_task (void); void tud_task (void);
// Interrupt handler, name alias to DCD // Interrupt handler, name alias to DCD
#define tud_isr dcd_isr #define tud_irq_handler dcd_irq_handler
// Check if device is connected and configured // Check if device is connected and configured
bool tud_mounted(void); bool tud_mounted(void);

View File

@ -331,13 +331,13 @@ void maybe_transfer_complete(void) {
} }
void dcd_isr (uint8_t rhport) void dcd_irq_handler (uint8_t rhport)
{ {
(void) rhport; (void) rhport;
uint32_t int_status = USB->DEVICE.INTFLAG.reg & USB->DEVICE.INTENSET.reg; uint32_t int_status = USB->DEVICE.INTFLAG.reg & USB->DEVICE.INTENSET.reg;
/*------------- Interrupt Processing -------------*/ // Start of Frame
if ( int_status & USB_DEVICE_INTFLAG_SOF ) if ( int_status & USB_DEVICE_INTFLAG_SOF )
{ {
USB->DEVICE.INTFLAG.reg = USB_DEVICE_INTFLAG_SOF; USB->DEVICE.INTFLAG.reg = USB_DEVICE_INTFLAG_SOF;
@ -370,6 +370,7 @@ void dcd_isr (uint8_t rhport)
dcd_event_bus_signal(0, DCD_EVENT_RESUME, true); dcd_event_bus_signal(0, DCD_EVENT_RESUME, true);
} }
// Enable of Reset
if ( int_status & USB_DEVICE_INTFLAG_EORST ) if ( int_status & USB_DEVICE_INTFLAG_EORST )
{ {
USB->DEVICE.INTFLAG.reg = USB_DEVICE_INTFLAG_EORST; USB->DEVICE.INTFLAG.reg = USB_DEVICE_INTFLAG_EORST;
@ -394,55 +395,4 @@ void dcd_isr (uint8_t rhport)
maybe_transfer_complete(); maybe_transfer_complete();
} }
#if CFG_TUSB_MCU == OPT_MCU_SAMD51
/*
*------------------------------------------------------------------*/
/* USB_EORSM_DNRSM, USB_EORST_RST, USB_LPMSUSP_DDISC, USB_LPM_DCONN,
USB_MSOF, USB_RAMACER, USB_RXSTP_TXSTP_0, USB_RXSTP_TXSTP_1,
USB_RXSTP_TXSTP_2, USB_RXSTP_TXSTP_3, USB_RXSTP_TXSTP_4,
USB_RXSTP_TXSTP_5, USB_RXSTP_TXSTP_6, USB_RXSTP_TXSTP_7,
USB_STALL0_STALL_0, USB_STALL0_STALL_1, USB_STALL0_STALL_2,
USB_STALL0_STALL_3, USB_STALL0_STALL_4, USB_STALL0_STALL_5,
USB_STALL0_STALL_6, USB_STALL0_STALL_7, USB_STALL1_0, USB_STALL1_1,
USB_STALL1_2, USB_STALL1_3, USB_STALL1_4, USB_STALL1_5, USB_STALL1_6,
USB_STALL1_7, USB_SUSPEND, USB_TRFAIL0_TRFAIL_0, USB_TRFAIL0_TRFAIL_1,
USB_TRFAIL0_TRFAIL_2, USB_TRFAIL0_TRFAIL_3, USB_TRFAIL0_TRFAIL_4,
USB_TRFAIL0_TRFAIL_5, USB_TRFAIL0_TRFAIL_6, USB_TRFAIL0_TRFAIL_7,
USB_TRFAIL1_PERR_0, USB_TRFAIL1_PERR_1, USB_TRFAIL1_PERR_2,
USB_TRFAIL1_PERR_3, USB_TRFAIL1_PERR_4, USB_TRFAIL1_PERR_5,
USB_TRFAIL1_PERR_6, USB_TRFAIL1_PERR_7, USB_UPRSM, USB_WAKEUP */
void USB_0_Handler(void) {
dcd_isr(0);
}
/* USB_SOF_HSOF */
void USB_1_Handler(void) {
dcd_isr(0);
}
// Bank zero is for OUT and SETUP transactions.
/* USB_TRCPT0_0, USB_TRCPT0_1, USB_TRCPT0_2,
USB_TRCPT0_3, USB_TRCPT0_4, USB_TRCPT0_5,
USB_TRCPT0_6, USB_TRCPT0_7 */
void USB_2_Handler(void) {
dcd_isr(0);
}
// Bank one is used for IN transactions.
/* USB_TRCPT1_0, USB_TRCPT1_1, USB_TRCPT1_2,
USB_TRCPT1_3, USB_TRCPT1_4, USB_TRCPT1_5,
USB_TRCPT1_6, USB_TRCPT1_7 */
void USB_3_Handler(void) {
dcd_isr(0);
}
#elif CFG_TUSB_MCU == OPT_MCU_SAMD21
void USB_Handler(void) {
dcd_isr(0);
}
#endif
#endif #endif

View File

@ -333,7 +333,7 @@ void dcd_edpt_clear_stall (uint8_t rhport, uint8_t ep_addr)
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// ISR // ISR
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
void dcd_isr(uint8_t rhport) void dcd_irq_handler(uint8_t rhport)
{ {
uint32_t const intr_mask = UDP->UDP_IMR; uint32_t const intr_mask = UDP->UDP_IMR;
uint32_t const intr_status = UDP->UDP_ISR & intr_mask; uint32_t const intr_status = UDP->UDP_ISR & intr_mask;

View File

@ -373,8 +373,10 @@ void bus_reset(void)
_dcd.xfer[0][TUSB_DIR_OUT].mps = MAX_PACKET_SIZE; _dcd.xfer[0][TUSB_DIR_OUT].mps = MAX_PACKET_SIZE;
} }
void USBD_IRQHandler(void) void dcd_irq_handler(uint8_t rhport)
{ {
(void) rhport;
uint32_t const inten = NRF_USBD->INTEN; uint32_t const inten = NRF_USBD->INTEN;
uint32_t int_status = 0; uint32_t int_status = 0;

View File

@ -306,8 +306,10 @@ void dcd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr)
ep->CFG |= USBD_CFG_CSTALL_Msk; ep->CFG |= USBD_CFG_CSTALL_Msk;
} }
void USBD_IRQHandler(void) void dcd_irq_handler(uint8_t rhport)
{ {
(void) rhport;
uint32_t status = USBD->INTSTS; uint32_t status = USBD->INTSTS;
uint32_t state = USBD->ATTR & 0xf; uint32_t state = USBD->ATTR & 0xf;
@ -424,12 +426,6 @@ void USBD_IRQHandler(void)
USBD->INTSTS = status & enabled_irqs; USBD->INTSTS = status & enabled_irqs;
} }
void dcd_isr(uint8_t rhport)
{
(void) rhport;
USBD_IRQHandler();
}
void dcd_disconnect(uint8_t rhport) void dcd_disconnect(uint8_t rhport)
{ {
(void) rhport; (void) rhport;

View File

@ -312,8 +312,10 @@ void dcd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr)
ep->CFG |= USBD_CFG_CSTALL_Msk; ep->CFG |= USBD_CFG_CSTALL_Msk;
} }
void USBD_IRQHandler(void) void dcd_irq_handler(uint8_t rhport)
{ {
(void) rhport;
uint32_t status = USBD->INTSTS; uint32_t status = USBD->INTSTS;
#ifdef SUPPORT_LPM #ifdef SUPPORT_LPM
uint32_t state = USBD->ATTR & 0x300f; uint32_t state = USBD->ATTR & 0x300f;
@ -440,12 +442,6 @@ void USBD_IRQHandler(void)
USBD->INTSTS = status & enabled_irqs; USBD->INTSTS = status & enabled_irqs;
} }
void dcd_isr(uint8_t rhport)
{
(void) rhport;
USBD_IRQHandler();
}
void dcd_disconnect(uint8_t rhport) void dcd_disconnect(uint8_t rhport)
{ {
(void) rhport; (void) rhport;

View File

@ -435,8 +435,10 @@ void dcd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr)
} }
} }
void USBD_IRQHandler(void) void dcd_irq_handler(uint8_t rhport)
{ {
(void) rhport;
uint32_t status = USBD->GINTSTS; uint32_t status = USBD->GINTSTS;
/* USB interrupt */ /* USB interrupt */
@ -646,12 +648,6 @@ void USBD_IRQHandler(void)
} }
} }
void dcd_isr(uint8_t rhport)
{
(void) rhport;
USBD_IRQHandler();
}
void dcd_disconnect(uint8_t rhport) void dcd_disconnect(uint8_t rhport)
{ {
(void) rhport; (void) rhport;

View File

@ -495,7 +495,7 @@ static void dd_complete_isr(uint8_t rhport, uint8_t ep_id)
} }
// main USB IRQ handler // main USB IRQ handler
void dcd_isr(uint8_t rhport) void dcd_irq_handler(uint8_t rhport)
{ {
uint32_t const dev_int_status = LPC_USB->DevIntSt & LPC_USB->DevIntEn; uint32_t const dev_int_status = LPC_USB->DevIntSt & LPC_USB->DevIntEn;
LPC_USB->DevIntClr = dev_int_status;// Acknowledge handled interrupt LPC_USB->DevIntClr = dev_int_status;// Acknowledge handled interrupt

View File

@ -49,13 +49,11 @@
// LPC 11Uxx, 13xx, 15xx use lpcopen // LPC 11Uxx, 13xx, 15xx use lpcopen
#include "chip.h" #include "chip.h"
#define DCD_REGS LPC_USB #define DCD_REGS LPC_USB
#define DCD_IRQHandler USB_IRQHandler
#elif CFG_TUSB_MCU == OPT_MCU_LPC51UXX || CFG_TUSB_MCU == OPT_MCU_LPC54XXX || \ #elif CFG_TUSB_MCU == OPT_MCU_LPC51UXX || CFG_TUSB_MCU == OPT_MCU_LPC54XXX || \
CFG_TUSB_MCU == OPT_MCU_LPC55XX // TODO 55xx has dual usb controllers CFG_TUSB_MCU == OPT_MCU_LPC55XX // TODO 55xx has dual usb controllers
#include "fsl_device_registers.h" #include "fsl_device_registers.h"
#define DCD_REGS USB0 #define DCD_REGS USB0
#define DCD_IRQHandler USB0_IRQHandler
#endif #endif
@ -335,8 +333,10 @@ static void process_xfer_isr(uint32_t int_status)
} }
} }
void DCD_IRQHandler(void) void dcd_irq_handler(uint8_t rhport)
{ {
(void) rhport; // TODO support multiple USB on supported mcu such as LPC55s69
uint32_t const cmd_stat = DCD_REGS->DEVCMDSTAT; uint32_t const cmd_stat = DCD_REGS->DEVCMDSTAT;
uint32_t int_status = DCD_REGS->INTSTAT & DCD_REGS->INTEN; uint32_t int_status = DCD_REGS->INTSTAT & DCD_REGS->INTEN;

View File

@ -492,7 +492,7 @@ bool dcd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t * buffer, uint16_t t
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// ISR // ISR
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
void dcd_isr(uint8_t rhport) void dcd_irq_handler(uint8_t rhport)
{ {
dcd_registers_t* const dcd_reg = _dcd_controller[rhport].regs; dcd_registers_t* const dcd_reg = _dcd_controller[rhport].regs;

View File

@ -501,7 +501,9 @@ static void dcd_ep_ctr_handler(void)
} }
} }
static void dcd_fs_irqHandler(void) { void dcd_irq_handler(uint8_t rhport) {
(void) rhport;
uint32_t int_status = USB->ISTR; uint32_t int_status = USB->ISTR;
//const uint32_t handled_ints = USB_ISTR_CTR | USB_ISTR_RESET | USB_ISTR_WKUP //const uint32_t handled_ints = USB_ISTR_CTR | USB_ISTR_RESET | USB_ISTR_WKUP
@ -816,57 +818,5 @@ static bool dcd_read_packet_memory(void *__restrict dst, uint16_t src, size_t wN
return true; return true;
} }
// Interrupt handlers
#if CFG_TUSB_MCU == OPT_MCU_STM32F0 || CFG_TUSB_MCU == OPT_MCU_STM32L0
void USB_IRQHandler(void)
{
dcd_fs_irqHandler();
}
#elif CFG_TUSB_MCU == OPT_MCU_STM32F1
void USB_HP_IRQHandler(void)
{
dcd_fs_irqHandler();
}
void USB_LP_IRQHandler(void)
{
dcd_fs_irqHandler();
}
void USBWakeUp_IRQHandler(void)
{
dcd_fs_irqHandler();
}
#elif (CFG_TUSB_MCU) == (OPT_MCU_STM32F3)
// USB defaults to using interrupts 19, 20, and 42 (based on SYSCFG_CFGR1.USB_IT_RMP)
// FIXME: Do all three need to be handled, or just the LP one?
// USB high-priority interrupt (Channel 19): Triggered only by a correct
// transfer event for isochronous and double-buffer bulk transfer to reach
// the highest possible transfer rate.
void USB_HP_CAN_TX_IRQHandler(void)
{
dcd_fs_irqHandler();
}
// USB low-priority interrupt (Channel 20): Triggered by all USB events
// (Correct transfer, USB reset, etc.). The firmware has to check the
// interrupt source before serving the interrupt.
void USB_LP_CAN_RX0_IRQHandler(void)
{
dcd_fs_irqHandler();
}
// USB wakeup interrupt (Channel 42): Triggered by the wakeup event from the USB
// Suspend mode.
void USBWakeUp_IRQHandler(void)
{
dcd_fs_irqHandler();
}
#else
#error Which IRQ handler do you need?
#endif
#endif #endif

View File

@ -656,7 +656,10 @@ static void handle_epin_ints(USB_OTG_DeviceTypeDef * dev, USB_OTG_INEndpointType
} }
} }
void OTG_FS_IRQHandler(void) { void dcd_irq_handler(uint8_t rhport) {
(void) rhport;
USB_OTG_DeviceTypeDef * dev = DEVICE_BASE; USB_OTG_DeviceTypeDef * dev = DEVICE_BASE;
USB_OTG_OUTEndpointTypeDef * out_ep = OUT_EP_BASE; USB_OTG_OUTEndpointTypeDef * out_ep = OUT_EP_BASE;
USB_OTG_INEndpointTypeDef * in_ep = IN_EP_BASE; USB_OTG_INEndpointTypeDef * in_ep = IN_EP_BASE;

View File

@ -539,8 +539,10 @@ static void handle_setup_packet(void)
dcd_event_setup_received(0, (uint8_t*) &_setup_packet[0], true); dcd_event_setup_received(0, (uint8_t*) &_setup_packet[0], true);
} }
void __attribute__ ((interrupt(USB_UBM_VECTOR))) USB_UBM_ISR(void) void dcd_irq_handler(uint8_t rhport)
{ {
(void) rhport;
// Setup is special- reading USBVECINT to handle setup packets is done to // Setup is special- reading USBVECINT to handle setup packets is done to
// stop hardware-generated NAKs on EP0. // stop hardware-generated NAKs on EP0.
uint8_t setup_status = USBIFG & SETUPIFG; uint8_t setup_status = USBIFG & SETUPIFG;

View File

@ -613,7 +613,7 @@ static void handle_setup(void)
usb_setup_ev_pending_write(1); usb_setup_ev_pending_write(1);
} }
void hal_dcd_isr(uint8_t rhport) void dcd_irq_handler(uint8_t rhport)
{ {
(void)rhport; (void)rhport;
uint8_t next_ev; uint8_t next_ev;

View File

@ -1,33 +0,0 @@
/*
* The MIT License (MIT)
*
* Copyright (c) 2019 Ha Thach (tinyusb.org)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* This file is part of the TinyUSB stack.
*/
#include "common/tusb_common.h"
#if (CFG_TUSB_MCU == OPT_MCU_VALENTYUSB_EPTRI)
// No HAL-specific stuff here!
#endif