21 RCC ->CR = RCC_CR_HSION | RCC_CR_HSEON | PWR_CR_VOS;
23 while (!(RCC ->CR & RCC_CR_HSERDY )) {
26 FLASH ->ACR = FLASH_ACR_ICEN | FLASH_ACR_DCEN | FLASH_ACR_LATENCY_5WS;
28 const static uint32_t PLLM = 4;
29 const static uint32_t PLLN = 168;
30 const static uint32_t PLLQ = 7;
31 const static uint32_t PLLP = 2;
32 RCC ->PLLCFGR = PLLM | RCC_PLLCFGR_PLLSRC_HSE | (PLLN << 6) | (PLLQ << 24) | (((PLLP >> 1) - 1) << 16);
34 RCC ->CFGR |= RCC_CFGR_HPRE_DIV1 | RCC_CFGR_PPRE1_DIV4 | RCC_CFGR_PPRE2_DIV2;
36 RCC ->CR |= RCC_CR_PLLON;
38 while (!(RCC ->CR & RCC_CR_PLLRDY )) {
41 RCC ->CFGR |= RCC_CFGR_SW_PLL;
43 while (!(RCC ->CFGR & RCC_CFGR_SWS_PLL )) {
49 #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
50 SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));
53 RCC ->AHB1ENR |= RCC_APB1ENR_PWREN | RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOBEN |
54 RCC_AHB1ENR_GPIOCEN | RCC_AHB1ENR_GPIODEN |
55 RCC_AHB1ENR_GPIOEEN | RCC_AHB1ENR_GPIOHEN |
58 RCC ->APB1ENR |= RCC_APB1ENR_SPI2EN;
59 RCC ->APB2ENR |= RCC_APB2ENR_SYSCFGEN | RCC_APB2ENR_SDIOEN | RCC_APB2ENR_SPI1EN;
61 SYSCFG ->PMC |= SYSCFG_PMC_MII_RMII_SEL;
66 DrvGpio::setPinFuncMode(DrvTypes::DRV_PORTA, DrvTypes::DRV_PIN1, DrvTypes::DRV_FUNC11, DrvTypes::DRV_MODE_ALTERNATE_FUNCTION);
67 DrvGpio::setPinFuncMode(DrvTypes::DRV_PORTA, DrvTypes::DRV_PIN2, DrvTypes::DRV_FUNC11, DrvTypes::DRV_MODE_ALTERNATE_FUNCTION);
68 DrvGpio::setPinFuncMode(DrvTypes::DRV_PORTA, DrvTypes::DRV_PIN7, DrvTypes::DRV_FUNC11, DrvTypes::DRV_MODE_ALTERNATE_FUNCTION);
70 DrvGpio::setPinFuncMode(DrvTypes::DRV_PORTB, DrvTypes::DRV_PIN11, DrvTypes::DRV_FUNC11, DrvTypes::DRV_MODE_ALTERNATE_FUNCTION);
71 DrvGpio::setPinFuncMode(DrvTypes::DRV_PORTB, DrvTypes::DRV_PIN12, DrvTypes::DRV_FUNC11, DrvTypes::DRV_MODE_ALTERNATE_FUNCTION);
72 DrvGpio::setPinFuncMode(DrvTypes::DRV_PORTB, DrvTypes::DRV_PIN13, DrvTypes::DRV_FUNC11, DrvTypes::DRV_MODE_ALTERNATE_FUNCTION);
74 DrvGpio::setPinFuncMode(DrvTypes::DRV_PORTC, DrvTypes::DRV_PIN1, DrvTypes::DRV_FUNC11, DrvTypes::DRV_MODE_ALTERNATE_FUNCTION);
75 DrvGpio::setPinFuncMode(DrvTypes::DRV_PORTC, DrvTypes::DRV_PIN4, DrvTypes::DRV_FUNC11, DrvTypes::DRV_MODE_ALTERNATE_FUNCTION);
76 DrvGpio::setPinFuncMode(DrvTypes::DRV_PORTC, DrvTypes::DRV_PIN5, DrvTypes::DRV_FUNC11, DrvTypes::DRV_MODE_ALTERNATE_FUNCTION);
81 DrvGpio::setPinFuncMode(DrvTypes::DRV_PORTC, DrvTypes::DRV_PIN7, DrvTypes::DRV_FUNC0, DrvTypes::DRV_MODE_INPUT, DrvTypes::PUPD_PULL_UP);
82 DrvGpio::setPinFuncMode(DrvTypes::DRV_PORTC, DrvTypes::DRV_PIN8, DrvTypes::DRV_FUNC12, DrvTypes::DRV_MODE_ALTERNATE_FUNCTION, DrvTypes::PUPD_PULL_UP);
83 DrvGpio::setPinFuncMode(DrvTypes::DRV_PORTC, DrvTypes::DRV_PIN9, DrvTypes::DRV_FUNC12, DrvTypes::DRV_MODE_ALTERNATE_FUNCTION, DrvTypes::PUPD_PULL_UP);
84 DrvGpio::setPinFuncMode(DrvTypes::DRV_PORTC, DrvTypes::DRV_PIN10, DrvTypes::DRV_FUNC12, DrvTypes::DRV_MODE_ALTERNATE_FUNCTION, DrvTypes::PUPD_PULL_UP);
85 DrvGpio::setPinFuncMode(DrvTypes::DRV_PORTC, DrvTypes::DRV_PIN11, DrvTypes::DRV_FUNC12, DrvTypes::DRV_MODE_ALTERNATE_FUNCTION, DrvTypes::PUPD_PULL_UP);
86 DrvGpio::setPinFuncMode(DrvTypes::DRV_PORTC, DrvTypes::DRV_PIN12, DrvTypes::DRV_FUNC12, DrvTypes::DRV_MODE_ALTERNATE_FUNCTION);
87 DrvGpio::setPinFuncMode(DrvTypes::DRV_PORTD, DrvTypes::DRV_PIN2, DrvTypes::DRV_FUNC12, DrvTypes::DRV_MODE_ALTERNATE_FUNCTION, DrvTypes::PUPD_PULL_UP);
92 sLed1.init(DrvTypes::DRV_PORTD, DrvTypes::DRV_PIN12, DrvTypes::DRV_FUNC0, DrvTypes::DRV_MODE_OUTPUT_PUSH_PULL);
93 sLed2.init(DrvTypes::DRV_PORTD, DrvTypes::DRV_PIN13, DrvTypes::DRV_FUNC0, DrvTypes::DRV_MODE_OUTPUT_PUSH_PULL);
94 sLed3.init(DrvTypes::DRV_PORTD, DrvTypes::DRV_PIN14, DrvTypes::DRV_FUNC0, DrvTypes::DRV_MODE_OUTPUT_PUSH_PULL);
95 sLed4.init(DrvTypes::DRV_PORTD, DrvTypes::DRV_PIN15, DrvTypes::DRV_FUNC0, DrvTypes::DRV_MODE_OUTPUT_PUSH_PULL);