54 #define RCC_PLL_CTRL_Reset_Value ((uint32_t)0x00000000)
55 #define RCC_PLL_OD_Reset_Value ((uint32_t)0x00000000)
56 #define RCC_PLL_NR_Reset_Value ((uint32_t)0x00000000)
57 #define RCC_PLL_NF_Reset_Value ((uint32_t)0x00000000)
77 uint32_t RCC_WaitClkChange(RCC_SysClk_TypeDef RCC_SysClk)
147 uint32_t pll_div = 0;
148 uint32_t f_ref = 1000000;
163 if (NT_COMMON_REG->USB_CTRL_bit.FSEL)
165 f_in = (uint32_t)(24000000);
169 f_in = (uint32_t)(12000000);
174 f_in = (uint32_t)(60000000);
178 f_in = (uint32_t)(25000000);
181 if (SysFreq >= 100000000)
185 else if ((SysFreq >= 50000000))
192 pll_div = (50000000/SysFreq + 1)/2 - 1;
193 pll_div_cmd = ENABLE;
197 if (pll_div_cmd == DISABLE)
199 nf = ((SysFreq/1000000) * ((uint32_t)no + 1) * nr )/(f_in/1000000);
203 nf = ((SysFreq/1000000) * ((uint32_t)no + 1) * nr * 2*(pll_div+1) )/(f_in/1000000);
215 if (pll_div_cmd == DISABLE)
264 NT_COMMON_REG->PLL_CTRL_bit.REFSEL = ((uint32_t)(RCC_PLLInit_Struct->
RCC_PLLRef));
265 NT_COMMON_REG->PLL_CTRL_bit.PLL_DIV = RCC_PLLInit_Struct->
RCC_PLLDiv;
266 NT_COMMON_REG->PLL_OD = ((uint32_t)(RCC_PLLInit_Struct->
RCC_PLLNO));
267 NT_COMMON_REG->PLL_NF = RCC_PLLInit_Struct->
RCC_PLLNF - 2;
268 NT_COMMON_REG->PLL_NR = RCC_PLLInit_Struct->
RCC_PLLNR - 2;
312 if (State == DISABLE)
314 NT_COMMON_REG->PLL_CTRL_bit.PD = 0;
316 else if (State == ENABLE)
318 NT_COMMON_REG->PLL_CTRL_bit.PD = 1;
344 NT_COMMON_REG->APB_CLK |= RCC_PeriphClk;
346 else if (State == DISABLE)
348 NT_COMMON_REG->APB_CLK &= ~RCC_PeriphClk;
367 NT_COMMON_REG->SYS_CLK = ((uint32_t)RCC_SysClk);
408 NT_COMMON_REG->USB_CTRL &= ~((1<<USB_CTRL_FSEL_Pos) | (1<<USB_CTRL_CLKSEL_Pos));
409 NT_COMMON_REG->USB_CTRL |= (RCC_USBFreq<<USB_CTRL_FSEL_Pos) | (RCC_USBClk<<USB_CTRL_CLKSEL_Pos);
426 NT_COMMON_REG->USB_CTRL_bit.CLKEN = 1;
428 else if (State == DISABLE)
430 NT_COMMON_REG->USB_CTRL_bit.CLKEN = 0;
450 if (UARTx == NT_UART0)
452 offset = UART_SPI_CLK_SEL_SEL_UART0_Pos;
454 else if (UARTx == NT_UART1)
456 offset = UART_SPI_CLK_SEL_SEL_UART1_Pos;
458 else if (UARTx == NT_UART2)
460 offset = UART_SPI_CLK_SEL_SEL_UART2_Pos;
464 offset = UART_SPI_CLK_SEL_SEL_UART3_Pos;
467 NT_COMMON_REG->UART_SPI_CLK_SEL &= ~(3<<offset);
468 NT_COMMON_REG->UART_SPI_CLK_SEL |= (RCC_UARTClk<<offset);
491 if (UARTx == NT_UART0)
493 offset = UART_CLK_DIVEN_UART0_Pos;
495 else if (UARTx == NT_UART1)
497 offset = UART_CLK_DIVEN_UART1_Pos;
499 else if (UARTx == NT_UART2)
501 offset = UART_CLK_DIVEN_UART2_Pos;
505 offset = UART_CLK_DIVEN_UART3_Pos;
508 NT_COMMON_REG->UART_CLK &= ~(0x7F << offset);
509 NT_COMMON_REG->UART_CLK |= (DivVal << (offset+1)) | (DivState << offset);
528 if (UARTx == NT_UART0)
530 offset = UART_CLK_CLKEN_UART0_Pos;
532 else if (UARTx == NT_UART1)
534 offset = UART_CLK_CLKEN_UART1_Pos;
536 else if (UARTx == NT_UART2)
538 offset = UART_CLK_CLKEN_UART2_Pos;
542 offset = UART_CLK_CLKEN_UART3_Pos;
547 NT_COMMON_REG->UART_CLK |= (1 << offset);
549 else if (State == DISABLE)
551 NT_COMMON_REG->UART_CLK &= ~(1 << offset);
573 offset = UART_SPI_CLK_SEL_SEL_SPI0_Pos;
575 else if (SPIx == NT_SPI1)
577 offset = UART_SPI_CLK_SEL_SEL_SPI1_Pos;
579 else if (SPIx == NT_SPI2)
581 offset = UART_SPI_CLK_SEL_SEL_SPI2_Pos;
585 offset = UART_SPI_CLK_SEL_SEL_SPI3_Pos;
588 NT_COMMON_REG->UART_SPI_CLK_SEL &= ~(3<<offset);
589 NT_COMMON_REG->UART_SPI_CLK_SEL |= (RCC_SPIClk<<offset);
615 offset = SPI_CLK_DIVEN_SPI0_Pos;
617 else if (SPIx == NT_SPI1)
619 offset = SPI_CLK_DIVEN_SPI1_Pos;
621 else if (SPIx == NT_SPI2)
623 offset = SPI_CLK_DIVEN_SPI2_Pos;
627 offset = SPI_CLK_DIVEN_SPI3_Pos;
630 NT_COMMON_REG->SPI_CLK &= ~(0x7F << offset);
631 NT_COMMON_REG->SPI_CLK |= (DivVal << (offset+1)) | (DivState << offset);
652 offset = SPI_CLK_CLKEN_SPI0_Pos;
654 else if (SPIx == NT_SPI1)
656 offset = SPI_CLK_CLKEN_SPI1_Pos;
658 else if (SPIx == NT_SPI2)
660 offset = SPI_CLK_CLKEN_SPI2_Pos;
664 offset = SPI_CLK_CLKEN_SPI3_Pos;
669 NT_COMMON_REG->SPI_CLK |= (1 << offset);
671 else if (State == DISABLE)
673 NT_COMMON_REG->SPI_CLK &= ~(1 << offset);
692 volatile uint32_t* ctrl_reg;
701 offset = ADC_CTRL1_DIVEN_ADC0_Pos;
702 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL1);
706 offset = ADC_CTRL1_DIVEN_ADC1_Pos;
707 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL1);
711 offset = ADC_CTRL1_DIVEN_ADC2_Pos;
712 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL1);
716 offset = ADC_CTRL1_DIVEN_ADC3_Pos;
717 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL1);
721 offset = ADC_CTRL2_DIVEN_ADC4_Pos;
722 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL2);
726 offset = ADC_CTRL2_DIVEN_ADC5_Pos;
727 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL2);
731 offset = ADC_CTRL2_DIVEN_ADC6_Pos;
732 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL2);
736 offset = ADC_CTRL2_DIVEN_ADC7_Pos;
737 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL2);
741 offset = ADC_CTRL3_DIVEN_ADC8_Pos;
742 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL3);
746 offset = ADC_CTRL3_DIVEN_ADC9_Pos;
747 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL3);
751 offset = ADC_CTRL3_DIVEN_ADC10_Pos;
752 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL3);
756 offset = ADC_CTRL3_DIVEN_ADC11_Pos;
757 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL3);
760 *ctrl_reg &= ~(0x7F << offset);
761 *ctrl_reg |= (DivVal << (offset+1)) | (DivState << offset);
776 volatile uint32_t* ctrl_reg;
784 offset = ADC_CTRL1_CLKEN_ADC0_Pos;
785 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL1);
789 offset = ADC_CTRL1_CLKEN_ADC1_Pos;
790 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL1);
794 offset = ADC_CTRL1_CLKEN_ADC2_Pos;
795 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL1);
799 offset = ADC_CTRL1_CLKEN_ADC3_Pos;
800 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL1);
804 offset = ADC_CTRL2_CLKEN_ADC4_Pos;
805 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL2);
809 offset = ADC_CTRL2_CLKEN_ADC5_Pos;
810 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL2);
814 offset = ADC_CTRL2_CLKEN_ADC6_Pos;
815 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL2);
819 offset = ADC_CTRL2_CLKEN_ADC7_Pos;
820 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL2);
824 offset = ADC_CTRL3_CLKEN_ADC8_Pos;
825 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL3);
829 offset = ADC_CTRL3_CLKEN_ADC9_Pos;
830 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL3);
834 offset = ADC_CTRL3_CLKEN_ADC10_Pos;
835 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL3);
839 offset = ADC_CTRL3_CLKEN_ADC11_Pos;
840 ctrl_reg = &(NT_COMMON_REG->ADC_CTRL3);
845 *ctrl_reg |= (1 << offset);
847 else if (State == DISABLE)
849 *ctrl_reg &= ~(1 << offset);
865 volatile uint32_t* ctrl_reg;
888 ctrl_reg = &(NT_COMMON_REG->PER_RST1);
892 ctrl_reg = &(NT_COMMON_REG->PER_RST2);
897 *ctrl_reg |= RCC_PeriphRst;
899 else if (State == DISABLE)
901 *ctrl_reg &= ~RCC_PeriphRst;
RCC_UARTClk_TypeDef
Выбор источника тактирования для UART.
void RCC_PLLPowerDownCmd(FunctionalState State)
Управление режимом PowerDown PLL.
OperationStatus RCC_SysClkSel(RCC_SysClk_TypeDef RCC_SysClk)
Выбор источника для системного тактового сигнала.
void RCC_SPIClkCmd(NT_SPI_TypeDef *SPIx, FunctionalState State)
Включение тактирования SPI.
RCC_PLLRef_TypeDef
Выбор источника опорного сигнала PLL.
void RCC_ADCClkDivConfig(RCC_ADCClk_TypeDef RCC_ADCClk, uint32_t DivVal, FunctionalState DivState)
Настройка делителя тактового сигнала для выбранного ADC.
#define IS_RCC_PLL_REF(PLL_REF)
Макрос проверки аргументов типа RCC_PLLRef_TypeDef.
#define IS_RCC_PLL_NR(PLL_NR)
Макрос проверки значения опорного делителя PLL на попадание в допустимый диапазон.
RCC_ADCClk_TypeDef
Выбор модуля ADC для настройки его тактового сигнала.
#define IS_RCC_SYS_FREQ(SYS_FREQ)
Макрос проверки значения желаемой частоты при автонастройке в допустимый диапазон.
Файл содержит все прототипы функций для RCC (Reset & Clock Control).
#define IS_RCC_PLL_NO(PLL_NO)
Макрос проверки аргументов типа RCC_PLLNO_TypeDef.
#define RCC_PLL_OD_Reset_Value
#define IS_RCC_PLL_NF(PLL_NF)
Макрос проверки значения делителя ОС PLL на попадание в допустимый диапазон.
FunctionalState
Описывает логическое состояние периферии. Используется для операций включения/выключения периферийных...
GPIO_AltFunc_TypeDef GPIO_AltFunc
#define IS_SPI_ALL_PERIPH(PERIPH)
Макрос проверки аргументов типа NT_SPI_TypeDef.
#define IS_RCC_PLLDIV(PLLDIV)
Макрос проверки значения выходного делителя PLL на попадание в допустимый диапазон.
void GPIO_Init(NT_GPIO_TypeDef *GPIOx, GPIO_Init_TypeDef *GPIO_InitStruct)
Инициализирует модуль GPIOx согласно параметрам структуры GPIO_InitStruct.
void RCC_UARTClkSel(NT_UART_TypeDef *UARTx, RCC_UARTClk_TypeDef RCC_UARTClk)
Настройка источника тактового сигнала для выбранного UART.
void GPIO_StructInit(GPIO_Init_TypeDef *GPIO_InitStruct)
Заполнение каждого члена структуры GPIO_InitStruct значениями по умолчанию.
#define IS_RCC_ADC_CLK(ADC_CLK)
Макрос проверки аргументов типа RCC_ADCClk_TypeDef.
void RCC_PeriphClkCmd(RCC_PeriphClk_TypeDef RCC_PeriphClk, FunctionalState State)
Включение тактирования выбранного блока периферии.
#define IS_RCC_USB_CLK(USB_CLK)
Макрос проверки аргументов типа RCC_USBClk_TypeDef.
#define IS_UART_ALL_PERIPH(PERIPH)
Макрос проверки аргументов типа NT_UART_TypeDef.
Структура инициализации PLL.
#define IS_RCC_SPI_CLK(SPI_CLK)
Макрос проверки аргументов типа RCC_SPIClk_TypeDef.
void RCC_ADCClkCmd(RCC_ADCClk_TypeDef RCC_ADCClk, FunctionalState State)
Включение тактирования ADC.
#define RCC_PLL_NF_Reset_Value
#define IS_RCC_USB_FREQ(USB_FREQ)
Макрос проверки аргументов типа RCC_USBFreq_TypeDef.
RCC_USBClk_TypeDef
Выбор источника тактирования для USB.
void RCC_SPIClkSel(NT_SPI_TypeDef *SPIx, RCC_SPIClk_TypeDef RCC_SPIClk)
Настройка источника тактового сигнала для выбранного SPI.
RCC_PLLNO_TypeDef
Выходной делитель NO.
void RCC_PLLDeInit()
Устанавливает все регистры PLL значениями по умолчанию.
#define IS_RCC_SYS_CLK(SYS_CLK)
Макрос проверки аргументов типа RCC_SysClk_TypeDef.
RCC_SPIClk_TypeDef
Выбор источника тактирования для SPI.
void RCC_UARTClkCmd(NT_UART_TypeDef *UARTx, FunctionalState State)
Включение тактирования UART.
void RCC_SysClkDiv2Out(FunctionalState State)
Включение генерации тактового сигнала с частой равной половине системной на выводе H[0]...
uint32_t RCC_WaitClkChange(RCC_SysClk_TypeDef RCC_SysClk)
Процедура ожидания смены источника тактового сигнала
#define IS_RCC_PERIPH_CLK(PERIPH_CLK)
Макрос проверки аргументов типа RCC_PeriphClk_TypeDef.
void RCC_SPIClkDivConfig(NT_SPI_TypeDef *SPIx, uint32_t DivVal, FunctionalState DivState)
Настройка делителя тактового сигнала для выбранного SPI.
GPIO_Out_TypeDef GPIO_Out
#define IS_RCC_PERIPH_RST(PERIPH_RST)
Макрос проверки аргументов типа RCC_PeriphRst_TypeDef.
Структура инициализации GPIO.
void RCC_UARTClkDivConfig(NT_UART_TypeDef *UARTx, uint32_t DivVal, FunctionalState DivState)
Настройка делителя тактового сигнала для выбранного UART.
RCC_PLLNO_TypeDef RCC_PLLNO
#define IS_RCC_CLK_DIV(CLK_DIV)
Макрос проверки значения делителя тактового сигнала на попадание в допустимый диапазон.
OperationStatus
Описывает коды возврата для функций при выполнении какой-либо операции.
RCC_USBFreq_TypeDef
Выбор фиксированной частоты на входе CLK_USB.
#define IS_RCC_UART_CLK(UART_CLK)
Макрос проверки аргументов типа RCC_UARTClk_TypeDef.
GPIO_Mode_TypeDef GPIO_Mode
RCC_PLLRef_TypeDef RCC_PLLRef
RCC_SysClk_TypeDef RCC_SysClkStatus()
Текущий источник системного тактового сигнала.
#define IS_FUNCTIONAL_STATE(STATE)
Макрос проверки аргументов типа FunctionalState.
RCC_PeriphRst_TypeDef
Управление сбросом периферийных блоков
void RCC_USBClkConfig(RCC_USBClk_TypeDef RCC_USBClk, RCC_USBFreq_TypeDef RCC_USBFreq)
Настройка источника тактового сигнала для USB.
GPIO_Dir_TypeDef GPIO_Dir
OperationStatus RCC_PLLAutoConfig(RCC_PLLRef_TypeDef RCC_PLLRef, uint32_t SysFreq)
Автоматическая конфигурация PLL для получения желаемой системной частоты.
void RCC_PLLInit(RCC_PLLInit_TypeDef *RCC_PLLInit_Struct)
Инициализирует PLL согласно параметрам структуры RCC_PLLInit_Struct.
#define RCC_CLK_CHANGE_TIMEOUT
RCC_PeriphClk_TypeDef
Управление тактированием периферийных блоков
#define EXT_OSC_VALUE
Определение частоты используемого внешнего тактового генератора.
void RCC_PLLStructInit(RCC_PLLInit_TypeDef *RCC_PLLInit_Struct)
Заполнение каждого члена структуры RCC_PLLInit_Struct значениями по умолчанию.
RCC_SysClk_TypeDef
Выбор источника системной частоты.
#define RCC_PLL_NR_Reset_Value
#define RCC_PLL_CTRL_Reset_Value
void RCC_PeriphRstCmd(RCC_PeriphRst_TypeDef RCC_PeriphRst, FunctionalState State)
Вывод из состояния сброса периферийных блоков.
void RCC_USBClkCmd(FunctionalState State)
Включение тактирования USB.