mirror of
https://github.com/hathach/tinyusb.git
synced 2025-12-01 12:24:17 +00:00
Merge branch 'master' into xfer-fifo
# Conflicts: # src/common/tusb_fifo.h
This commit is contained in:
@ -59,7 +59,7 @@ Minimal Example
|
|||||||
}
|
}
|
||||||
|
|
||||||
void USB1_IRQHandler(void) {
|
void USB1_IRQHandler(void) {
|
||||||
// forward interrupt port 0 to TinyUSB stack
|
// forward interrupt port 1 to TinyUSB stack
|
||||||
tusb_int_handler(1, true);
|
tusb_int_handler(1, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -13,6 +13,7 @@ elseif (TOOLCHAIN STREQUAL "clang")
|
|||||||
--target=arm-none-eabi
|
--target=arm-none-eabi
|
||||||
-mcpu=cortex-m55
|
-mcpu=cortex-m55
|
||||||
-mfpu=fpv5-d16
|
-mfpu=fpv5-d16
|
||||||
|
-mcmse
|
||||||
)
|
)
|
||||||
set(FREERTOS_PORT GCC_ARM_CM55_NTZ_NONSECURE CACHE INTERNAL "")
|
set(FREERTOS_PORT GCC_ARM_CM55_NTZ_NONSECURE CACHE INTERNAL "")
|
||||||
|
|
||||||
@ -20,6 +21,7 @@ elseif (TOOLCHAIN STREQUAL "iar")
|
|||||||
set(TOOLCHAIN_COMMON_FLAGS
|
set(TOOLCHAIN_COMMON_FLAGS
|
||||||
--cpu cortex-m55
|
--cpu cortex-m55
|
||||||
--fpu VFPv5_D16
|
--fpu VFPv5_D16
|
||||||
|
--cmse
|
||||||
)
|
)
|
||||||
set(FREERTOS_PORT IAR_ARM_CM55_NTZ_NONSECURE CACHE INTERNAL "")
|
set(FREERTOS_PORT IAR_ARM_CM55_NTZ_NONSECURE CACHE INTERNAL "")
|
||||||
|
|
||||||
|
|||||||
@ -119,8 +119,8 @@ TU_VERIFY_STATIC(sizeof(desc2_uac2_configuration) == CONFIG_UAC2_TOTAL_LEN, "Inc
|
|||||||
|
|
||||||
// device qualifier is mostly similar to device descriptor since we don't change configuration based on speed
|
// device qualifier is mostly similar to device descriptor since we don't change configuration based on speed
|
||||||
tusb_desc_device_qualifier_t const desc_device_qualifier = {
|
tusb_desc_device_qualifier_t const desc_device_qualifier = {
|
||||||
.bLength = sizeof(tusb_desc_device_t),
|
.bLength = sizeof(tusb_desc_device_qualifier_t),
|
||||||
.bDescriptorType = TUSB_DESC_DEVICE,
|
.bDescriptorType = TUSB_DESC_DEVICE_QUALIFIER,
|
||||||
.bcdUSB = 0x0200,
|
.bcdUSB = 0x0200,
|
||||||
|
|
||||||
.bDeviceClass = TUSB_CLASS_MISC,
|
.bDeviceClass = TUSB_CLASS_MISC,
|
||||||
|
|||||||
@ -153,8 +153,8 @@ static uint8_t const desc_hs_configuration[] = {
|
|||||||
|
|
||||||
// device qualifier is mostly similar to device descriptor since we don't change configuration based on speed
|
// device qualifier is mostly similar to device descriptor since we don't change configuration based on speed
|
||||||
static tusb_desc_device_qualifier_t const desc_device_qualifier = {
|
static tusb_desc_device_qualifier_t const desc_device_qualifier = {
|
||||||
.bLength = sizeof(tusb_desc_device_t),
|
.bLength = sizeof(tusb_desc_device_qualifier_t),
|
||||||
.bDescriptorType = TUSB_DESC_DEVICE,
|
.bDescriptorType = TUSB_DESC_DEVICE_QUALIFIER,
|
||||||
.bcdUSB = USB_BCD,
|
.bcdUSB = USB_BCD,
|
||||||
|
|
||||||
.bDeviceClass = TUSB_CLASS_MISC,
|
.bDeviceClass = TUSB_CLASS_MISC,
|
||||||
|
|||||||
@ -2,13 +2,15 @@
|
|||||||
# Install python3 HID package https://pypi.org/project/hid/
|
# Install python3 HID package https://pypi.org/project/hid/
|
||||||
# Install python3 matplotlib package https://pypi.org/project/matplotlib/
|
# Install python3 matplotlib package https://pypi.org/project/matplotlib/
|
||||||
|
|
||||||
from ctypes import *
|
from ctypes import Structure, c_uint32, c_uint8, c_int8, c_int16, c_uint16
|
||||||
|
import signal
|
||||||
try:
|
try:
|
||||||
import hid
|
import hid
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
import matplotlib.animation as animation
|
import matplotlib.animation as animation
|
||||||
except:
|
except:
|
||||||
print("Missing import, please try 'pip install hid matplotlib' or consult your OS's python package manager.")
|
print("Missing import, please try 'pip install hid matplotlib' or consult your OS's python package manager.")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
# Example must be compiled with CFG_AUDIO_DEBUG=1
|
# Example must be compiled with CFG_AUDIO_DEBUG=1
|
||||||
VID = 0xcafe
|
VID = 0xcafe
|
||||||
@ -29,6 +31,7 @@ class audio_debug_info_t (Structure):
|
|||||||
dev = hid.Device(VID, PID)
|
dev = hid.Device(VID, PID)
|
||||||
|
|
||||||
if dev:
|
if dev:
|
||||||
|
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
||||||
# Create figure for plotting
|
# Create figure for plotting
|
||||||
fig = plt.figure()
|
fig = plt.figure()
|
||||||
ax = fig.add_subplot(1, 1, 1)
|
ax = fig.add_subplot(1, 1, 1)
|
||||||
@ -61,10 +64,10 @@ if dev:
|
|||||||
ax.set_ylim(bottom=0, top=info.fifo_size)
|
ax.set_ylim(bottom=0, top=info.fifo_size)
|
||||||
|
|
||||||
# Format plot
|
# Format plot
|
||||||
plt.title('FIFO information')
|
ax.set_title('FIFO information')
|
||||||
plt.grid()
|
ax.grid(True)
|
||||||
|
|
||||||
print(f'Sample rate:{info.sample_rate} | Alt settings:{info.alt_settings} | Volume:{info.volume[:]}')
|
print(f'Sample rate:{info.sample_rate} | Alt settings:{info.alt_settings} | Volume:{info.volume[:]}')
|
||||||
|
|
||||||
ani = animation.FuncAnimation(fig, animate, interval=10)
|
ani = animation.FuncAnimation(fig, animate, interval=10, cache_frame_data=False) # type: ignore
|
||||||
plt.show()
|
plt.show(block=True)
|
||||||
|
|||||||
@ -174,8 +174,8 @@ TU_VERIFY_STATIC(sizeof(desc_uac2_configuration) == CONFIG_UAC2_TOTAL_LEN, "Inco
|
|||||||
|
|
||||||
// device qualifier is mostly similar to device descriptor since we don't change configuration based on speed
|
// device qualifier is mostly similar to device descriptor since we don't change configuration based on speed
|
||||||
tusb_desc_device_qualifier_t const desc_device_qualifier = {
|
tusb_desc_device_qualifier_t const desc_device_qualifier = {
|
||||||
.bLength = sizeof(tusb_desc_device_t),
|
.bLength = sizeof(tusb_desc_device_qualifier_t),
|
||||||
.bDescriptorType = TUSB_DESC_DEVICE,
|
.bDescriptorType = TUSB_DESC_DEVICE_QUALIFIER,
|
||||||
.bcdUSB = 0x0200,
|
.bcdUSB = 0x0200,
|
||||||
|
|
||||||
.bDeviceClass = TUSB_CLASS_MISC,
|
.bDeviceClass = TUSB_CLASS_MISC,
|
||||||
|
|||||||
@ -385,8 +385,8 @@ static uint8_t * get_hs_configuration_desc(void) {
|
|||||||
|
|
||||||
// device qualifier is mostly similar to device descriptor since we don't change configuration based on speed
|
// device qualifier is mostly similar to device descriptor since we don't change configuration based on speed
|
||||||
static tusb_desc_device_qualifier_t const desc_device_qualifier = {
|
static tusb_desc_device_qualifier_t const desc_device_qualifier = {
|
||||||
.bLength = sizeof(tusb_desc_device_t),
|
.bLength = sizeof(tusb_desc_device_qualifier_t),
|
||||||
.bDescriptorType = TUSB_DESC_DEVICE,
|
.bDescriptorType = TUSB_DESC_DEVICE_QUALIFIER,
|
||||||
.bcdUSB = USB_BCD,
|
.bcdUSB = USB_BCD,
|
||||||
|
|
||||||
.bDeviceClass = TUSB_CLASS_MISC,
|
.bDeviceClass = TUSB_CLASS_MISC,
|
||||||
|
|||||||
@ -552,8 +552,8 @@ static uint8_t * get_hs_configuration_desc(void) {
|
|||||||
|
|
||||||
// device qualifier is mostly similar to device descriptor since we don't change configuration based on speed
|
// device qualifier is mostly similar to device descriptor since we don't change configuration based on speed
|
||||||
static tusb_desc_device_qualifier_t const desc_device_qualifier = {
|
static tusb_desc_device_qualifier_t const desc_device_qualifier = {
|
||||||
.bLength = sizeof(tusb_desc_device_t),
|
.bLength = sizeof(tusb_desc_device_qualifier_t),
|
||||||
.bDescriptorType = TUSB_DESC_DEVICE,
|
.bDescriptorType = TUSB_DESC_DEVICE_QUALIFIER,
|
||||||
.bcdUSB = USB_BCD,
|
.bcdUSB = USB_BCD,
|
||||||
|
|
||||||
.bDeviceClass = TUSB_CLASS_MISC,
|
.bDeviceClass = TUSB_CLASS_MISC,
|
||||||
|
|||||||
@ -75,16 +75,17 @@ void board_init(void)
|
|||||||
/* vbus ignore */
|
/* vbus ignore */
|
||||||
board_vbus_sense_init();
|
board_vbus_sense_init();
|
||||||
|
|
||||||
/* configure systick */
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
SysTick_Config(system_core_clock / 1000);
|
/* configure systick */
|
||||||
|
SysTick_Config(system_core_clock / 1000);
|
||||||
#if CFG_TUSB_OS == OPT_OS_FREERTOS
|
NVIC_SetPriority(OTGHS_IRQn, 0);
|
||||||
|
NVIC_SetPriority(OTGFS1_IRQn, 0);
|
||||||
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(OTGHS_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
NVIC_SetPriority(OTGHS_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
||||||
NVIC_SetPriority(OTGFS1_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
NVIC_SetPriority(OTGFS1_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
||||||
#else
|
|
||||||
NVIC_SetPriority(OTGHS_IRQn, 0);
|
|
||||||
NVIC_SetPriority(OTGFS1_IRQn, 0);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* config led and key */
|
/* config led and key */
|
||||||
|
|||||||
@ -74,12 +74,14 @@ void board_init(void) {
|
|||||||
/* vbus ignore */
|
/* vbus ignore */
|
||||||
board_vbus_sense_init();
|
board_vbus_sense_init();
|
||||||
|
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
|
||||||
#if CFG_TUSB_OS == OPT_OS_FREERTOS
|
#if CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(OTGFS1_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
NVIC_SetPriority(OTGFS1_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
||||||
NVIC_SetPriority(OTGFS2_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
NVIC_SetPriority(OTGFS2_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
||||||
#else
|
#else
|
||||||
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
NVIC_SetPriority(OTGFS1_IRQn, 0);
|
NVIC_SetPriority(OTGFS1_IRQn, 0);
|
||||||
NVIC_SetPriority(OTGFS2_IRQn, 0);
|
NVIC_SetPriority(OTGFS2_IRQn, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -120,8 +120,9 @@ void board_init(void) {
|
|||||||
#if CFG_TUSB_OS == OPT_OS_NONE
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
|
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(USB_OTG1_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
NVIC_SetPriority(USB_OTG1_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
||||||
#ifdef USBPHY2
|
#ifdef USBPHY2
|
||||||
|
|||||||
@ -61,6 +61,8 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -59,6 +59,8 @@ void board_init(void)
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -74,6 +74,8 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -54,6 +54,8 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -77,10 +77,12 @@ void board_init(void)
|
|||||||
{
|
{
|
||||||
SystemCoreClockUpdate();
|
SystemCoreClockUpdate();
|
||||||
|
|
||||||
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
#if CFG_TUSB_OS == OPT_OS_FREERTOS
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -54,6 +54,8 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(USB_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
NVIC_SetPriority(USB_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -83,6 +83,8 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
||||||
NVIC_SetPriority(USB1_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
NVIC_SetPriority(USB1_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
||||||
|
|||||||
@ -89,6 +89,8 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(USB_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
NVIC_SetPriority(USB_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -100,6 +100,8 @@ void board_init(void)
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -57,6 +57,8 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -108,10 +108,12 @@ void board_init(void) {
|
|||||||
// Init 96 MHz clock
|
// Init 96 MHz clock
|
||||||
BootClockFROHF96M();
|
BootClockFROHF96M();
|
||||||
|
|
||||||
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
#if CFG_TUSB_OS == OPT_OS_FREERTOS
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -147,7 +147,7 @@ void board_init(void) {
|
|||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
|
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
// Explicitly disable systick to prevent its ISR runs before scheduler start
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
SysTick->CTRL &= ~1U;
|
SysTick->CTRL &= ~1U;
|
||||||
|
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
|
|||||||
@ -66,6 +66,8 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(USB_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
NVIC_SetPriority(USB_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -68,6 +68,8 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
#if CFG_TUSB_MCU == OPT_MCU_MCXN9
|
#if CFG_TUSB_MCU == OPT_MCU_MCXN9
|
||||||
NVIC_SetPriority(USB0_FS_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
NVIC_SetPriority(USB0_FS_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
||||||
|
|||||||
@ -70,8 +70,13 @@ void board_init(void) {
|
|||||||
// usb clock
|
// usb clock
|
||||||
USB_DeviceClockInit();
|
USB_DeviceClockInit();
|
||||||
|
|
||||||
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
NVIC_SetPriority(SysTick_IRQn, 0x0);
|
NVIC_SetPriority(SysTick_IRQn, 0x0);
|
||||||
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
|
#endif
|
||||||
|
|
||||||
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);
|
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);
|
||||||
|
|
||||||
|
|||||||
@ -85,6 +85,8 @@ void board_init(void)
|
|||||||
#if CFG_TUSB_OS == OPT_OS_NONE
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -72,6 +72,9 @@ void board_init(void)
|
|||||||
#if CFG_TUSB_OS == OPT_OS_NONE
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(48000000 / 1000);
|
SysTick_Config(48000000 / 1000);
|
||||||
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
GPIO_SetMode(LED_PORT, 1UL << LED_PIN, GPIO_PMD_OUTPUT);
|
GPIO_SetMode(LED_PORT, 1UL << LED_PIN, GPIO_PMD_OUTPUT);
|
||||||
|
|||||||
@ -118,6 +118,9 @@ void board_init(void) {
|
|||||||
|
|
||||||
#if CFG_TUSB_OS == OPT_OS_NONE
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
board_led_write(false);
|
board_led_write(false);
|
||||||
|
|||||||
@ -86,7 +86,12 @@ void board_init(void)
|
|||||||
|
|
||||||
// 1ms tick timer (samd SystemCoreClock may not correct)
|
// 1ms tick timer (samd SystemCoreClock may not correct)
|
||||||
SystemCoreClock = CONF_CPU_FREQUENCY;
|
SystemCoreClock = CONF_CPU_FREQUENCY;
|
||||||
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
SysTick_Config(CONF_CPU_FREQUENCY / 1000);
|
SysTick_Config(CONF_CPU_FREQUENCY / 1000);
|
||||||
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Led init
|
// Led init
|
||||||
gpio_set_pin_direction(LED_PIN, GPIO_DIRECTION_OUT);
|
gpio_set_pin_direction(LED_PIN, GPIO_DIRECTION_OUT);
|
||||||
|
|||||||
@ -154,6 +154,9 @@ void board_init(void) {
|
|||||||
SystemCoreClock = CONF_CPU_FREQUENCY;
|
SystemCoreClock = CONF_CPU_FREQUENCY;
|
||||||
#if CFG_TUSB_OS == OPT_OS_NONE
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
SysTick_Config(CONF_CPU_FREQUENCY / 1000);
|
SysTick_Config(CONF_CPU_FREQUENCY / 1000);
|
||||||
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Led init
|
// Led init
|
||||||
|
|||||||
@ -103,7 +103,13 @@ void board_init(void) {
|
|||||||
// Update SystemCoreClock since it is hard coded with asf4 and not correct
|
// Update SystemCoreClock since it is hard coded with asf4 and not correct
|
||||||
// Init 1ms tick timer (samd SystemCoreClock may not correct)
|
// Init 1ms tick timer (samd SystemCoreClock may not correct)
|
||||||
SystemCoreClock = CONF_CPU_FREQUENCY;
|
SystemCoreClock = CONF_CPU_FREQUENCY;
|
||||||
|
|
||||||
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
SysTick_Config(CONF_CPU_FREQUENCY / 1000);
|
SysTick_Config(CONF_CPU_FREQUENCY / 1000);
|
||||||
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Led init
|
// Led init
|
||||||
gpio_set_pin_direction(LED_PIN, GPIO_DIRECTION_OUT);
|
gpio_set_pin_direction(LED_PIN, GPIO_DIRECTION_OUT);
|
||||||
|
|||||||
@ -129,6 +129,11 @@ void board_init(void) {
|
|||||||
#if CFG_TUSB_OS == OPT_OS_NONE
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
// 1ms tick timer (SystemCoreClock may not be correct after init)
|
// 1ms tick timer (SystemCoreClock may not be correct after init)
|
||||||
SysTick_Config(CONF_CPU_FREQUENCY / 1000);
|
SysTick_Config(CONF_CPU_FREQUENCY / 1000);
|
||||||
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
|
NVIC_SetPriority((IRQn_Type) ID_USBHS, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Enable USB clock
|
// Enable USB clock
|
||||||
|
|||||||
@ -88,6 +88,8 @@ void board_init(void) {
|
|||||||
// 1ms tick timer (samd SystemCoreClock may not correct)
|
// 1ms tick timer (samd SystemCoreClock may not correct)
|
||||||
SysTick_Config(CONF_CPU_FREQUENCY / 1000);
|
SysTick_Config(CONF_CPU_FREQUENCY / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
NVIC_SetPriority(UDP_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
NVIC_SetPriority(UDP_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -68,7 +68,7 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
// Explicitly disable systick to prevent its ISR runs before scheduler start
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
SysTick->CTRL &= ~1U;
|
SysTick->CTRL &= ~1U;
|
||||||
|
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
|
|||||||
@ -62,7 +62,7 @@ void board_init(void) {
|
|||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
|
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
// Explicitly disable systick to prevent its ISR runs before scheduler start
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
SysTick->CTRL &= ~1U;
|
SysTick->CTRL &= ~1U;
|
||||||
|
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
|
|||||||
@ -77,8 +77,9 @@ void board_init(void) {
|
|||||||
#if CFG_TUSB_OS == OPT_OS_NONE
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
|
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(USB_HP_CAN1_TX_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
NVIC_SetPriority(USB_HP_CAN1_TX_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
||||||
NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
|
||||||
|
|||||||
@ -56,6 +56,9 @@ void board_init(void) {
|
|||||||
#if CFG_TUSB_OS == OPT_OS_NONE
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
all_rcc_clk_enable();
|
all_rcc_clk_enable();
|
||||||
|
|||||||
@ -68,10 +68,13 @@ void USBWakeUp_RMP_IRQHandler(void) {
|
|||||||
void board_init(void) {
|
void board_init(void) {
|
||||||
SystemClock_Config();
|
SystemClock_Config();
|
||||||
|
|
||||||
#if CFG_TUSB_OS == OPT_OS_NONE
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#endif
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Remap the USB interrupts
|
// Remap the USB interrupts
|
||||||
__HAL_RCC_SYSCFG_CLK_ENABLE();
|
__HAL_RCC_SYSCFG_CLK_ENABLE();
|
||||||
|
|||||||
@ -102,7 +102,7 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
// Explicitly disable systick to prevent its ISR runs before scheduler start
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
SysTick->CTRL &= ~1U;
|
SysTick->CTRL &= ~1U;
|
||||||
|
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
|
|||||||
@ -105,7 +105,7 @@ void board_init(void) {
|
|||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
|
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
// Explicitly disable systick to prevent its ISR runs before scheduler start
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
SysTick->CTRL &= ~1U;
|
SysTick->CTRL &= ~1U;
|
||||||
|
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
|
|||||||
@ -65,7 +65,7 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
// Explicitly disable systick to prevent its ISR runs before scheduler start
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
SysTick->CTRL &= ~1U;
|
SysTick->CTRL &= ~1U;
|
||||||
|
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
|
|||||||
@ -77,7 +77,7 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
// Explicitly disable systick to prevent its ISR runs before scheduler start
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
SysTick->CTRL &= ~1U;
|
SysTick->CTRL &= ~1U;
|
||||||
|
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
|
|||||||
@ -88,7 +88,7 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
// Explicitly disable systick to prevent its ISR runs before scheduler start
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
SysTick->CTRL &= ~1U;
|
SysTick->CTRL &= ~1U;
|
||||||
|
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
|
|||||||
@ -130,7 +130,7 @@ void board_init(void) {
|
|||||||
SysTick_Config(SystemCoreClock / 1000u);
|
SysTick_Config(SystemCoreClock / 1000u);
|
||||||
|
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
// Explicitly disable systick to prevent its ISR runs before scheduler start
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
SysTick->CTRL &= ~1UL;
|
SysTick->CTRL &= ~1UL;
|
||||||
|
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
|
|||||||
@ -304,7 +304,7 @@ void board_init(void) {
|
|||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
|
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
// Explicitly disable systick to prevent its ISR runs before scheduler start
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
SysTick->CTRL &= ~1U;
|
SysTick->CTRL &= ~1U;
|
||||||
|
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
|
|||||||
@ -54,7 +54,7 @@ void board_init(void) {
|
|||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
|
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
// Explicitly disable systick to prevent its ISR runs before scheduler start
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
SysTick->CTRL &= ~1U;
|
SysTick->CTRL &= ~1U;
|
||||||
|
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
|
|||||||
@ -78,6 +78,8 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
#if defined(USB_OTG_FS)
|
#if defined(USB_OTG_FS)
|
||||||
NVIC_SetPriority(OTG_FS_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
NVIC_SetPriority(OTG_FS_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
||||||
|
|||||||
@ -140,7 +140,7 @@ void board_init(void) {
|
|||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
|
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
// Explicitly disable systick to prevent its ISR runs before scheduler start
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
SysTick->CTRL &= ~1U;
|
SysTick->CTRL &= ~1U;
|
||||||
|
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
|
|||||||
@ -44,11 +44,11 @@ set(STARTUP_FILE_GNU ${ST_CMSIS}/Source/Templates/gcc/startup_${MCU_VARIANT}.s)
|
|||||||
set(STARTUP_FILE_Clang ${STARTUP_FILE_GNU})
|
set(STARTUP_FILE_Clang ${STARTUP_FILE_GNU})
|
||||||
set(STARTUP_FILE_IAR ${ST_CMSIS}/Source/Templates/iar/startup_${MCU_VARIANT}.s)
|
set(STARTUP_FILE_IAR ${ST_CMSIS}/Source/Templates/iar/startup_${MCU_VARIANT}.s)
|
||||||
if(NOT DEFINED LD_FILE_GNU)
|
if(NOT DEFINED LD_FILE_GNU)
|
||||||
set(LD_FILE_GNU ${ST_CMSIS}/Source/Templates/gcc/linker/${MCU_VARIANT}_flash.ld)
|
set(LD_FILE_GNU ${ST_CMSIS}/Source/Templates/gcc/linker/${MCU_VARIANT}_axisram2_fsbl.ld)
|
||||||
endif()
|
endif()
|
||||||
set(LD_FILE_Clang ${LD_FILE_GNU})
|
set(LD_FILE_Clang ${LD_FILE_GNU})
|
||||||
if(NOT DEFINED LD_FILE_IAR)
|
if(NOT DEFINED LD_FILE_IAR)
|
||||||
set(LD_FILE_IAR ${ST_CMSIS}/Source/Templates/iar/linker/${MCU_VARIANT}_flash.icf)
|
set(LD_FILE_IAR ${ST_CMSIS}/Source/Templates/iar/linker/${MCU_VARIANT}_axisram2_fsbl.icf)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#------------------------------------
|
#------------------------------------
|
||||||
|
|||||||
@ -70,6 +70,14 @@ void board_init(void) {
|
|||||||
#endif
|
#endif
|
||||||
__HAL_RCC_PWR_CLK_ENABLE();
|
__HAL_RCC_PWR_CLK_ENABLE();
|
||||||
|
|
||||||
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
|
// 1ms tick timer
|
||||||
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
|
#endif
|
||||||
|
|
||||||
// LED
|
// LED
|
||||||
GPIO_InitTypeDef GPIO_InitStruct;
|
GPIO_InitTypeDef GPIO_InitStruct;
|
||||||
GPIO_InitStruct.Pin = LED_PIN;
|
GPIO_InitStruct.Pin = LED_PIN;
|
||||||
|
|||||||
@ -90,6 +90,9 @@ void board_init(void) {
|
|||||||
#if CFG_TUSB_OS == OPT_OS_NONE
|
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
GPIO_InitTypeDef GPIO_InitStruct;
|
GPIO_InitTypeDef GPIO_InitStruct;
|
||||||
|
|||||||
@ -64,7 +64,7 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
// Explicitly disable systick to prevent its ISR runs before scheduler start
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
SysTick->CTRL &= ~1U;
|
SysTick->CTRL &= ~1U;
|
||||||
|
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
|
|||||||
@ -131,7 +131,7 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
// Explicitly disable systick to prevent its ISR runs before scheduler start
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
SysTick->CTRL &= ~1U;
|
SysTick->CTRL &= ~1U;
|
||||||
|
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
|
|||||||
@ -77,6 +77,8 @@ void board_init(void) {
|
|||||||
// 1ms tick timer
|
// 1ms tick timer
|
||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
|
SysTick->CTRL &= ~1U;
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
NVIC_SetPriority(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -78,7 +78,7 @@ void board_init(void) {
|
|||||||
SysTick_Config(SystemCoreClock / 1000);
|
SysTick_Config(SystemCoreClock / 1000);
|
||||||
|
|
||||||
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
#elif CFG_TUSB_OS == OPT_OS_FREERTOS
|
||||||
// Explicitly disable systick to prevent its ISR runs before scheduler start
|
// Explicitly disable systick to prevent its ISR from running before scheduler start
|
||||||
SysTick->CTRL &= ~1U;
|
SysTick->CTRL &= ~1U;
|
||||||
|
|
||||||
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
// If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
|
||||||
|
|||||||
@ -244,7 +244,9 @@ TU_ATTR_ALWAYS_INLINE static inline uint16_t tu_fifo_depth(const tu_fifo_t *f) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TU_ATTR_ALWAYS_INLINE static inline bool tu_fifo_empty(const tu_fifo_t *f) {
|
TU_ATTR_ALWAYS_INLINE static inline bool tu_fifo_empty(const tu_fifo_t *f) {
|
||||||
return f->wr_idx == f->rd_idx;
|
const uint16_t wr_idx = f->wr_idx;
|
||||||
|
const uint16_t rd_idx = f->rd_idx;
|
||||||
|
return wr_idx == rd_idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
// return number of items in fifo, capped to fifo's depth
|
// return number of items in fifo, capped to fifo's depth
|
||||||
|
|||||||
@ -293,7 +293,11 @@ static void handle_ctr_tx(uint32_t ep_id) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
xfer->iso_in_sending = false;
|
xfer->iso_in_sending = false;
|
||||||
|
#if FSDEV_USE_SBUF_ISO == 0
|
||||||
uint8_t buf_id = (ep_reg & USB_EP_DTOG_TX) ? 0 : 1;
|
uint8_t buf_id = (ep_reg & USB_EP_DTOG_TX) ? 0 : 1;
|
||||||
|
#else
|
||||||
|
uint8_t buf_id = BTABLE_BUF_TX;
|
||||||
|
#endif
|
||||||
btable_set_count(ep_id, buf_id, 0);
|
btable_set_count(ep_id, buf_id, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -774,7 +778,12 @@ static bool edpt_xfer(uint8_t rhport, uint8_t ep_num, tusb_dir_t dir) {
|
|||||||
|
|
||||||
uint16_t cnt = tu_min16(xfer->total_len, xfer->max_packet_size);
|
uint16_t cnt = tu_min16(xfer->total_len, xfer->max_packet_size);
|
||||||
|
|
||||||
if (ep_is_iso(ep_reg)) {
|
#if FSDEV_USE_SBUF_ISO == 0
|
||||||
|
bool const dbl_buf = ep_is_iso(ep_reg);
|
||||||
|
#else
|
||||||
|
bool const dbl_buf = false;
|
||||||
|
#endif
|
||||||
|
if (dbl_buf) {
|
||||||
btable_set_rx_bufsize(ep_idx, 0, cnt);
|
btable_set_rx_bufsize(ep_idx, 0, cnt);
|
||||||
btable_set_rx_bufsize(ep_idx, 1, cnt);
|
btable_set_rx_bufsize(ep_idx, 1, cnt);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -202,8 +202,7 @@
|
|||||||
#include "stm32u0xx.h"
|
#include "stm32u0xx.h"
|
||||||
#define FSDEV_PMA_SIZE (1024u)
|
#define FSDEV_PMA_SIZE (1024u)
|
||||||
#define FSDEV_BUS_32BIT
|
#define FSDEV_BUS_32BIT
|
||||||
// Disable SBUF_ISO on U0 for now due to bad performance (audio glitching)
|
#define FSDEV_HAS_SBUF_ISO 1
|
||||||
#define FSDEV_HAS_SBUF_ISO 0
|
|
||||||
#define USB USB_DRD_FS
|
#define USB USB_DRD_FS
|
||||||
|
|
||||||
#define USB_EP_CTR_RX USB_EP_VTRX
|
#define USB_EP_CTR_RX USB_EP_VTRX
|
||||||
|
|||||||
Reference in New Issue
Block a user