:::: MENU ::::

Примеры использования StdPeriph — тактирование 32МГц с настройкой пропуска такта flash

В данной серии статей будут приведены примеры работы с периферией STM32L с помощью библиотеки, предоставляемой ST — StdPeriph. Перед использованием примеров не забывайте включать, соответствующие файлы библиотеки в проект.

Тактирование 32МГц с настройкой пропуска такта flash

Flash у STM32L не может работать на частоте 32 МГц, поэтому необходимо настроить пропуск одного такта.

Настройка тактирования HSI, PLL, FLASH для работы на 32 МГц:

       //Turn ON HSI
        RCC->CR |= RCC_CR_HSION;

        //Wait until it's stable
        while (!(RCC->CR & RCC_CR_HSIRDY));
        
        // источник вх. сигнала для PLL
        RCC->CFGR |= RCC_CFGR_PLLSRC_HSI;

        //Switch to HSI as SYSCLK
        //PLL input = HSI
        //PLL division factor = 3
        //PLL multiplication factor = 6
        RCC->CFGR|=RCC_CFGR_PLLDIV3 | RCC_CFGR_PLLMUL6;

        //Turn PLL on
        RCC->CR|=RCC_CR_PLLON;

        //Wait PLL to stabilize
        while (!(RCC->CR & RCC_CR_PLLRDY));

        //Setting up flash for high speed
        FLASH->ACR = FLASH_ACR_ACC64;
        FLASH->ACR |= FLASH_ACR_LATENCY;
        FLASH->ACR |= FLASH_ACR_PRFTEN;

        //Set PLL as SYSCLK
        RCC->CFGR |= RCC_CFGR_SW_PLL;

        //Turn off MSI
        RCC->CR&=~RCC_CR_MSION;