[Home] [< Prev: Переходник RS-232 (COM-порт) - 1-Wire. SEARCH ROM] [Next: DAC: цифро-аналоговый преобразователь >]

Тактовые сигналы микроконтроллеров STM32F100xx

Источники системного тактового сигнала
   Внутренний RC-генератор
   Кварцевая стабилизация. Внешний генератор
   PLL. Умножитель частоты на генераторе с ФАПЧ
Схема формирования тактовых сигналов
CSS (Clock security system) - система безопасности тактового сигнала
Выход для тактового сигнала микроконтроллера
Низкочастотный тактовый сигнал для RTC
Регистры устройства RCC
   RCC_CR (Clock control register)
   RCC_CFGR (Clock configuration register)
   RCC_CIR (Clock interrupt register)
   RCC_APB2RSTR (APB2 peripheral reset register)
   RCC_APB1RSTR (APB1 peripheral reset register)
   RCC_AHBENR (AHB peripheral clock enable register)
   RCC_APB2ENR (APB2 peripheral clock enable register)
   RCC_APB1ENR (APB1 peripheral clock enable register)
   RCC_BDCR (Backup domain control register)
   RCC_CSR (Control/status register)
   RCC_CFGR2 (Clock configuration register2)



Источники системного тактового сигнала

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

Внутренний RC-генератор

Наличие внутреннего RC-генератора позволяет использовать микроконтроллер без подключения внешнего кварцевого резонатора в тех случаях, когда нет жёстких требований к стабильности частоты тактового сигнала. В этом случае требуется минимальная  обвязка  для микроконтроллера; фактически в простейшем случае для работы микроконтроллера требуется лишь подать на него питание (не требуется даже наличие схемы сброса - микроконтроллер имеет встроенную схему сброса по включению питания). Кроме того, RC-генератор запускается быстрее, чем генератор на кварцевом резонаторе, в некоторых случаях это может быть важно. HSI используется как источник системного тактового сигнала после сброса. Затем, программно можно переключиться на другой источник тактового сигнала. Собственно, стартовый код CMSIS именно это и делает по умолчанию: включает генератор на кварцевом резонаторе (предполагается использование резонатора на 8 МГц), который после деления частоты на 2, используется как источник сигнала для PLL; с помощью PLL частота умножается на 6. Полученный на выходе системы PLL сигнал с частотой (8/2)*6=24 МГц используется в качестве системного тактового сигнала SYSCLK.

Кварцевая стабилизация. Внешний генератор

В случае использования HSE возможны два варианта: может быть подключён внешний источник тактового сигнала (к выводу OSC_IN, вывод OSC_OUT не используется) или может быть подключён кварцевый/керамический резонатор (к выводам OSC_IN, OSC_OUT с дополнительным подключением нейтрализующих конденсаторов CL1, CL2, номинал конденсаторов выбирается в соответствии с требованиями документации на выбранный резонатор).

Два варианта использования внешнего источника тактового сигнала для микроконтроллера

Использование внешнего тактового сигнала позволяет осуществить синхронизацию микроконтроллера с другими компонентами устройства. Может, например, использоваться для синхронизации схемы с несколькими микроконтроллерами. Частота сигнала должна быть в пределах 1..24 МГц; форма может быть прямоугольной, треугольной или синусоидальной; коэффициент заполнения должен быть около 50%.

Резонатор используется в тех случаях, когда хотят достичь очень высокой точности частоты тактового сигнала. В общем, кварцевые резонаторы очень дёшевы и используются практически во всех случаях, даже без острой необходимости. Обычно используется резонатор на 8 МГц, это значение по умолчанию подразумевается в стартовом коде CMSIS. Хотя микроконтроллер может работать на частотах до 24 МГц, необязательно использовать высокочастотные кварцы. С помощью системы делителей частоты и за счёт умножения частоты в PLL можно из одной опорной частоты 8 МГц получить любую требуемую - как ниже, так и выше этого значения, вплоть до максимально допустимого.

Как уже было сказано, стартовый код CMSIS предполагает использование кварца на 8 МГц и настраивает систему тактирования микроконтроллера на частоту 24 МГц. Впоследствии тактовая частота может быть изменена в программе. Для уменьшения размера кода или в случае использования внешнего источника сигнала с частотой, отличной от 8 МГц потребуется внести изменения в файл system_stm32f10x.c. Подробнее о файлах проектов - в статье  Минимальное C++ приложение для микроконтроллера ARM (Cortex-M3) .

PLL. Умножитель частоты на генераторе с ФАПЧ

PLL используется для умножения частоты поступающего на вход сигнала, коэффициент умножения может быть задан любым целым в пределах 2..16. В качестве входного для PLL может быть выбран сигнал HSI от внутреннего RC-генератора после деления на 2 (т.е. 4 МГц) или сигнал HSE после деления частоты прескалером PREDIV1 (обеспечивает любой заданный целый коэффициент деления в пределах 1..16). Настраивая коэффициенты деления и умножения, можем получить нужную частоту системного тактового сигнала. При этом требуется, чтобы частота сигнала на выходе PLL была в пределах 16..24 МГц. Частота на входе может быть в пределах 1..24 МГц. PLL используют тогда, когда хотят получить частоту системного тактового сигнала более высокую, чем имеет генератор HSI или HSE.

Схема формирования тактовых сигналов

Сигнал от одного выбранного источника из возможных HSI, HSE или PLL используется как системный тактовый сигнал SYSCLK, максимально возможная его частота составляет 24 МГц.

SYSCLK после деления частоты делителем AHB Prescaler (коэффициент 1, 2, 4, 8, 16, 64, 128, 256, 512) используется как тактовый сигнал шины AHB, ядра процессора, памяти, DMA. Тактовый сигнал обозначается как HCLK, максимальная частота составляет 24 МГц.

Схема формирования тактовых сигналов в микроконтроллерах STM32F100xx

Обозначения:
HSE - высокочастотный внешний тактовый сигнал;
HSI - высокочастотный внутренний тактовый сигнал;
LSE - низкочастотный внешний тактовый сигнал;
LSI - низкочастотный внутренний тактовый сигнал.

К выходу AHB Prescaler подключены два делителя APB1 Prescaler и APB2 Prescaler с настраиваемыми коэффициентами деления (1, 2, 4, 8 или 16). Выходы этих делителей используются как источники тактовых сигналов для устройств, подключённых соответственно к шинам APB1 и APB2 (сигналы PCLK1, PCLK2).

Шина APB1 с подключёнными устройствами образует низкоскоростной домен, а APB2 - высокоскоростной. Максимальная тактовая частота и в том, и в другом случае составляет 24 МГц. Наличие нескольких независимых делителей обеспечивает возможность гибкой настройки частот используемых тактовых сигналов. Установив высокую частоту тактового сигнала только для устройств, скорость работы которых критична в нашем устройстве, мы получим высокую вычислительную производительность микроконтроллера при низком потреблении. Кроме того, есть возможность, независимо для каждого устройства, включать и выключать его тактовый сигнал. Это следует помнить не только с целью оптимизации энергопотребления системы в целом, но и по той причине, что по умолчанию тактовые сигналы периферийных устройств микроконтроллера отключены. И если перед тем, как использовать периферийное устройство, не включить его тактовый сигнал, можно долго удивляться, почему ничего не работает.

К шине APB1 подключены устройства (не все из них имеются в каждой модели микроконтроллера): Timer 2..Timer 7, Timer 12, Timer 13, Timer 14, Window watchdog, SPI 2, SPI 3, USART 2, USART 3, UART 4, UART 5, I2C 1, I2C 2, Backup interface, Power interface, DAC interface, CEC.

К шине APB2 подключены следующие устройства (некоторые могут отсутствовать в зависимости от модели): Alternate function I/O, I/O port A..G, ADC 1 interface, Timer 1, SPI 1, USART 1, Timer 15, Timer 16, Timer 17.

Аналого-цифровой преобразователь ADC1 подключён к шине APB2 и использует тактовый сигнал PCLK2, но тактируется через дополнительный делитель ADC Prescaler (коэффициент деления 2, 4, 6 или 8). Соответственно, максимальная тактовая частота ADC1 составляет 12 МГц.

Тактирование таймеров имеет особенность. Если коэффициент деления соответствующего прескалера APB1 Prescaler или APB2 Prescaler равен 1, то таймеры используют тактовый сигнал своего домена (APB1, APB2, в зависимости от того, к какой шине подключён). Если делитель прескалера не равен 1, то для тактирования таймеров в этом домене используется тактовый сигнал с удвоенной частотой.

CSS (Clock security system) - система безопасности тактового сигнала

В микроконтроллерах STM32F100xx имеется система, способная контролировать корректность работы HSE - стабилизированного кварцем генератора. Система включается программно. При обнаружении сбоев в работе генератора, система автоматически переключает микроконтроллер на использование встроенного генератора HSI в качестве источника системного тактового сигнала. Генератор HSE автоматически отключается. Если в момент сбоя использовалась система PLL, отключаются HSE и PLL.

Для того, чтобы сообщить программе о проблеме, генерируется прерывание CSSI и немаскируемое исключение.

Выход для тактового сигнала микроконтроллера

Микроконтроллер имеет вывод MCO (microcontroller clock output), который может использоваться как источник тактового сигнала для других компонентов схемы. Для этого следует настроить соответствующий вывод порта GPIO как выход для альтернативной функции и с помощью регистра RCC->CFGR (биты MCO[2:0]) выбрать один из 4 возможных сигналов для вывода:

Низкочастотный тактовый сигнал для RTC

Микроконтроллер имеет встроенные часы реального времени (RTC) для точного отсчёта времени и ведения календаря. Для часов используется низкочастотный тактовый сигнал RTCCLK. В качестве его источника можно выбрать LSI - внутренний RC-генератор (частота около 40 кГц); LSE - генератор, стабилизированный кварцем (32768 Гц) или внешний генератор; выход делителя частоты на 128, подключённого к HSE.

Чтобы использовать все возможности RTC, лучше всего выбрать вариант работы часов с тактовым сигналом от генератора, стабилизированного "часовым кварцем" на 32768 Гц. В этом случае точность хода часов будет очень высокой. После первого включения, часы продолжат работу даже после отключения питания микроконтроллера при наличии батарейного питания (вывод VBAT, 1.8..3.6 В).

Кварцевый резонатор подключается к выводам OSC32_IN, OSC32_OUT; схема подключения точно такая же, как и в случае с высокочастотным кварцем (см. выше: кварцевый резонатор и два конденсатора). Если используется внешний источник тактового сигнала (прямоугольные или треугольные импульсы, или синусоидальный сигнал; частота не более 1 МГц), то он подключается к выводу OSC32_IN, а вывод OSC32_OUT не используется.

Сигнал LSI используется не только как один из возможных источников тактового сигнала для часов реального времени, но и в качестве источника тактового сигнала для сторожевого таймера. Если сторожевой таймер включён, генератор LSI не может быть отключён. Сторожевой таймер используется для вывода микроконтроллера из "зависшего" состояния, вызванного ошибками в программе. Программа записывает в счётчик сторожевого таймера значение, которое задаёт определённый промежуток времени. До его истечения программа должна обновить значение счётчика, задав таким образом следующий промежуток и т.д. Если программа не успеет обновить содержимое сторожевого таймера до истечения заданного времени, таймер выполнит сброс микроконтроллера.

Регистры устройства RCC

RCC_CR (Clock control register)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16  
Reserved PLL
RDY
PLL
ON
Reserved CSS
ON
HSE
BYP
HSE
RDY
HSE
ON
r rw rw rw r rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0  
HSICAL[7:0] HSITRIM[4:0] Res. HSI
RDY
HSI
ON
r r r r r r r r rw rw rw rw rw r rw

Address offset: 0x00
Reset value: 0x0000 XX83 (XX - калибровочное значение, задаётся в процессе производства для каждой микросхемы).
Access: no wait state, word, half-word and byte access

PLLRDY: PLL clock ready flag - флаг готовности PLL, устанавливается аппаратно, значение 1 указывает на готовность PLL (произошла синхронизация фаз).

PLLON: PLL enable - бит включения PLL, устанавливается и сбрасывается программно для включения/выключения PLL.
Аппаратно сбрасывается при переходе в режимы Stop или Standby. Бит не может быть сброшен, если PLL используется или выбран для использования в качестве системного тактового сигнала.

CSSON: Clock security system enable - бит включения системы безопасности тактового сигнала, устанавливается и сбрасывается программно. Значение 1 включает контроль за тактовым сигналом, если HSE генератор находится в состоянии готовности.

HSEBYP: External high-speed clock bypass - бит для выбора внешнего тактового сигнала вместо сигнала генератора HSE, устанавливается и сбрасывается программно.

HSERDY: External high-speed clock ready flag - флаг готовности высокочастотного генератора, стабилизированного кварцем; устанавливается аппаратно, значение 1 указывает на готовность генератора. Необходимо 6 периодов HSE генератора для сброса этого флага после сброса бита HSEON.

HSEON: External high-speed clock enable - бит включения HSE, устанавливается и сбрасывается программно.
Аппаратно сбрасывается при переходе в режимы Stop или Standby.
Бит не может быть сброшен, если HSE генератор прямо или косвенно (через PLL) используется или выбран чтобы использоваться в качестве источника системного тактового сигнала.

HSICAL[7:0]: Internal high-speed clock calibration - калибровка внутреннего высокочастотного RC-генератора; эти биты инициализируются при включении автоматически.

HSITRIM[4:0]: Internal high-speed clock trimming - подстройка внутреннего высокочастотного RC-генератора. Это битовое поле даёт возможность пользователю подстраивать частоту RC-генератора. Это может использоваться для компенсации ухода частоты генератора при изменении напряжения питания или температуры. Значение по умолчанию 16 соответствует частоте генератора HSI 8 МГц±1%. Изменение битового поля на 1 изменяет частоту генератора примерно на 40 кГц.

HSIRDY: Internal high-speed clock ready flag - флаг готовности генератора HSI, устанавливается аппаратно. Значение 1 указывает на то, что 8 МГц RC-генератор стабилен и готов к работе. После сброса бита HSION требуется 6 тактов внутреннего 8 МГц RC-генератора для перехода бита HSIRDY к нулевому значению.

HSION: Internal high-speed clock enable - бит включения внутреннего высокочастотного RC-генератора с частотой 8 МГц. Устанавливается и сбрасывается программно.
Устанавливается аппаратно для принудительного включения RC-генератора при выходе из режима Stop или Standby или в случае сбоя генератора HSE, используемого прямо или косвенно как источник системного тактового сигнала.

RCC_CFGR (Clock configuration register)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16  
Reserved MCO[2:0] Reserved PLLMUL[3:0] PLL
XTPRE
PLL
SRC
rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0  
ADCPRE[1:0] PPRE2[2:0] PPRE1[2:0] HPRE1[3:0] SWS[1:0] SW[1:0]
rw rw rw rw rw rw rw rw rw rw rw rw r r rw rw

Address offset: 0x04
Reset value: 0x0000 0000
Access: 0≤wait state≤2, word, half-word and byte access
1 or 2 wait states inserted only if the access occurs during clock source switch.

MCO: Microcontroller clock output - выбор источника тактового сигнала для выхода MCO, задаётся программно:
0xx: тактовый сигнал не выводится на MCO;
100: выбран системный тактовый сигнал (SYSCLK);
101: выбран сигнал от HSI;
110: выбран сигнал от HSE;
111: выбран сигнал от PLL с делением частоты на 2.
Примечание. Тактовый сигнал на выходе может иметь усечённые циклы при включении и в процессе переключения источника сигнала для MCO.

PLLMUL: PLL multiplication factor - коэффициент умножения частоты PLL; это битовое поле задаётся программно для получения требуемой частоты сигнала на выходе PLL.
Предупреждение. Частота сигнала на выходе PLL должна быть в диапазоне 16..24 МГц.
0000: x2;
0001: x3;
...
1101: x15;
1110: x16;
1111: x16.
Т.е., для получения коэффициента умножения k, k=2..16, устанавливаем значение битового поля PLLMUL=k-2.

PLLXTPRE: LSB of division factor PREDIV1 - младший бит коэффициента деления PREDIV1. Модифицируется программно, может быть изменён только тогда, когда отключена система PLL. Это тот же самый бит, что и младший бит регистра RCC_CFGR2, так что изменение этого бита в одном регистре сопровождается его изменением в другом. Если биты [3:1] в регистре RCC_CFGR2 не установлены, то бит PLLXTPRE позволяет переключать коэффициент деления делителя PREDIV1 между значениями 2 (PLLXTPRE=1) и 1 (PLLXTPRE=0).

PLLSRC: PLL entry clock source - выбор источника сигнала для входа PLL; битовое поле изменяется программно; может быть модифицировано только при отключённой системе PLL.
0: на вход PLL подаётся сигнал от HSI через делитель частоты на 2;
1: выбран сигнал с выхода PREDIV1.

ADCPRE: ADC prescaler - битовое поле модифицируется программно и управляет коэффициентом деления ADC прескалера, используется для выбора частоты тактирования аналого-цифрового преобразователя.
00: PLCK2 делится на 2;
01: PLCK2 делится на 4;
10: PLCK2 делится на 6;
11: PLCK2 делится на 8.
Т.е., коэффициент деления k связан со значением битового поля соотношением k=2*(ADCPRE+1).

PPRE2: APB high-speed prescaler (APB2) - битовое поле модифицируется программно для управления коэффициентом деления APB2 прескалера с целью выбора частоты PCLK2 тактирования подключённых к шине APB2 периферийных устройств микроконтроллера.
0xx: HCLK без деления частоты;
100: HCLK делится на 2;
101: HCLK делится на 4;
110: HCLK делится на 8;
111: HCLK делится на 16.

PPRE1: APB low-speed prescaler (APB1) - битовое поле модифицируется программно для управления коэффициентом деления APB1 прескалера с целью выбора частоты PCLK1 тактирования подключённых к шине APB1 периферийных устройств микроконтроллера.
0xx: HCLK без деления частоты;
100: HCLK делится на 2;
101: HCLK делится на 4;
110: HCLK делится на 8;
111: HCLK делится на 16.

HPRE: AHB prescaler - модифицируемое программно битовое поле для управления коэффициентом деления AHB прескалера и тактовой частотой AHB, тактовый сигнал с выхода этого прескалера используется для тактирования ядра процессора, шины AHB, памяти, DMA, а также как входной сигнал для прескалеров APB1, APB2.
0xxx: SYSCLK без деления частоты;
1000: SYSCLK делится на 2;
1001: SYSCLK делится на 4;
1010: SYSCLK делится на 8;
1011: SYSCLK делится на 16;
1100: SYSCLK делится на 64;
1101: SYSCLK делится на 128;
1110: SYSCLK делится на 256;
1111: SYSCLK делится на 512.

SWS: System clock switch status - битовое поле задаётся аппаратно и содержит информацию об используемом источнике системного тактового сигнала.
00: HSI используется как источник системного тактового сигнала;
01: HSE;
10: PLL;
11: неприменимо.

SW: System clock switch - задаваемое программно битовое поле для выбора источника системного тактового сигнала SYSCLK. Устанавливается аппаратно для принудительного выбора HSI при выходе из режимов Stop и Standby или в случае сбоев в работе генератора HSE (если система CSS включена).
00: HSI выбран как источник системного тактового сигнала;
01: HSE;
10: PLL;
11: недопустимо.

RCC_CIR (Clock interrupt register)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16  
Reserved CSSC Reserved PLL
RDYC
HSE
RDYC
HSI
RDYC
LSE
RDYC
LSI
RDYC
w w w w w w
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0  
Reserve PLL
RDYIE
HSE
RDYIE
HSI
RDYIE
LSE
RDYIE
LSI
RDYIE
CSSF Reserved PLL
RDYF
HSE
RDYF
HSI
RDYF
LSE
RDYF
LSI
RDYF
rw rw rw rw rw r r r r r r

Address offset: 0x08
Reset value: 0x0000 0000
Access: no wait state, word, half-word and byte access

Биты вида CSSC, xRDYC используются для программного сброса соответствующих флагов CSSF, xRDYF: запись 0 не имеет эффекта, запись в разряд 1 сбрасывает соответствующий флаг.

CSSC: Clock security system interrupt clear - запись в бит 1 сбрасывает флаг CSSF.

PLLRDYC: PLL ready interrupt clear - запись в бит 1 сбрасывает флаг PLLRDYF.

HSERDYC: HSE ready interrupt clear - запись в бит 1 сбрасывает флаг HSERDYF.

HSIRDYC: HSI ready interrupt clear - запись в бит 1 сбрасывает флаг HSIRDYF.

LSERDYC: LSE ready interrupt clear - запись в бит 1 сбрасывает флаг LSERDYF.

LSIRDYC: LSI ready interrupt clear - запись в бит 1 сбрасывает флаг LSIRDYF.

Биты вида xRDYIE используются для программного разрешения/запрета прерываний при переходе соответствующего устройства - источника тактового сигнала в состояние готовности. Сброс бита в 0 запрещает прерывание, установка в 1 разрешает прерывание.

PLLRDYIE: PLL ready interrupt enable - разрешить/запретить прерывание в случае готовности PLL (произошёл захват фазы).

HSERDYIE: HSE ready interrupt enable - разрешить/запретить прерывание в случае готовности HSE (генерация стабилизировалась).

HSIRDYIE: HSI ready interrupt enable - разрешить/запретить прерывание в случае готовности HSI (внутренний RC-генератор на 8 МГц стабилизировался).

LSERDYIE: LSE ready interrupt enable - разрешить/запретить прерывание в случае готовности LSE (генератор на 32768 Гц стабилизировался).

LSIRDYIE: LSI ready interrupt enable - разрешить/запретить прерывание в случае готовности LSI (внутренний низкочастотный RC-генератор на 40 кГц стабилизировался).

CSSF: Clock security system interrupt flag - флаг устанавливается аппаратно при обнаружении сбоя в работе HSE генератора. Сбрасывается программно записью 1 в бит CSSC.

Биты вида xRDYF устанавливаются аппаратно в 1 при возникновении в системе тактирования соответствующих событий, если бит xRDYIE разрешает прерывание при возникновении этого события (бит xRDYIE установлен в 1). Бит вида xRDYF сбрасывается программно с помощью записи 1 в соответствующий бит xRDYC.

PLLRDYF: PLL ready interrupt flag - флаг прерывания готовности PLL.

HSERDYF: HSE ready interrupt flag - флаг прерывания готовности HSE.

HSIRDYF: HSI ready interrupt flag - флаг прерывания готовности HSI.

LSERDYF: LSE ready interrupt flag - флаг прерывания готовности LSE.

LSIRDYF: LSI ready interrupt flag - флаг прерывания готовности LSI.

RCC_APB2RSTR (APB2 peripheral reset register)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16  
Reserved TIM17
RST
TIM16
RST
TIM15
RST
rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0  
Res. USART1
RST
Res. SPI1
RST
TIM1
RST
Res. ADC1
RST
IOPG
RST
IOPF
RST
IOPE
RST
IOPD
RST
IOPC
RST
IOPB
RST
IOPA
RST
Res. AFIO
RST
rw rw rw rw rw rw rw rw rw rw rw rw

Address offset: 0x0C
Reset value: 0x00000 0000
Access: no wait state, word, half-word and byte access

Регистр используется для сброса периферийных устройств на шине APB2: запись 0 в бит регистра не имеет эффекта, а запись 1 сбрасывает соответствующее этому биту периферийное устройство микроконтроллера.

RCC_APB1RSTR (APB1 peripheral reset register)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16  
Res. CEC
RST
DAC
RST
PWR
RST
BKP
RST
Reserved I2C2
RST
I2C1
RST
UART5
RST
UART4
RST
USART3
RST
USART2
RST
Res.
rw rw rw rw rw rwr rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0  
SPI3
RST
SPI2
RST
Reserved WWDG Reserved TIM14
RST
TIM13
RST
TIM12
RST
TIM7
RST
TIM6
RST
TIM5
RST
TIM4
RST
TIM3
RST
TIM2
RST
rw rw rw rw rw rw rw rw rw rw rw rw

Address offset: 0x10
Reset value: 0x0000 0000
Access: no wait state, word, half-word and byte access

Регистр используется для сброса периферийных устройств на шине APB1: запись 0 в бит регистра не имеет эффекта, а запись 1 сбрасывает соответствующее этому биту периферийное устройство микроконтроллера.

RCC_AHBENR (AHB peripheral clock enable register)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16  
Reserved
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0  
Reserved FSMC
EN
Res. CRC
EN
Res. FLITF
EN
Res. SRAM
EN
DMA2
EN
DMA1
EN
rw rw rw rw rw rw

Address offset: 0x14
Reset value: 0x0000 0014
Access: no wait state, word, half-word and byte access
Примечание. Когда тактовый сигнал периферийного устройства микроконтроллера отключён, регистры этого устройства могут быть программно недоступны для чтения, в этом случае при чтении всегда будет возвращаться значение 0.

Биты этого регистра устанавливаются и сбрасываются программно и используются для программного включения/отключения тактового сигнала соответствующих им периферийных устройств, подключённых к шине AHB. Установка бита в 1 включает тактовый сигнал, сброс в 0 отключает.

FSMCEN: FSMC clock enable - включение тактового сигнала устройства FSMC.

CRCEN: CRC clock enable - включение тактового сигнала устройства CRC.

FLITFEN: FLITF clock enable - оставлять включённым тактовый сигнал FLITF в режиме Sleep
0: FLITF отключен в режиме Sleep;
1: FLITF включён в режиме Sleep.
Примечание. После сброса бит установлен.

SRAMEN: SRAM interface clock enable - оставлять включённым тактовый сигнал интерфейса SRAM в режиме Sleep
0: отключен в режиме Sleep;
1: включён в режиме Sleep.
Примечание. После сброса бит установлен.

DMA2EN: DMA2 clock enable - включение тактового сигнала устройства DMA2.

DMA1EN: DMA1 clock enable - включение тактового сигнала устройства DMA1.

RCC_APB2ENR (APB2 peripheral clock enable register)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16  
Reserved TIM17
EN
TIM16
EN
TIM15
EN
rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0  
Res. USART1
EN
Res. SPI1
EN
TIM1
EN
Res. ADC1
EN
IOPG
EN
IOPF
EN
IOPE
EN
IOPD
EN
IOPC
EN
IOPB
EN
IOPA
EN
Res. AFIO
EN
rw rw rw rw rw rw rw rw rw rw rw rw

Address: 0x18
Reset value: 0x0000 0000
Access: word, half-word and byte access
Без состояний ожидания за исключением ситуации, когда доступ происходит во время обращения к периферии в домене APB2. В этом случае добавляются состояния ожидания до завершения доступа к периферии на APB2.
Примечание. Когда тактовый сигнал периферийного устройства микроконтроллера отключён, регистры этого устройства могут быть программно недоступны для чтения, в этом случае при чтении всегда будет возвращаться значение 0.

Регистр используется для управления тактовым сигналом периферийных устройств микроконтроллера на шине APB2: сброс бита в 0 отключает тактовый сигнал соответствующего устройства (значение после сброса), а установка в 1 - включает тактовый сигнал.

RCC_APB1ENR (APB1 peripheral clock enable register)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16  
Res. CEC
EN
DAC
EN
PWR
EN
BKP
EN
Reserved I2C2
EN
I2C1
EN
UART5
EN
UART4
EN
USART3
EN
USART2
EN
Res.
rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0  
SPI3
EN
SPI2
EN
Reserved WWDG Reserved TIM14
EN
TIM13
EN
TIM12
EN
TIM7
EN
TIM6
EN
TIM5
EN
TIM4
EN
TIM3
EN
TIM2
EN
rw rw rw rw rw rw rw rw rw rw rw rw

Address: 0x1C
Reset value: 0x0000 0000
Access: word, half-word and byte access
Без состояний ожидания за исключением ситуации, когда доступ происходит во время обращения к периферии в домене APB1. В этом случае добавляются состояния ожидания до завершения доступа к периферии на APB1.
Примечание. Когда тактовый сигнал периферийного устройства микроконтроллера отключён, регистры этого устройства могут быть программно недоступны для чтения, в этом случае при чтении всегда будет возвращаться значение 0.

Регистр используется для управления тактовым сигналом периферийных устройств микроконтроллера на шине APB1: сброс бита в 0 отключает тактовый сигнал соответствующего устройства (значение после сброса), а установка в 1 - включает тактовый сигнал.

RCC_BDCR (Backup domain control register)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16  
Reserved BDRST
rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0  
RTCEN Reserved RTCSEL[1:0] Reserved LSEBYP LSERDY LSEON
rw rw rw rw r rw

Address offset: 0x20
Reset value: 0x0000 0000, reset by Backup domain Reset.
Access: 0≤wait state≤3, word, half-word and byte access
Состояния ожидания добавляются в случае последовательных доступов к этому регистру.
Примечание. Биты LSEON, LSEBYP, RTCSEL и RTCEN регистра RCC_BDCR находятся в Backup (резервном) домене. Поэтому после сброса эти биты защищены от записи. Для того, чтобы модифицировать эти биты, необходимо установить бит DBP в регистре PWR_CR. Так как биты расположены в Backup домене, их содержимое не изменяется в результате сброса микроконтроллера. Если микроконтроллер получает питание от батареи (вывод VBAT), содержимое битов сохраняется при отключении основного питания микроконтроллера.

BDRST: Backup domain software reset - программный сброс резервного домена; запись 1 в этот бит сбрасывает весь Backup домен, запись 0 не вызывает никакого эффекта.

RTCEN: RTC clock enable - включение часов реального времени; устанавливается и сбрасывается программно, установка в 1 включает RTC, а сброс в 0 отключает.

RTCSEL[1:0]: RTC clock source selection - выбор источника тактового сигнала для часов реального времени. Устанавливается программно. Выбранный источник уже не может быть впоследствии изменён никаким образом, кроме сброса всего Backup домена с помощью бита BDRST этого регистра.
00: тактовый сигнал отключён;
01: LSE генератор используется как источник тактового сигнала для часов;
10: LSI генератор используется;
11: HSE генератор с делителем частоты на 128 используются как источник тактового сигнала для часов.

LSEBYP: External low-speed oscillator bypass - обход LSE генератора; устанавливается и сбрасывается в отладочном режиме; этот бит может быть записан только при отключённом генераторе на 32 кГц.
0: не используется обход LSE генератора;
1: используется обход LSE генератора.

LSERDY: External low-speed oscillator ready - бит готовности генератора LSE, устанавливается и сбрасывается аппаратно; значение бита 1 указывает на готовность генератора LSE. После сброса бита LSEON бит LSERDY сбрасывается через 6 тактов низкочастотного генератора.

LSEON: External low-speed oscillator enable - бит включения генератора LSE; устанавливается и сбрасывается программно; установка в 1 включает генератор.

RCC_CSR (Control/status register)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16  
LPWR
RSTF
WWDG
RSTF
IWDG
RSTF
SFT
RSTF
POR
RSTF
PIN
RSTF
Res. RMVF Reserved
rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0  
Reserved LSI
RDY
LSI
ON
r rw

Address: 0x24
Reset value: 0x0C00 0000, сбрасывается при системном сбросе за исключением флагов причины сброса, которые сбрасываются только при включении питания.
Access: 0≤wait state≤3, word, half-word and byte access
Состояния ожидания вводятся в случае последовательных обращений к этому регистру.

Биты с именами вида xRSTF являются флагами, несущими информацию о причине сброса микроконтроллера. Установка в 1 происходит аппаратно после сброса микроконтроллера по соответствующей причине, для сброса флагов требуется запись 1 в бит RMVF.

LPWRRSTF: Low-power reset flag - флаг сброса в результате падения напряжения ниже заданного значения (сброс от системы Low-power management).

WWDGRSTF: Window watchdog reset flag - флаг устанавливается при сбросе от оконного сторожевого таймера.

IWDGRSTF: Independent watchdog reset flag - флаг устанавливается при сбросе от независимого сторожевого таймера.

SFTRSTF: Software reset flag - флаг устанавливается при программном сбросе.

PORRSTF: POR/PDR reset flag - флаг устанавливается при POR/PDR сбросе (Power-on/power-down, сброс при включении питания).

PINRSTF: PIN reset flag - флаг устанавливается при сбросе импульсом сброса на выводе NRST микроконтроллера.

RMVF: Remove reset flag - флаг для сброса всех флагов xRSTF; сброс флагов происходит при записи 1 в этот бит.

LSIRDY: Internal low-speed oscillator ready - флаг готовности внутреннего низкочастотного RC-генератора на 40 кГц LSI. Устанавливается и сбрасывается аппаратно, значение 1 указывает на готовность генератора. После сброса бита LSION требуется 3 такта 40 кГц генератора для перехода бита LSIRDY к значению 0.

LSION: Internal low-speed oscillator enable - бит устанавливается и сбрасывается программно; значение 1 включает внутренний RC-генератор LSI с частотой 40 кГц.

RCC_CFGR2 (Clock configuration register2)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16  
Reserved
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0  
Reserved PREDIV1[3:0]
rw rw rw rw

Address offset: 0x2C
Access: no wait state, word, half-word and byte access
Reset value: 0x0000 0000

PREDIV1[3:0]: PREDIV1 division factor - битовое поле управляет коэффициентом деления делителя частоты PREDIV1, установленного между HSE и PLL; изменяется программно; запись возможна только при отключённой системе PLL.
Примечание. Бит 0 является тем же самым битом, что и бит 17 (PLLXTPRE) регистра RCC_CFGR.
0000: деление входной частоты на 1;
0001: деление входной частоты на 2;
0010: деление входной частоты на 3;
... 1111: деление входной частоты на 16.
Коэффициент деления k=PREDIV1+1.

author: hamper; date: 2016-03-01
  @Mail.ru