From 7c6cf37073c364c92ca8f846739f9db4d3e3c73d Mon Sep 17 00:00:00 2001 From: andy <1414772332@qq.com> Date: Sun, 21 Sep 2025 19:13:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9E=9A=E4=B8=BE=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/c_cpp_properties.json | 16 ++++++++++++++-- Project/Src/MY/stm32f4xx_it.c | 32 +++++++++++++++++++++++--------- Project/Src/rt-thread/board.c | 8 ++++++++ Project/Src/rt-thread/src/idle.c | 2 +- Project/make.py | 26 ++++++++++++++++++++++++-- 5 files changed, 70 insertions(+), 14 deletions(-) diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index ffb954f..0caeb1c 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -28,7 +28,16 @@ "Project/Src/MyWinApp", "Project/Src/rt-thread", "Project/Src/rt-thread/include", - "Project/Src/zlib" + "Project/Src/zlib", + "Project/Src/NES", + "Project/Src/TinyUSB/examples/device/cdc_dual_ports/src", + "Project/Src/TinyUSB/src/class/cdc", + "Project/Src/TinyUSB/src/common", + "Project/Src/TinyUSB/src/device", + "Project/Src/TinyUSB/src/portable/synopsys/dwc2", + "Project/Src/TinyUSB/src", + "Project/Src/TinyUSB/src/osal", + "Project/Src/TinyUSB/hw" ], "defines": [ "USE_STDPERIPH_DRIVER", @@ -36,7 +45,10 @@ "ARM_MATH_CM4", "__FPU_PRESENT=1", "__packed=__attribute__((__packed__))", - "__weak=__attribute__((weak))" + "__weak=__attribute__((weak))", + "__RTTHREAD__", + "SOC_SERIES_STM32F4", + "PKG_TINYUSB_DEVICE_ENABLE" ], "windowsSdkVersion": "10.0.22621.0", "compilerPath": "D:/Program Files/arm-gnu-toolchain/bin/arm-none-eabi-gcc", diff --git a/Project/Src/MY/stm32f4xx_it.c b/Project/Src/MY/stm32f4xx_it.c index 28c77e8..accc161 100644 --- a/Project/Src/MY/stm32f4xx_it.c +++ b/Project/Src/MY/stm32f4xx_it.c @@ -6,12 +6,14 @@ * @description * * 此文件存放了STM32所有的异常操作和中断服务函数 - * + * *************************************************************************** ***/ #include "stm32f4xx_it.h" -#include "sdio_sd.h" +#include "sdio_sd.h" +#include "stdbool.h" +#include "tusb.h" /** @addtogroup Template_Project * @{ @@ -162,7 +164,7 @@ void SD_SDIO_DMA_IRQHANDLER(void) #if 1 -#ifdef USE_USB_OTG_HS +#ifdef USE_USB_OTG_HS void OTG_HS_IRQHandler(void) { extern void USBD_OTG_ISR_USER (void); @@ -170,13 +172,13 @@ void OTG_HS_IRQHandler(void) } #endif -#ifdef USE_USB_OTG_FS +#ifdef USE_USB_OTG_FS void OTG_FS_IRQHandler(void) { USBD_OTG_ISR_Handler (&USB_OTG_dev); } #endif -#ifdef USB_OTG_HS_DEDICATED_EP1_ENABLED +#ifdef USB_OTG_HS_DEDICATED_EP1_ENABLED void OTG_HS_EP1_IN_IRQHandler(void) { @@ -192,6 +194,18 @@ void OTG_HS_EP1_OUT_IRQHandler(void) } #endif + +#if PKG_TINYUSB_DEVICE_ENABLE +void OTG_FS_IRQHandler(void) { + tusb_int_handler(0, true); +} + +void OTG_HS_IRQHandler(void) { + tusb_int_handler(1, true); +} + +#endif + #else @@ -199,7 +213,7 @@ void OTG_HS_EP1_OUT_IRQHandler(void) extern USB_OTG_CORE_HANDLE USB_OTG_dev; extern uint32_t USBD_OTG_ISR_Handler (USB_OTG_CORE_HANDLE *pdev); -#ifdef USB_OTG_HS_DEDICATED_EP1_ENABLED +#ifdef USB_OTG_HS_DEDICATED_EP1_ENABLED extern uint32_t USBD_OTG_EP1IN_ISR_Handler (USB_OTG_CORE_HANDLE *pdev); extern uint32_t USBD_OTG_EP1OUT_ISR_Handler (USB_OTG_CORE_HANDLE *pdev); #endif @@ -207,7 +221,7 @@ extern uint32_t USBD_OTG_EP1OUT_ISR_Handler (USB_OTG_CORE_HANDLE *pdev); -#ifdef USE_USB_OTG_HS +#ifdef USE_USB_OTG_HS void OTG_HS_IRQHandler(void) #else void OTG_FS_IRQHandler(void) @@ -216,7 +230,7 @@ void OTG_FS_IRQHandler(void) USBD_OTG_ISR_Handler (&USB_OTG_dev); } -#ifdef USB_OTG_HS_DEDICATED_EP1_ENABLED +#ifdef USB_OTG_HS_DEDICATED_EP1_ENABLED /** * @brief This function handles EP1_IN Handler. * @param None @@ -246,7 +260,7 @@ void OTG_HS_EP1_OUT_IRQHandler(void) /** * @} - */ + */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Project/Src/rt-thread/board.c b/Project/Src/rt-thread/board.c index 216a112..ba5a999 100644 --- a/Project/Src/rt-thread/board.c +++ b/Project/Src/rt-thread/board.c @@ -99,6 +99,13 @@ void mpu_init(void) const libc_device_file *g_usart; + +// 重新配置时钟,25m晶振如果要保证usb为48m,则主频最高只能配置为168m +void reconfig_clock(void) { + RCC_PLLConfig(RCC_PLLSource_HSE, 25, 336, 2, 7); + SystemCoreClock = 168000000; +} + /** * This function will initial your board. */ @@ -106,6 +113,7 @@ void rt_hw_board_init() { // NVIC_SetVectorTable(NVIC_VectTab_FLASH,(u32)128*1024); NVIC_SetVectorTable(NVIC_VectTab_FLASH,(u32)0); + reconfig_clock(); _SysTick_Config (SystemCoreClock/1000); NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); LED_Init(); diff --git a/Project/Src/rt-thread/src/idle.c b/Project/Src/rt-thread/src/idle.c index 05e09c8..e5a4b18 100644 --- a/Project/Src/rt-thread/src/idle.c +++ b/Project/Src/rt-thread/src/idle.c @@ -254,7 +254,7 @@ static void rt_thread_idle_entry(void *parameter) #endif rt_thread_idle_excute(); - __WFI(); + // __WFI(); } } diff --git a/Project/make.py b/Project/make.py index 39d407c..c29adbb 100644 --- a/Project/make.py +++ b/Project/make.py @@ -39,7 +39,10 @@ DEF=[ '-D__FPU_PRESENT=1', # '-D__GNUC__', '-D__packed=__attribute__((__packed__))', - '-D__weak=__attribute__((weak))' + '-D__weak=__attribute__((weak))', + '-D__RTTHREAD__', + '-DSOC_SERIES_STM32F4', + '-DPKG_TINYUSB_DEVICE_ENABLE', ] INC=[ @@ -71,7 +74,16 @@ INC=[ '-ISrc/rt-thread/include', # '-ISrc/sqlite3', '-ISrc/zlib', - '-ISrc/NES' + '-ISrc/NES', + # '-ISrc/TinyUSB/lib/rt-thread', + '-ISrc/TinyUSB/examples/device/cdc_dual_ports/src', + '-ISrc/TinyUSB/src/class/cdc', + '-ISrc/TinyUSB/src/common', + '-ISrc/TinyUSB/src/device', + '-ISrc/TinyUSB/src/portable/synopsys/dwc2', + '-ISrc/TinyUSB/src', + '-ISrc/TinyUSB/src/osal', + '-ISrc/TinyUSB/hw', ] SRC_DIR=[ @@ -88,6 +100,11 @@ SRC_DIR=[ 'Src/MyWinApp', 'Src/rt-thread/src', # 'Src/sqlite3', + 'Src/TinyUSB/src/class/cdc', + 'Src/TinyUSB/src/common', + 'Src/TinyUSB/src/device', + 'Src/TinyUSB/src/portable/synopsys/dwc2', + # 'Src/TinyUSB/src', ] SRC=[ @@ -136,6 +153,11 @@ SRC=[ 'Src/NES/nes_main.c', 'Src/NES/nes_ppu.c', 'Src/NES/nes_mapper.c', + + 'Src/TinyUSB/src/tusb.c', + 'Src/TinyUSB/lib/rt-thread/tusb_rt_thread_port.c', + 'Src/TinyUSB/examples/device/cdc_dual_ports/src/usb_descriptors.c', + 'Src/TinyUSB/hw/bsp/board.c' ] LD_FILE="stm32f429ighx_flash.ld"