Electricity/FWLIB/include/ENS1_CLOCK.h

93 lines
2.9 KiB
C
Raw Normal View History

/*
*Copyright (C),2023 , NANOCHAP
*File name: ENS1_CLOCK.H
*Author:
*Version: V1.0
*Date: 2023-11-
*Description:
*Function List:
1 uint32_t ClockInitSet(Clock_ConfigStructure* CLOCKCONFIG);
2 void ClockInit(void);
3 uint8_t PCLK_Enable(uint8_t APB_CLKEN_POS);
4 uint8_t PCLK_Disable(uint8_t APB_CLKEN_POS);
History:
1.V1.0
Date:
Author:
Modification: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
#ifndef ENS1_CLOCK_H
#define ENS1_CLOCK_H
#include "my_header.h"
#include "CMSDK_CM0.h"
/*
ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>٣<EFBFBD>LSI RC / LSE OSC<EFBFBD><EFBFBD> --> LFCLK --> RTC / LCD
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> (HSI RC / HSE ) --> SYSCLK --> <EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>AHB Prescaler<EFBFBD><EFBFBD>-----> SYSC / PMU / HCLK /SCLK /DCLK
|
|
|
----><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>APB Prescaler<EFBFBD><EFBFBD> --> PCLK
*/
extern uint32_t APB_Clock_Freq;
//<2F><>Ƶѡ<C6B5><D1A1>
//APB
#define ENS1_APB_PCLK_DIV_1 0x0
#define ENS1_APB_PCLK_DIV_2 0x4
#define ENS1_APB_PCLK_DIV_4 0x5
#define ENS1_APB_PCLK_DIV_8 0x6
#define ENS1_APB_PCLK_DIV_16 0x7
//AHB
#define ENS1_AHB_HCLK_DIV_1 0X0
#define ENS1_AHB_HCLK_DIV_2 0X4
#define ENS1_AHB_HCLK_DIV_4 0X5
#define ENS1_AHB_HCLK_DIV_8 0X6
#define ENS1_AHB_HCLK_DIV_16 0X7
typedef enum{HSI_4MHZ =0 , HSI_8MHZ=1 , HS_16MHZ=2 , HSI_32MHZ=3}HSI_FREQ_SEL;
typedef enum{MCO_HSI=0, MCO_HSE ,MCO_LSI,MCO_LSE}MCU_CLOCK_OUTPUT_SEL; //mcuʱ<75><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
typedef enum{LSI_AS_LFCLK =0, LSE_AS_LFCLK }LFCLK_SWITCH_SEL; //LFCLK<4C><4B><EFBFBD><EFBFBD>Դѡ<D4B4><D1A1>
typedef enum{HSI_SYSCLK = 0 ,HSE_SYSCLK , LFCLK_SYSCLK}SYSTEM_CLOCK_SEL; //ѡ<><D1A1>ϵͳʱ<CDB3><CAB1>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>뿪stopģʽʱ<CABD><CAB1>ϵͳ<CFB5><CDB3>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ00
/*--------ʱ<>ӳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>----------*/
typedef struct ClockConfig
{
MCU_CLOCK_OUTPUT_SEL MCO_SEL; //<2F><><EFBFBD><EFBFBD>
HSI_FREQ_SEL HSI_FREQ; //<2F>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>RCƵ<43><C6B5>ѡ<EFBFBD><D1A1>
uint8_t HSE_OSC_FREQ; //<2F>ⲿ<EFBFBD><E2B2BF><EFBFBD>پ<EFBFBD><D9BE><EFBFBD>ʵ<EFBFBD><CAB5>Ƶ<EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>λMHZ<48><5A>
uint16_t LSE_OSC_FREQ; //<2F>ⲿ<EFBFBD><E2B2BF><EFBFBD>پ<EFBFBD><D9BE><EFBFBD>ʵ<EFBFBD><CAB5>Ƶ<EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>λ1<CEBB><31>
SYSTEM_CLOCK_SEL SYSCLK_SEL; //ϵͳʱ<CDB3><CAB1>Դ<EFBFBD><D4B4>ѡ<EFBFBD><D1A1>
uint8_t ENS1_APB_PCLK_DIV_x; //PCLK<4C><4B>Ƶѡ<C6B5><D1A1>
uint8_t ENS1_AHB_PCLK_DIV_x; //HCLK<4C><4B>Ƶѡ<C6B5><D1A1>
LFCLK_SWITCH_SEL LFCLK_SW_SEL; //ѡ<><D1A1>lfclk<6C><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ,ΪRTC<54><43>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}Clock_ConfigStructure;
extern uint32_t ClockInitSet(Clock_ConfigStructure* CLOCKCONFIG);
extern void ClockInit(void);
//PCLK <20><>ʱ<EFBFBD><CAB1>λ
#define UART0_PCLK_EN 0
#define UART1_PCLK_EN 1
#define SPI0_PCLK_EN 2
#define SPI1_PCLK_EN 3
#define I2C0_PCLK_EN 4
#define I2C1_PCLK_EN 5
#define WDT_PCLK_EN 6
#define PWM_PCLK_EN 7
#define TIMER0_PCLK_EN 8
#define TIMER1_PCLK_EN 9
#define DUAL_TIMER_PCLK_EN 10
#define LCD_PCLK_EN 11
#define WAVE_GEN_PCLK_EN 12
#define ADC_PCLK_EN 13
#define ANALOG_PCLK_EN 14
#define RTC_PCLK_EN 15
extern uint8_t PCLK_Enable(uint8_t APB_CLKEN_POS);
extern uint8_t PCLK_Disable(uint8_t APB_CLKEN_POS);
void HSE_ClockInit(uint32_t Clock_Freq);
#endif