mirror of
https://github.com/hathach/tinyusb.git
synced 2025-02-16 06:40:11 +00:00
bsp.board_stm32f407g_disc1: Switch to external oscillator (more precise).
This commit is contained in:
parent
e73e016a8c
commit
0f9fa5956f
@ -1,4 +1,5 @@
|
||||
CFLAGS = \
|
||||
-DHSE_VALUE=8000000 \
|
||||
-DCFG_TUSB_MCU=OPT_MCU_STM32F4 \
|
||||
-DSTM32F407xx \
|
||||
-mthumb \
|
||||
|
@ -49,38 +49,52 @@
|
||||
|
||||
void board_init(void)
|
||||
{
|
||||
|
||||
// Systick init
|
||||
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||
// Tick init, samd SystemCoreClock may not correct
|
||||
SysTick_Config(SystemCoreClock / 1000);
|
||||
#endif
|
||||
|
||||
// Init the LED on PD14
|
||||
RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN;
|
||||
GPIOD->MODER |= GPIO_MODER_MODE14_0;
|
||||
|
||||
// USB Clock init
|
||||
// PLL input- 16 MHz (HSI clock)
|
||||
// VCO input- 1 to 2 MHz (2 MHz, M = 8)
|
||||
// PLL input- 8 MHz (External oscillator clock; HSI clock tolerance isn't
|
||||
// tight enough- 1%, need 0.25%)
|
||||
// VCO input- 1 to 2 MHz (2 MHz, M = 4)
|
||||
// VCO output- 100 to 432 MHz (144 MHz, N = 72)
|
||||
// Main PLL out- <= 180 MHz (18 MHz, P = 8, not used; HSI used as system clk.)
|
||||
// Main PLL out- <= 180 MHz (18 MHz, P = 3- divides by 8)
|
||||
// USB PLL out- 48 MHz (Q = 3)
|
||||
RCC->PLLCFGR = (3 << RCC_PLLCFGR_PLLQ_Pos) | (8 << RCC_PLLCFGR_PLLP_Pos) \
|
||||
| (72 << RCC_PLLCFGR_PLLN_Pos) | (8 << RCC_PLLCFGR_PLLM_Pos);
|
||||
RCC->PLLCFGR = RCC_PLLCFGR_PLLSRC_HSE | (3 << RCC_PLLCFGR_PLLQ_Pos) | \
|
||||
(3 << RCC_PLLCFGR_PLLP_Pos) | (72 << RCC_PLLCFGR_PLLN_Pos) | \
|
||||
(4 << RCC_PLLCFGR_PLLM_Pos);
|
||||
|
||||
// Wait for external clock to become ready
|
||||
RCC->CR |= RCC_CR_HSEON;
|
||||
while(!(RCC->CR & RCC_CR_HSERDY_Msk));
|
||||
|
||||
// Wait for PLL to become ready
|
||||
RCC->CR |= RCC_CR_PLLON;
|
||||
while(!(RCC->CR & RCC_CR_PLLRDY_Msk));
|
||||
|
||||
// Switch clocks!
|
||||
RCC->CFGR |= RCC_CFGR_SW_1;
|
||||
|
||||
// Notify runtime of frequency change.
|
||||
SystemCoreClockUpdate();
|
||||
// Systick init
|
||||
#if CFG_TUSB_OS == OPT_OS_NONE
|
||||
SysTick_Config(SystemCoreClock / 1000);
|
||||
#endif
|
||||
|
||||
RCC->AHB2ENR |= RCC_AHB2ENR_OTGFSEN;
|
||||
|
||||
// USB Pin Init
|
||||
// PA10- ID, PA11- DM, PA12- DP
|
||||
// PC0- Power on
|
||||
GPIOD->MODER |= GPIO_MODER_MODE10_1 | GPIO_MODER_MODE11_1 | GPIO_MODER_MODE12_1;
|
||||
GPIOA->AFR[1] |= (10 << GPIO_AFRH_AFSEL10_Pos) | (10 << GPIO_AFRH_AFSEL11_Pos) | (10 << GPIO_AFRH_AFSEL12_Pos);
|
||||
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
|
||||
GPIOD->MODER |= GPIO_MODER_MODE10_1 | GPIO_MODER_MODE11_1 | \
|
||||
GPIO_MODER_MODE12_1;
|
||||
GPIOA->AFR[1] |= (10 << GPIO_AFRH_AFSEL10_Pos) | \
|
||||
(10 << GPIO_AFRH_AFSEL11_Pos) | (10 << GPIO_AFRH_AFSEL12_Pos);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void board_led_control(bool state)
|
||||
{
|
||||
if (!state) {
|
||||
|
@ -71,17 +71,21 @@ bool dcd_init (uint8_t rhport)
|
||||
|
||||
void dcd_int_enable (uint8_t rhport)
|
||||
{
|
||||
|
||||
(void) rhport;
|
||||
NVIC_EnableIRQ(OTG_FS_IRQn);
|
||||
}
|
||||
|
||||
void dcd_int_disable (uint8_t rhport)
|
||||
{
|
||||
|
||||
(void) rhport;
|
||||
NVIC_DisableIRQ(OTG_FS_IRQn);
|
||||
}
|
||||
|
||||
void dcd_connect (uint8_t rhport)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void dcd_disconnect (uint8_t rhport)
|
||||
{
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user