设置usb时钟

This commit is contained in:
2025-09-24 00:02:37 +08:00
parent 316b2ab330
commit d1b4de66b7
6 changed files with 720 additions and 707 deletions

View File

@@ -195,7 +195,6 @@ void OTG_HS_EP1_OUT_IRQHandler(void)
#endif
#if PKG_TINYUSB_DEVICE_ENABLE
void OTG_FS_IRQHandler(void) {
tusb_int_handler(0, true);
}
@@ -204,7 +203,6 @@ void OTG_HS_IRQHandler(void) {
tusb_int_handler(1, true);
}
#endif
#else

View File

@@ -348,9 +348,9 @@
through STLINK MCO pin of STM32F103 microcontroller. The frequency cannot be changed
and is fixed at 8 MHz.
Hardware configuration needed for Nucleo Board:
<EFBFBD> SB54, SB55 OFF
<EFBFBD> R35 removed
<EFBFBD> SB16, SB50 ON */
? SB54, SB55 OFF
? R35 removed
? SB16, SB50 ON */
/* #define USE_HSE_BYPASS */
#if defined(USE_HSE_BYPASS)
@@ -392,7 +392,11 @@
#endif /* STM32F446xx */
#if defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F446xx) || defined(STM32F469_479xx)
#ifdef __USB_USB__
#define PLL_N 336
#else /* !__USB_USB__ */
#define PLL_N 360
#endif
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P 2
#endif /* STM32F427_437x || STM32F429_439xx || STM32F446xx || STM32F469_479xx */
@@ -438,7 +442,11 @@
#endif /* STM32F40_41xxx */
#if defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F446xx) || defined(STM32F469_479xx)
#ifdef __USB_USB__
uint32_t SystemCoreClock = 168000000;
#else /* !__USB_USB__ */
uint32_t SystemCoreClock = 180000000;
#endif
#endif /* STM32F427_437x || STM32F429_439xx || STM32F446xx || STM32F469_479xx */
#if defined(STM32F401xx)

View File

@@ -51,6 +51,7 @@ typedef struct
uint32_t HCLK_Frequency; /*!< HCLK clock frequency expressed in Hz */
uint32_t PCLK1_Frequency; /*!< PCLK1 clock frequency expressed in Hz */
uint32_t PCLK2_Frequency; /*!< PCLK2 clock frequency expressed in Hz */
uint32_t USBCLK_Frequency;
}RCC_ClocksTypeDef;
/* Exported constants --------------------------------------------------------*/

View File

@@ -1316,7 +1316,8 @@ void RCC_PCLK2Config(uint32_t RCC_HCLK)
*/
void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)
{
uint32_t tmp = 0, presc = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;
uint32_t tmp = 0, presc = 0, pllvco = 0, pllp = 2, pllq = 7, pllsource = 0,
pllm = 2;
#if defined(STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F446xx)
uint32_t pllr = 2;
#endif /* STM32F412xG || STM32F413_423xx || STM32F446xx */
@@ -1352,7 +1353,9 @@ void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)
}
pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;
pllq = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLQ) >>24);
RCC_Clocks->SYSCLK_Frequency = pllvco/pllp;
RCC_Clocks->USBCLK_Frequency = pllvco/pllq;
break;
#if defined(STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F446xx)

View File

@@ -102,8 +102,10 @@ const libc_device_file *g_usart;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ӣ<EFBFBD>25m<35><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>֤usbΪ48m<38><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ168m
void reconfig_clock(void) {
RCC_PLLConfig(RCC_PLLSource_HSE, 25, 336, 2, 7);
SystemCoreClock = 168000000;
RCC_ClocksTypeDef rcc = {0};
// RCC_PLLConfig(RCC_PLLSource_HSE, 25, 336, 2, 7);
RCC_GetClocksFreq(&rcc);
SystemCoreClock = rcc.SYSCLK_Frequency;
}
/**

View File

@@ -41,8 +41,9 @@ DEF=[
'-D__packed=__attribute__((__packed__))',
'-D__weak=__attribute__((weak))',
'-D__RTTHREAD__',
'-DSOC_SERIES_STM32F4',
'-DPKG_TINYUSB_DEVICE_ENABLE',
# 使用usb时打开这个宏 系统时钟会被设置为168MHz USB时钟为48MHz
# 如果不打开这个宏 系统时钟会被设置为180MHz USB会通信异常
'-D__USB_USB__',
]
INC=[