В данной серии статей будут приведены примеры работы с периферией STM32L с помощью библиотеки, предоставляемой ST — StdPeriph. Перед использованием примеров не забывайте включать, соответствующие файлы библиотеки в проект.
- Порты GPIOx
- Прерывания
- Timer 6
- USART
- I2C
- SPI
- DMA
- Системный таймер
- EEPROM
- RTC
- Тактирование 32МГц с настройкой пропуска такта flash
Тактирование 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;