NIIETCM4 PD  v0.9.0
Драйвер периферии для микроконтроллеров на базе ядра ARM Cortex-M4
niietcm4_rcc.h
См. документацию.
1 
29 /* Define to prevent recursive inclusion -------------------------------------*/
30 #ifndef __NIIETCM4_RCC_H
31 #define __NIIETCM4_RCC_H
32 
33 #ifdef __cplusplus
34  extern "C" {
35 #endif
36 
37 /* Includes ------------------------------------------------------------------*/
38 #include "niietcm4.h"
39 
52  #define RCC_CLK_CHANGE_TIMEOUT ((uint32_t)10000)
53  #define RCC_CLK_PLL_STABLE_TIMEOUT ((uint32_t)100)
67 typedef enum
68 {
74 
79 #define IS_RCC_PLL_REF(PLL_REF) (((PLL_REF) == RCC_PLLRef_XI_OSC) || \
80  ((PLL_REF) == RCC_PLLRef_USB_CLK) || \
81  ((PLL_REF) == RCC_PLLRef_USB_60MHz)|| \
82  ((PLL_REF) == RCC_PLLRef_ETH_25MHz))
83 
84 
89 typedef enum
90 {
95 
100 #define IS_RCC_PLL_NO(PLL_NO) (((PLL_NO) == RCC_PLLNO_Disable) || \
101  ((PLL_NO) == RCC_PLLNO_Div2) || \
102  ((PLL_NO) == RCC_PLLNO_Div4))
103 
108 typedef enum
109 {
115 
120 #define IS_RCC_UART_CLK(UART_CLK) (((UART_CLK) == RCC_UARTClk_SYSCLK) || \
121  ((UART_CLK) == RCC_UARTClk_XI_OSC) || \
122  ((UART_CLK) == RCC_UARTClk_USB_CLK) || \
123  ((UART_CLK) == RCC_UARTClk_USB_60MHz))
124 
129  typedef enum
130  {
136 
141  #define IS_RCC_SPI_CLK(SPI_CLK) (((SPI_CLK) == RCC_SPIClk_SYSCLK) || \
142  ((SPI_CLK) == RCC_SPIClk_XI_OSC) || \
143  ((SPI_CLK) == RCC_SPIClk_USB_CLK) || \
144  ((SPI_CLK) == RCC_SPIClk_USB_60MHz))
145 
150 typedef enum
151 {
155 
160 #define IS_RCC_USB_CLK(USB_CLK) (((USB_CLK) == RCC_USBClk_XI_OSC) || \
161  ((USB_CLK) == RCC_USBClk_USB_CLK))
162 
167 typedef enum
168 {
172 
177 #define IS_RCC_USB_FREQ(USB_FREQ) (((USB_FREQ) == RCC_USBFreq_12MHz) || \
178  ((USB_FREQ) == RCC_USBFreq_24MHz))
179 
184 typedef enum
185 {
199 
204 #define IS_RCC_ADC_CLK(ADC_CLK) (((ADC_CLK) == RCC_ADCClk_0) || \
205  ((ADC_CLK) == RCC_ADCClk_1) || \
206  ((ADC_CLK) == RCC_ADCClk_2) || \
207  ((ADC_CLK) == RCC_ADCClk_3) || \
208  ((ADC_CLK) == RCC_ADCClk_4) || \
209  ((ADC_CLK) == RCC_ADCClk_5) || \
210  ((ADC_CLK) == RCC_ADCClk_6) || \
211  ((ADC_CLK) == RCC_ADCClk_7) || \
212  ((ADC_CLK) == RCC_ADCClk_8) || \
213  ((ADC_CLK) == RCC_ADCClk_9) || \
214  ((ADC_CLK) == RCC_ADCClk_10) || \
215  ((ADC_CLK) == RCC_ADCClk_11))
216 
221 typedef enum
222 {
232 
237 #define IS_RCC_SYS_CLK(SYS_CLK) (((SYS_CLK) == RCC_SysClk_CPE_Sel) || \
238  ((SYS_CLK) == RCC_SysClk_POR) || \
239  ((SYS_CLK) == RCC_SysClk_XI_OSC) || \
240  ((SYS_CLK) == RCC_SysClk_PLL) || \
241  ((SYS_CLK) == RCC_SysClk_PLLDIV) || \
242  ((SYS_CLK) == RCC_SysClk_USB60MHz) || \
243  ((SYS_CLK) == RCC_SysClk_USB_CLK) || \
244  ((SYS_CLK) == RCC_SysClk_ETH25MHz))
245 
250 typedef enum
251 {
252  RCC_PeriphClk_QEP0 = ((uint32_t)(1<<1)),
253  RCC_PeriphClk_QEP1 = ((uint32_t)(1<<2)),
254  RCC_PeriphClk_CMP = ((uint32_t)(1<<9)),
255  RCC_PeriphClk_PWM0 = ((uint32_t)(1<<10)),
256  RCC_PeriphClk_PWM1 = ((uint32_t)(1<<11)),
257  RCC_PeriphClk_PWM2 = ((uint32_t)(1<<12)),
258  RCC_PeriphClk_PWM3 = ((uint32_t)(1<<13)),
259  RCC_PeriphClk_PWM4 = ((uint32_t)(1<<14)),
260  RCC_PeriphClk_PWM5 = ((uint32_t)(1<<15)),
261  RCC_PeriphClk_PWM6 = ((uint32_t)(1<<16)),
262  RCC_PeriphClk_PWM7 = ((uint32_t)(1<<17)),
263  RCC_PeriphClk_PWM8 = ((uint32_t)(1<<18)),
264  RCC_PeriphClk_WD = ((uint32_t)(1<<19)),
265  RCC_PeriphClk_I2C0 = ((uint32_t)(1<<20)),
266  RCC_PeriphClk_I2C1 = ((uint32_t)(1<<21)),
267  RCC_PeriphClk_ADC = ((uint32_t)(1<<24))
269 
274 #define IS_RCC_PERIPH_CLK(PERIPH_CLK) (((PERIPH_CLK) == RCC_PeriphClk_QEP0) || \
275  ((PERIPH_CLK) == RCC_PeriphClk_QEP1) || \
276  ((PERIPH_CLK) == RCC_PeriphClk_CMP) || \
277  ((PERIPH_CLK) == RCC_PeriphClk_PWM0) || \
278  ((PERIPH_CLK) == RCC_PeriphClk_PWM1) || \
279  ((PERIPH_CLK) == RCC_PeriphClk_PWM2) || \
280  ((PERIPH_CLK) == RCC_PeriphClk_PWM4) || \
281  ((PERIPH_CLK) == RCC_PeriphClk_PWM5) || \
282  ((PERIPH_CLK) == RCC_PeriphClk_PWM6) || \
283  ((PERIPH_CLK) == RCC_PeriphClk_PWM7) || \
284  ((PERIPH_CLK) == RCC_PeriphClk_PWM8) || \
285  ((PERIPH_CLK) == RCC_PeriphClk_WD) || \
286  ((PERIPH_CLK) == RCC_PeriphClk_I2C0) || \
287  ((PERIPH_CLK) == RCC_PeriphClk_I2C1) || \
288  ((PERIPH_CLK) == RCC_PeriphClk_ADC))
289 
294 typedef enum
295 {
331 
336 #define IS_RCC_PERIPH_RST(PERIPH_RST) (((PERIPH_RST) == RCC_PeriphRst_WD) || \
337  ((PERIPH_RST) == RCC_PeriphRst_I2C0) || \
338  ((PERIPH_RST) == RCC_PeriphRst_I2C1) || \
339  ((PERIPH_RST) == RCC_PeriphRst_USB) || \
340  ((PERIPH_RST) == RCC_PeriphRst_Timer0) || \
341  ((PERIPH_RST) == RCC_PeriphRst_Timer1) || \
342  ((PERIPH_RST) == RCC_PeriphRst_Timer2) || \
343  ((PERIPH_RST) == RCC_PeriphRst_UART0) || \
344  ((PERIPH_RST) == RCC_PeriphRst_UART1) || \
345  ((PERIPH_RST) == RCC_PeriphRst_UART2) || \
346  ((PERIPH_RST) == RCC_PeriphRst_UART3) || \
347  ((PERIPH_RST) == RCC_PeriphRst_SPI0) || \
348  ((PERIPH_RST) == RCC_PeriphRst_SPI1) || \
349  ((PERIPH_RST) == RCC_PeriphRst_SPI2) || \
350  ((PERIPH_RST) == RCC_PeriphRst_SPI3) || \
351  ((PERIPH_RST) == RCC_PeriphRst_ETH) || \
352  ((PERIPH_RST) == RCC_PeriphRst_QEP0) || \
353  ((PERIPH_RST) == RCC_PeriphRst_QEP1) || \
354  ((PERIPH_RST) == RCC_PeriphRst_PWM0) || \
355  ((PERIPH_RST) == RCC_PeriphRst_PWM1) || \
356  ((PERIPH_RST) == RCC_PeriphRst_PWM2) || \
357  ((PERIPH_RST) == RCC_PeriphRst_PWM3) || \
358  ((PERIPH_RST) == RCC_PeriphRst_PWM4) || \
359  ((PERIPH_RST) == RCC_PeriphRst_PWM5) || \
360  ((PERIPH_RST) == RCC_PeriphRst_PWM6) || \
361  ((PERIPH_RST) == RCC_PeriphRst_PWM7) || \
362  ((PERIPH_RST) == RCC_PeriphRst_PWM8) || \
363  ((PERIPH_RST) == RCC_PeriphRst_CAP0) || \
364  ((PERIPH_RST) == RCC_PeriphRst_CAP1) || \
365  ((PERIPH_RST) == RCC_PeriphRst_CAP2) || \
366  ((PERIPH_RST) == RCC_PeriphRst_CAP3) || \
367  ((PERIPH_RST) == RCC_PeriphRst_CAP4) || \
368  ((PERIPH_RST) == RCC_PeriphRst_CAP5) || \
369  ((PERIPH_RST) == RCC_PeriphRst_CMP))
370 
376 typedef struct
377 {
378  uint32_t RCC_PLLDiv;
384  uint32_t RCC_PLLNR;
386  uint32_t RCC_PLLNF;
389 
394 #define IS_RCC_PLLDIV(PLLDIV) (((PLLDIV) & ((uint32_t)0xFFFFFF00)) == ((uint32_t)0x00))
395 
400 #define IS_RCC_PLL_NR(PLL_NR) (((PLL_NR) <= ((uint32_t)33)) && ((PLL_NR) >= ((uint32_t)2)))
401 
406 #define IS_RCC_PLL_NF(PLL_NF) (((PLL_NF) <= ((uint32_t)513)) && ((PLL_NF) >= ((uint32_t)2)))
407 
412 #define IS_RCC_CLK_DIV(CLK_DIV) ((CLK_DIV) < ((uint32_t)64))
413 
418  #define IS_RCC_SYS_FREQ(SYS_FREQ) (((SYS_FREQ) < ((uint32_t)200000000)) && ((SYS_FREQ) >= ((uint32_t)1000000)))
419 
430 
435 OperationStatus RCC_PLLAutoConfig(RCC_PLLRef_TypeDef RCC_PLLRef, uint32_t SysFreq);
436 void RCC_PLLInit(RCC_PLLInit_TypeDef* RCC_PLLInit_Struct);
437 void RCC_PLLDeInit();
438 void RCC_PLLStructInit(RCC_PLLInit_TypeDef* RCC_PLLInit_Struct);
440 
449 void RCC_PeriphClkCmd(RCC_PeriphClk_TypeDef RCC_PeriphClk, FunctionalState State);
452 
457 void RCC_USBClkConfig(RCC_USBClk_TypeDef RCC_USBClk, RCC_USBFreq_TypeDef RCC_USBFreq);
458 void RCC_USBClkCmd(FunctionalState State);
459 
468 void RCC_UARTClkSel(NT_UART_TypeDef* UARTx, RCC_UARTClk_TypeDef RCC_UARTClk);
469 void RCC_UARTClkDivConfig(NT_UART_TypeDef* UARTx, uint32_t DivVal, FunctionalState DivState);
470 void RCC_UARTClkCmd(NT_UART_TypeDef* UARTx, FunctionalState State);
471 
480 void RCC_SPIClkSel(NT_SPI_TypeDef* SPIx, RCC_SPIClk_TypeDef RCC_SPIClk);
481 void RCC_SPIClkDivConfig(NT_SPI_TypeDef* SPIx, uint32_t DivVal, FunctionalState DivState);
482 void RCC_SPIClkCmd(NT_SPI_TypeDef* SPIx, FunctionalState State);
483 
492 void RCC_ADCClkDivConfig(RCC_ADCClk_TypeDef RCC_ADCClk, uint32_t DivVal, FunctionalState DivState);
493 void RCC_ADCClkCmd(RCC_ADCClk_TypeDef RCC_ADCClk, FunctionalState State);
494 
507 void RCC_PeriphRstCmd(RCC_PeriphRst_TypeDef RCC_PeriphRst, FunctionalState State);
508 
513 #ifdef __cplusplus
514 }
515 #endif
516 
517 #endif /* __NIIETCM4_RCC_H */
518 
531 /******************* (C) COPYRIGHT 2015 NIIET *****END OF FILE****/
RCC_UARTClk_TypeDef
Выбор источника тактирования для UART.
Definition: niietcm4_rcc.h:108
void RCC_SPIClkCmd(NT_SPI_TypeDef *SPIx, FunctionalState State)
Включение тактирования SPI.
Definition: niietcm4_rcc.c:648
RCC_PLLRef_TypeDef
Выбор источника опорного сигнала PLL.
Definition: niietcm4_rcc.h:67
RCC_ADCClk_TypeDef
Выбор модуля ADC для настройки его тактового сигнала.
Definition: niietcm4_rcc.h:184
void RCC_PeriphClkCmd(RCC_PeriphClk_TypeDef RCC_PeriphClk, FunctionalState State)
Включение тактирования выбранного блока периферии.
Definition: niietcm4_rcc.c:342
FunctionalState
Описывает логическое состояние периферии. Используется для операций включения/выключения периферийных...
Definition: niietcm4.h:157
void RCC_USBClkConfig(RCC_USBClk_TypeDef RCC_USBClk, RCC_USBFreq_TypeDef RCC_USBFreq)
Настройка источника тактового сигнала для USB.
Definition: niietcm4_rcc.c:408
void RCC_UARTClkSel(NT_UART_TypeDef *UARTx, RCC_UARTClk_TypeDef RCC_UARTClk)
Настройка источника тактового сигнала для выбранного UART.
Definition: niietcm4_rcc.c:448
void RCC_SysClkDiv2Out(FunctionalState State)
Включение генерации тактового сигнала с частой равной половине системной на выводе H[0]...
Definition: niietcm4_rcc.c:106
void RCC_USBClkCmd(FunctionalState State)
Включение тактирования USB.
Definition: niietcm4_rcc.c:425
Структура инициализации PLL.
Definition: niietcm4_rcc.h:376
RCC_USBClk_TypeDef
Выбор источника тактирования для USB.
Definition: niietcm4_rcc.h:150
void RCC_ADCClkDivConfig(RCC_ADCClk_TypeDef RCC_ADCClk, uint32_t DivVal, FunctionalState DivState)
Настройка делителя тактового сигнала для выбранного ADC.
Definition: niietcm4_rcc.c:695
RCC_PLLNO_TypeDef
Выходной делитель NO.
Definition: niietcm4_rcc.h:89
void RCC_UARTClkDivConfig(NT_UART_TypeDef *UARTx, uint32_t DivVal, FunctionalState DivState)
Настройка делителя тактового сигнала для выбранного UART.
Definition: niietcm4_rcc.c:488
void RCC_PeriphRstCmd(RCC_PeriphRst_TypeDef RCC_PeriphRst, FunctionalState State)
Вывод из состояния сброса периферийных блоков.
Definition: niietcm4_rcc.c:869
void RCC_SPIClkSel(NT_SPI_TypeDef *SPIx, RCC_SPIClk_TypeDef RCC_SPIClk)
Настройка источника тактового сигнала для выбранного SPI.
Definition: niietcm4_rcc.c:569
RCC_SPIClk_TypeDef
Выбор источника тактирования для SPI.
Definition: niietcm4_rcc.h:129
void RCC_UARTClkCmd(NT_UART_TypeDef *UARTx, FunctionalState State)
Включение тактирования UART.
Definition: niietcm4_rcc.c:526
void RCC_PLLDeInit()
Устанавливает все регистры PLL значениями по умолчанию.
Definition: niietcm4_rcc.c:298
void RCC_ADCClkCmd(RCC_ADCClk_TypeDef RCC_ADCClk, FunctionalState State)
Включение тактирования ADC.
Definition: niietcm4_rcc.c:779
void RCC_PLLPowerDownCmd(FunctionalState State)
Управление режимом PowerDown PLL.
Definition: niietcm4_rcc.c:313
RCC_PLLNO_TypeDef RCC_PLLNO
Definition: niietcm4_rcc.h:382
OperationStatus RCC_PLLAutoConfig(RCC_PLLRef_TypeDef RCC_PLLRef, uint32_t SysFreq)
Автоматическая конфигурация PLL для получения желаемой системной частоты.
Definition: niietcm4_rcc.c:142
OperationStatus
Описывает коды возврата для функций при выполнении какой-либо операции.
Definition: niietcm4.h:173
RCC_USBFreq_TypeDef
Выбор фиксированной частоты на входе CLK_USB.
Definition: niietcm4_rcc.h:167
RCC_PLLRef_TypeDef RCC_PLLRef
Definition: niietcm4_rcc.h:380
RCC_SysClk_TypeDef RCC_SysClkStatus()
Текущий источник системного тактового сигнала.
Definition: niietcm4_rcc.c:394
void RCC_PLLInit(RCC_PLLInit_TypeDef *RCC_PLLInit_Struct)
Инициализирует PLL согласно параметрам структуры RCC_PLLInit_Struct.
Definition: niietcm4_rcc.c:262
OperationStatus RCC_SysClkSel(RCC_SysClk_TypeDef RCC_SysClk)
Выбор источника для системного тактового сигнала.
Definition: niietcm4_rcc.c:365
Это главный заголовочный файл драйвера, обычно включаемый в main.c.
RCC_PeriphRst_TypeDef
Управление сбросом периферийных блоков
Definition: niietcm4_rcc.h:294
RCC_PeriphClk_TypeDef
Управление тактированием периферийных блоков
Definition: niietcm4_rcc.h:250
RCC_SysClk_TypeDef
Выбор источника системной частоты.
Definition: niietcm4_rcc.h:221
void RCC_PLLStructInit(RCC_PLLInit_TypeDef *RCC_PLLInit_Struct)
Заполнение каждого члена структуры RCC_PLLInit_Struct значениями по умолчанию.
Definition: niietcm4_rcc.c:284
void RCC_SPIClkDivConfig(NT_SPI_TypeDef *SPIx, uint32_t DivVal, FunctionalState DivState)
Настройка делителя тактового сигнала для выбранного SPI.
Definition: niietcm4_rcc.c:610