init
This commit is contained in:
78
SYSTEM/stm32f429_Winner/stm32f429_winner.c
Normal file
78
SYSTEM/stm32f429_Winner/stm32f429_winner.c
Normal file
@@ -0,0 +1,78 @@
|
||||
//-----------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
// WinnerI<72><49><EFBFBD><EFBFBD><EFBFBD>峣<EFBFBD>ù<EFBFBD><C3B9>ܶ<EFBFBD><DCB6><EFBFBD>
|
||||
// <20><> <20><>: <20><><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>: 2018-08-04
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 2018-08-04
|
||||
// <20><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>:
|
||||
// <20><>ǰ<EFBFBD>汾: V1.0
|
||||
// <20><>ʷ<EFBFBD>汾:
|
||||
// - V1.0: (2018-08-04)<29>ṩһЩ<D2BB>̼<EFBFBD><CCBC><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD>STM32.
|
||||
// <20><><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD>: <20><><EFBFBD><EFBFBD>STM32F429+CycloneIV<49><56><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD>塢LZE_ST_LINK2
|
||||
// ˵ <20><>:
|
||||
//
|
||||
//-----------------------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// ͷ<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-----------------------------------------------------------------
|
||||
#include "stm32f429_winner.h"
|
||||
//-----------------------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// void SystemClock_Config(u32 plln,u32 pllm,u32 pllp,u32 pllq)
|
||||
//-----------------------------------------------------------------
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ϵͳʱ<CDB3>ӳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||
// <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>: u32 plln: <20><>PLL<4C><4C>Ƶϵ<C6B5><CFB5>(PLL<4C><4C>Ƶ),ȡֵ<C8A1><D6B5>Χ:64~432.
|
||||
// u32 pllm: <20><>PLL<4C><4C><EFBFBD><EFBFBD>ƵPLL<4C><4C>Ƶϵ<C6B5><CFB5>(PLL֮ǰ<D6AE>ķ<EFBFBD>Ƶ),ȡֵ<C8A1><D6B5>Χ:2~63.
|
||||
// u32 pllp: ϵͳʱ<CDB3>ӵ<EFBFBD><D3B5><EFBFBD>PLL<4C><4C>Ƶϵ<C6B5><CFB5>(PLL֮<4C><D6AE><EFBFBD>ķ<EFBFBD>Ƶ),ȡֵ<C8A1><D6B5>Χ:2,4,6,8.(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34>ֵ!)
|
||||
// u32 pllq: USB/SDIO/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>PLL<4C><4C>Ƶϵ<C6B5><CFB5>(PLL֮<4C><D6AE><EFBFBD>ķ<EFBFBD>Ƶ),ȡֵ<C8A1><D6B5>Χ:2~15.
|
||||
// <20><> <20><> ֵ: 0,<2C>ɹ<EFBFBD>;1,ʧ<><CAA7>
|
||||
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>Ϊ25M<35><4D>ʱ<EFBFBD><CAB1>,<2C>Ƽ<EFBFBD>ֵ:plln=360,pllm=25,pllp=2,pllq=8.
|
||||
// Fvco:VCOƵ<4F><C6B5> Fvco=Fs*(plln/pllm) Fvco=25*(360/25)=360Mhz
|
||||
// SYSCLK:ϵͳʱ<CDB3><CAB1>Ƶ<EFBFBD><C6B5> SYSCLK=Fvco/pllp=Fs*(plln/(pllm*pllp)) SYSCLK=360/2=180Mhz
|
||||
// Fusb:USB,SDIO,RNG<4E>ȵ<EFBFBD>ʱ<EFBFBD><CAB1>Ƶ<EFBFBD><C6B5> Fusb=Fvco/pllq=Fs*(plln/(pllm*pllq)) Fusb=360/8=45Mhz
|
||||
//-----------------------------------------------------------------
|
||||
void SystemClock_Config(u32 plln,u32 pllm,u32 pllp,u32 pllq)
|
||||
{
|
||||
HAL_StatusTypeDef ret = HAL_OK;
|
||||
RCC_OscInitTypeDef RCC_OscInitStructure;
|
||||
RCC_ClkInitTypeDef RCC_ClkInitStructure;
|
||||
|
||||
__HAL_RCC_PWR_CLK_ENABLE(); //ʹ<><CAB9>PWRʱ<52><CAB1>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>
|
||||
// ʱʹ<CAB1><CAB9><EFBFBD><EFBFBD><EFBFBD>빦<EFBFBD><EBB9A6>ʵ<EFBFBD><CAB5>ƽ<EFBFBD>⣬<EFBFBD>˹<EFBFBD><CBB9><EFBFBD>ֻ<EFBFBD><D6BB>STM32F42xx<78><78>STM32F43xx<78><78><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>
|
||||
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);//<2F><><EFBFBD>õ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>1
|
||||
|
||||
RCC_OscInitStructure.OscillatorType=RCC_OSCILLATORTYPE_HSE; // ʱ<><CAB1>ԴΪHSE
|
||||
RCC_OscInitStructure.HSEState=RCC_HSE_ON; // <20><><EFBFBD><EFBFBD>HSE
|
||||
RCC_OscInitStructure.PLL.PLLState=RCC_PLL_ON; // <20><><EFBFBD><EFBFBD>PLL
|
||||
RCC_OscInitStructure.PLL.PLLSource=RCC_PLLSOURCE_HSE; // PLLʱ<4C><CAB1>Դѡ<D4B4><D1A1>HSE
|
||||
RCC_OscInitStructure.PLL.PLLM=pllm; // <20><>PLL<4C><4C><EFBFBD><EFBFBD>ƵPLL<4C><4C>Ƶϵ<C6B5><CFB5>(PLL֮ǰ<D6AE>ķ<EFBFBD>Ƶ),ȡֵ<C8A1><D6B5>Χ:2~63.
|
||||
RCC_OscInitStructure.PLL.PLLN=plln; // <20><>PLL<4C><4C>Ƶϵ<C6B5><CFB5>(PLL<4C><4C>Ƶ),ȡֵ<C8A1><D6B5>Χ:64~432.
|
||||
RCC_OscInitStructure.PLL.PLLP=pllp; // ϵͳʱ<CDB3>ӵ<EFBFBD><D3B5><EFBFBD>PLL<4C><4C>Ƶϵ<C6B5><CFB5>(PLL֮<4C><D6AE><EFBFBD>ķ<EFBFBD>Ƶ),ȡֵ<C8A1><D6B5>Χ:2,4,6,8.(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34>ֵ!)
|
||||
RCC_OscInitStructure.PLL.PLLQ=pllq; // USB/SDIO/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>PLL<4C><4C>Ƶϵ<C6B5><CFB5>(PLL֮<4C><D6AE><EFBFBD>ķ<EFBFBD>Ƶ),ȡֵ<C8A1><D6B5>Χ:2~15.
|
||||
ret=HAL_RCC_OscConfig(&RCC_OscInitStructure); // <20><>ʼ<EFBFBD><CABC>
|
||||
|
||||
if(ret!=HAL_OK) while(1);
|
||||
|
||||
ret=HAL_PWREx_EnableOverDrive(); // <20><><EFBFBD><EFBFBD>Over-Driver<65><72><EFBFBD><EFBFBD>
|
||||
if(ret!=HAL_OK) while(1);
|
||||
|
||||
// ѡ<><D1A1>PLLCLK<4C><4B>Ϊϵͳʱ<CDB3><CAB1>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HCLK,PCLK1<4B><31>PCLK2
|
||||
RCC_ClkInitStructure.ClockType=(RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2);
|
||||
RCC_ClkInitStructure.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK; // <20><><EFBFBD><EFBFBD>ϵͳʱ<CDB3><CAB1>ʱ<EFBFBD><CAB1>ԴΪPLL
|
||||
RCC_ClkInitStructure.AHBCLKDivider=RCC_SYSCLK_DIV1; // AHB <20><>Ƶϵ<C6B5><CFB5>Ϊ1<CEAA><31>AHB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ƶ<EFBFBD><C6B5>Ϊ180MHz
|
||||
RCC_ClkInitStructure.APB1CLKDivider=RCC_HCLK_DIV4; // APB1<42><31>Ƶϵ<C6B5><CFB5>Ϊ4<CEAA><34>APB1<42><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ƶ<EFBFBD><C6B5>Ϊ45MHz
|
||||
RCC_ClkInitStructure.APB2CLKDivider=RCC_HCLK_DIV2; // APB2<42><32>Ƶϵ<C6B5><CFB5>Ϊ2<CEAA><32>APB2<42><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ƶ<EFBFBD><C6B5>Ϊ90MHz
|
||||
ret=HAL_RCC_ClockConfig(&RCC_ClkInitStructure,FLASH_LATENCY_5);// ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD>FLASH<53><48>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ5WS<57><53>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>6<EFBFBD><36>CPU<50><55><EFBFBD>ڡ<EFBFBD>
|
||||
|
||||
if(ret!=HAL_OK)
|
||||
while(1);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// End Of File
|
||||
//-----------------------------------------------------------------
|
||||
132
SYSTEM/stm32f429_Winner/stm32f429_winner.h
Normal file
132
SYSTEM/stm32f429_Winner/stm32f429_winner.h
Normal file
@@ -0,0 +1,132 @@
|
||||
//-----------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD><EFBFBD>GPIO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>
|
||||
// <20><> <20><>: <20><><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>: 2018-08-04
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 2018-08-04
|
||||
// <20><>ǰ<EFBFBD>汾: V1.0
|
||||
// <20><>ʷ<EFBFBD>汾:
|
||||
// - V1.0: (2018-08-04)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6>塢GPIO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳʱ<CDB3><CAB1><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
|
||||
// <20><><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD>: <20><><EFBFBD><EFBFBD>STM32F429+CycloneIV<49><56><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD>塢LZE_ST_LINK2
|
||||
// ˵ <20><>:
|
||||
//
|
||||
//-----------------------------------------------------------------
|
||||
#ifndef _WINNER_H
|
||||
#define _WINNER_H
|
||||
#include "stm32f4xx.h"
|
||||
//-----------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD>һЩ<D2BB><D0A9><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ̹ؼ<CCB9><D8BC><EFBFBD>
|
||||
//-----------------------------------------------------------------
|
||||
typedef int32_t s32;
|
||||
typedef int16_t s16;
|
||||
typedef int8_t s8;
|
||||
|
||||
typedef const int32_t sc32;
|
||||
typedef const int16_t sc16;
|
||||
typedef const int8_t sc8;
|
||||
|
||||
typedef __IO int32_t vs32;
|
||||
typedef __IO int16_t vs16;
|
||||
typedef __IO int8_t vs8;
|
||||
|
||||
typedef __I int32_t vsc32;
|
||||
typedef __I int16_t vsc16;
|
||||
typedef __I int8_t vsc8;
|
||||
|
||||
typedef uint32_t u32;
|
||||
typedef uint16_t u16;
|
||||
typedef uint8_t u8;
|
||||
|
||||
typedef const uint32_t uc32;
|
||||
typedef const uint16_t uc16;
|
||||
typedef const uint8_t uc8;
|
||||
|
||||
typedef __IO uint32_t vu32;
|
||||
typedef __IO uint16_t vu16;
|
||||
typedef __IO uint8_t vu8;
|
||||
|
||||
typedef __I uint32_t vuc32;
|
||||
typedef __I uint16_t vuc16;
|
||||
typedef __I uint8_t vuc8;
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// λ<><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ʵ<><CAB5>GPIO<49><4F><EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
|
||||
//-----------------------------------------------------------------
|
||||
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
|
||||
#define MEM_ADDR(addr) *((volatile unsigned long *)(addr))
|
||||
#define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))
|
||||
|
||||
#define GPIOA_ODR_Addr (GPIOA_BASE+20) // 0x40020014
|
||||
#define GPIOB_ODR_Addr (GPIOB_BASE+20) // 0x40020414
|
||||
#define GPIOC_ODR_Addr (GPIOC_BASE+20) // 0x40020814
|
||||
#define GPIOD_ODR_Addr (GPIOD_BASE+20) // 0x40020C14
|
||||
#define GPIOE_ODR_Addr (GPIOE_BASE+20) // 0x40021014
|
||||
#define GPIOF_ODR_Addr (GPIOF_BASE+20) // 0x40021414
|
||||
#define GPIOG_ODR_Addr (GPIOG_BASE+20) // 0x40021814
|
||||
#define GPIOH_ODR_Addr (GPIOH_BASE+20) // 0x40021C14
|
||||
#define GPIOI_ODR_Addr (GPIOI_BASE+20) // 0x40022014
|
||||
#define GPIOJ_ODR_ADDr (GPIOJ_BASE+20) // 0x40022414
|
||||
#define GPIOK_ODR_ADDr (GPIOK_BASE+20) // 0x40022814
|
||||
|
||||
#define GPIOA_IDR_Addr (GPIOA_BASE+16) // 0x40020010
|
||||
#define GPIOB_IDR_Addr (GPIOB_BASE+16) // 0x40020410
|
||||
#define GPIOC_IDR_Addr (GPIOC_BASE+16) // 0x40020810
|
||||
#define GPIOD_IDR_Addr (GPIOD_BASE+16) // 0x40020C10
|
||||
#define GPIOE_IDR_Addr (GPIOE_BASE+16) // 0x40021010
|
||||
#define GPIOF_IDR_Addr (GPIOF_BASE+16) // 0x40021410
|
||||
#define GPIOG_IDR_Addr (GPIOG_BASE+16) // 0x40021810
|
||||
#define GPIOH_IDR_Addr (GPIOH_BASE+16) // 0x40021C10
|
||||
#define GPIOI_IDR_Addr (GPIOI_BASE+16) // 0x40022010
|
||||
#define GPIOJ_IDR_Addr (GPIOJ_BASE+16) // 0x40022410
|
||||
#define GPIOK_IDR_Addr (GPIOK_BASE+16) // 0x40022810
|
||||
|
||||
#define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
#define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
|
||||
#define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
#define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
|
||||
#define PCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
#define PCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
|
||||
#define PDout(n) BIT_ADDR(GPIOD_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
#define PDin(n) BIT_ADDR(GPIOD_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
|
||||
#define PEout(n) BIT_ADDR(GPIOE_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
#define PEin(n) BIT_ADDR(GPIOE_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
|
||||
#define PFout(n) BIT_ADDR(GPIOF_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
#define PFin(n) BIT_ADDR(GPIOF_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
|
||||
#define PGout(n) BIT_ADDR(GPIOG_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
#define PGin(n) BIT_ADDR(GPIOG_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
|
||||
#define PHout(n) BIT_ADDR(GPIOH_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
#define PHin(n) BIT_ADDR(GPIOH_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
|
||||
#define PIout(n) BIT_ADDR(GPIOI_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
#define PIin(n) BIT_ADDR(GPIOI_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
|
||||
#define PJout(n) BIT_ADDR(GPIOJ_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
#define PJin(n) BIT_ADDR(GPIOJ_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
|
||||
#define PKout(n) BIT_ADDR(GPIOK_ODR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
#define PKin(n) BIT_ADDR(GPIOK_IDR_Addr,n) // <20><><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// λ<><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ʵ<><CAB5>GPIO<49><4F><EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
|
||||
//-----------------------------------------------------------------
|
||||
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// <20>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-----------------------------------------------------------------
|
||||
extern void SystemClock_Config(u32 plln,u32 pllm,u32 pllp,u32 pllq);// ʱ<><CAB1>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// End Of File
|
||||
//-----------------------------------------------------------------
|
||||
Reference in New Issue
Block a user