STM32 часовник

този позволява

задава хардуера

Цялата система за часовник е пред очите ви, което е много удобно и ви позволява бързо да разберете за какво е коефициентът, за какво е отговорен.
Методът за задаване на честотата на системната шина, описан по-горе, ви позволява да отстранявате грешки в програмата само в хардуер, тъй като при отстраняване на грешки в симулатора няма кой да зададе готовия флаг на същия HSE или PLL.

Второто ограничение, до което води тази настройка на системната честота - невъзможно е овърклокът на контролера, тъй като овърклокът се извършва с помощта на настройката PLL, но досега нямаше нужда от това.

задава хардуера

Така че, за формирането на системната честота (SYSCLK), могат да се използват три различни източника. (Ние разглеждаме образуването на SYSCLK, тъй като цялата периферия се тактира от него чрез разделители)

  • HSI(висока скорост вътрешна) генератор часовник
  • HSE(високоскоростен външен) генератор часовник
  • PLL часовник
HSI представлява вътрешен RC генератор с честота 8MHz. Той може да действа като източник на системна честота или след разделяне на две се подава към входа на PLL. Трябва да се отбележи, че честотата на RC генератора зависи от температурата и може да се отклонява от зададената от –1,9 до + 1,3%, когато температурата на микроконтролера се промени от 0 до 70 ° C. При подаване на захранващи напрежения, MC автоматично се стартира от него.

Относно HSE тук са възможни две опции:

  • свързване на външен керамичен/кварцов резонатор с честота 4-16 MHz
  • използване на външен часовник с работен цикъл приблизително 50%

stm32

Също така бих искал да отбележа, че MK има крак, през който можете да тактирате различни устройства или просто да погледнете каква честота започва MK, той се нарича IES.
Друга интересна характеристика е системата за защита срещу нестабилна работа и повреда на HSE генератора, тя се нарича CSS(Система за сигурност на часовника).
CSS в състояние да наблюдава повредата или нестабилността на HSE генератора, автоматично превключва часовниците към вградения HSI генератор и задейства немаскируеми прекъсвания - NMI (Немаскирани прекъсвания). Нека ви напомня това NMI - това са прекъсвания, които не могат да бъдат изчистени без обработка, тоест появата им прекъсва изпълнението на програмата, независимо от каквито и да било условия.

Контролен регистър RCC_CR:

PLLRDY(PLL часовник готов флаг) - PLL готов флаг, зададен от хардуера.

ПЛОН(PLL активиране) - задаването на един на този бит позволява PLL работа.

CSSON(Активиране на системата за защита на часовника) - задаването на един на този бит позволява детектора на часовника от HSE.

HSEBYP(Външен високоскоростен байпас на часовника) - настройването на този бит на един позволява използването на външен генератор и е възможно само когато HSEON е изчистен.

HSERDY(Флаг за готовност на външен високоскоростен часовник) - един в този бит показва, че външният генератор е стабилизиран.

HSEON(Активиране на часовника HSE) - задаването на такъв в този бит, позволява принудително превключване към външен генератор.

HSICAL [7: 0](Вътрешно високоскоростно калибриране на часовника) - тези битове се инициализират при стартиране.

ХИТРИМ [4: 0](Вътрешно високоскоростно подрязване на часовника) - стойността на тези битове се добавя към стойността на HSICAL, като по този начин става възможно да се регулира честотата на MC, която може да "изчезне" в зависимост от захранващото напрежение и околната температура. Стъпката за настройка между двете стойности е приблизително 40KHz.

HSIRDY(Вътрешен флаг за готовност на високоскоростен часовник) - флагът се задава от хардуера, когато вътрешният 8 MHz RC осцилатор се стабилизира.

HSION(Вътрешен високоскоростен часовник) - настройването на този бит на един принудително стартира вътрешния 8 MHz RC осцилатор. Този бит не може да бъде изчистен, ако с помощта на HSI се генерира системната честота.

Конфигурационен регистър RCC_CFGR:

MCO(Изход на часовника на микроконтролера) - стойността на тези битове определя работата на щифта MCO.

USBPRE(USB прескалиране) - нула в този бит позволява прескалиране с коефициент 1,5 за usb. Предварителният скелер трябва да бъде конфигуриран преди да активирате часовника на USB шината.

PLLMUL(PLL коефициент на умножение) - стойността на тези битове определя коефициента на умножение на PLL.