ARM микроконтроллер STM32F2xx источники тактирования

Тактирование микроконтроллеров STM32Прежде чем написать простейшее приложение, например дрыгание ногами, для популярнейшего ARM микроконтроллера типа STM32Fxx, необходимо прочно уяснить какие он использует источники тактирования и как их инициализировать. Поскольку в данном посте за шаблон будет взят микроконтроллер типа STM32F217, то полезно будет просмотреть Reference Manuals на этот микроконтроллер в части источников его тактирования.

Итак девайс имеет три возможных первичных источника тактирования:

  • HSI oscillator clock (высокочастотный внутренний клок)
  • HSE oscillator clock (высокочастотный внешний клок)
  • Main PLL (PLL) clock (внутрений ФАПЧ)

При этом Main PLL может тактироваться от первых двух источников - формирует сиcтемный клок, клок для тактирования USB OTG FS и интерфейса I2S. В основном манипуляциии с вышеобозначенными клоками производятся в регистре RCC clock control register (RCC_CR).

Для того, чтобы найти в этой важной информации практическое применение лучше сворганить небольшой проектик, первая часть которого это установка всех нужных клоков для микроконтроллера STM32F217, а вторая - управление PIO контроллером в виде дергания ногами девайсика.

Простейший проект можно сделать на любой бесплатной IDE, но на мой взгляд, для того, чтобы не затруднять себя особенностями различного рода IDE всетаки лучший вариант для старта - IDE Keil. Для информации - все необходимые функции для инициализации системных клоков STM32F2xx находятся в файле system_stm32f2xx.c. Самое интересное, что этот файл можно сгенерировать автоматом с помощью специальной утилиты, которую можно скачать там же на st.com или, чтобы не морочиться внизу страницы ссылка архив где сама утилита и инструкция по ее использованию. Утилита написана для Excel и запускается как обычное приложение. Для ее нормальной работы необходимо выставить низкий уровень безопасности для макросов в Excel: в главном меню Сервис->Макрос->Макросы->Безопасность...

Источники тактирования STM32F2xx

Сгенерированный файл system_stm32f2xx.c нужно подключить к своему проекту, в нем уже есть все необходимые дефайны и нужные функции для установки всех клоков для STM32F2xx. В качестве теста создадим файл main.c в котором зададим тактирование на порт B GPIO контроллера и подергаем например ногой GPIO_Pin_8.


// Включить тактирование порта B
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN;
// GPIO_Pin_8 порта В на выход
GPIOB->MODER |= GPIO_MODER_MODER8_0;
// GPIO_Pin_8 скорость 50MHz
GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR8_1;  
// GPIO_Pin_8 на переключение (не бязательно)
GPIOB->OTYPER &= ~GPIO_OTYPER_OT_8;  
// Pull-Up резистор подключен 
GPIOB->PUPDR |= GPIO_PUPDR_PUPDR8_0;  
while (1)
{
	unsigned int nCount = 10;

	// Переключение GPIO_Pin_8 порта В  
	GPIOB->ODR ^= GPIO_OTYPER_ODR_8;
  // Задержка
  while(nCount--);
}

Цель такого проектика проста. Генерируя с помощью вышеупомянутой утилиты файл system_stm32f2xx.c с разными параметрами источников тактирования и меняя его в проектике каждый раз на вновь сгенерированный, можно наблюдать что меняется частота переключения GPIO_Pin_8. Вот собственно все про источники тактирования STM32F2xx.

Проектик под Keil и утилита для конфигурации источников тактирования STM32F217.

Top.Mail.Ru