From 4a13529748c983ff0d5627a28365ad7737141016 Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期五, 18 二月 2022 09:31:49 +0800
Subject: [PATCH] V1.62

---
 源码/核心板/Src/OnChipDevices/Rcc_Nvic_Systick.c |  194 ++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 154 insertions(+), 40 deletions(-)

diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Rcc_Nvic_Systick.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Rcc_Nvic_Systick.c"
index 6e55e6b..15cffba 100644
--- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Rcc_Nvic_Systick.c"
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Rcc_Nvic_Systick.c"
@@ -1,46 +1,126 @@
 #include "Rcc_Nvic_Systick.h"
 
-void Rcc_Init(void)
+//void Rcc_Init(void)
+//{
+//	//----------使用内部RC晶振HSI 64MHz----------- 
+//	RCC_DeInit(); 										//将外设RCC寄存器重设为缺省值 
+//	RCC_HSICmd(ENABLE); 								//内部时钟使能
+//	while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET);	//等待HSI就绪 
+//	
+//	FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);	//选择FLASH预取指缓存的模,预取指缓存使能 
+//	FLASH_SetLatency(FLASH_Latency_2);   				//设置FLASH存储器延时时钟周期数FLASH_Latency_2  2延时周期   
+//	
+//	
+//	RCC_HCLKConfig(RCC_SYSCLK_Div1);   					//设置AHB时钟(HCLK) RCC_SYSCLK_Div1——AHB时钟 = 系统时钟 
+//	RCC_PCLK2Config(RCC_HCLK_Div1);   					//设置高速AHB时钟(PCLK2)RCC_HCLK_Div1——APB2时钟 = HCLK     
+//	RCC_PCLK1Config(RCC_HCLK_Div2); 					//设置低速AHB时钟(PCLK1)RCC_HCLK_Div2——APB1时钟 = HCLK/2      
+//	RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16);	//设置PLL时钟源及倍频系数,频率为8/2*16=64Mhz    
+//	RCC_PLLCmd(ENABLE);   								//使能PLL 
+//	
+//	while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //检查指定的RCC标志位(PLL准备好标志)设置与否    
+//	RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  		//设置系统时钟(SYSCLK) 
+//	while(RCC_GetSYSCLKSource() != 0x08);     			//0x08:PLL作为系统时钟   
+
+////	//----------使用外部RC晶振 72MHz-----------  
+////    RCC_DeInit();           //初始化为缺省值  
+////    RCC_HSEConfig(RCC_HSE_ON);  //使能外部的高速时钟   
+////    while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET); //等待外部高速时钟使能就绪  
+////      
+////    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);   //Enable Prefetch Buffer  
+////    FLASH_SetLatency(FLASH_Latency_2);      //Flash 2 wait state  
+////      
+////    RCC_HCLKConfig(RCC_SYSCLK_Div1);        //HCLK = SYSCLK  
+////    RCC_PCLK2Config(RCC_HCLK_Div1);         //PCLK2 =  HCLK  
+////    RCC_PCLK1Config(RCC_HCLK_Div2);         //PCLK1 = HCLK/2  
+////    RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); //PLLCLK = 8MHZ * 9 =72MHZ  
+////    RCC_PLLCmd(ENABLE);         //Enable PLLCLK  
+////  
+////    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //Wait till PLLCLK is ready  
+////    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  //Select PLL as system clock  
+////    while(RCC_GetSYSCLKSource()!=0x08);     //Wait till PLL is used as system clock source  
+//		
+//}
+int RCC_Configuration(void)
 {
-	//----------使用内部RC晶振HSI 64MHz----------- 
-	RCC_DeInit(); 										//将外设RCC寄存器重设为缺省值 
-	RCC_HSICmd(ENABLE); 								//内部时钟使能
-	while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET);	//等待HSI就绪 
-	
-	FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);	//选择FLASH预取指缓存的模,预取指缓存使能 
-	FLASH_SetLatency(FLASH_Latency_2);   				//设置FLASH存储器延时时钟周期数FLASH_Latency_2  2延时周期   
-	
-	
-	RCC_HCLKConfig(RCC_SYSCLK_Div1);   					//设置AHB时钟(HCLK) RCC_SYSCLK_Div1——AHB时钟 = 系统时钟 
-	RCC_PCLK2Config(RCC_HCLK_Div1);   					//设置高速AHB时钟(PCLK2)RCC_HCLK_Div1——APB2时钟 = HCLK     
-	RCC_PCLK1Config(RCC_HCLK_Div2); 					//设置低速AHB时钟(PCLK1)RCC_HCLK_Div2——APB1时钟 = HCLK/2      
-	RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16);	//设置PLL时钟源及倍频系数,频率为8/2*16=64Mhz    
-	RCC_PLLCmd(ENABLE);   								//使能PLL 
-	
-	while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //检查指定的RCC标志位(PLL准备好标志)设置与否    
-	RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  		//设置系统时钟(SYSCLK) 
-	while(RCC_GetSYSCLKSource() != 0x08);     			//0x08:PLL作为系统时钟   
+	ErrorStatus HSEStartUpStatus;
+	RCC_ClocksTypeDef RCC_ClockFreq;
 
-//	//----------使用外部RC晶振 72MHz-----------  
-//    RCC_DeInit();           //初始化为缺省值  
-//    RCC_HSEConfig(RCC_HSE_ON);  //使能外部的高速时钟   
-//    while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET); //等待外部高速时钟使能就绪  
-//      
-//    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);   //Enable Prefetch Buffer  
-//    FLASH_SetLatency(FLASH_Latency_2);      //Flash 2 wait state  
-//      
-//    RCC_HCLKConfig(RCC_SYSCLK_Div1);        //HCLK = SYSCLK  
-//    RCC_PCLK2Config(RCC_HCLK_Div1);         //PCLK2 =  HCLK  
-//    RCC_PCLK1Config(RCC_HCLK_Div2);         //PCLK1 = HCLK/2  
-//    RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); //PLLCLK = 8MHZ * 9 =72MHZ  
-//    RCC_PLLCmd(ENABLE);         //Enable PLLCLK  
-//  
-//    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //Wait till PLLCLK is ready  
-//    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  //Select PLL as system clock  
-//    while(RCC_GetSYSCLKSource()!=0x08);     //Wait till PLL is used as system clock source  
-		
+	/* RCC system reset(for debug purpose) */
+	RCC_DeInit();
+
+	/* Enable HSE */
+	RCC_HSEConfig(RCC_HSE_ON);
+
+	/* Wait till HSE is ready */
+	HSEStartUpStatus = RCC_WaitForHSEStartUp();
+
+	if(HSEStartUpStatus != ERROR)
+	{
+		SystemInit();
+		/* Enable Prefetch Buffer */
+		FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
+
+		/****************************************************************/
+		/* HSE= up to 25MHz (on EVB1000 is 12MHz),
+		 * HCLK=72MHz, PCLK2=72MHz, PCLK1=36MHz 						*/
+		/****************************************************************/
+		/* Flash 2 wait state */
+		FLASH_SetLatency(FLASH_Latency_2);
+		/* HCLK = SYSCLK */
+		RCC_HCLKConfig(RCC_SYSCLK_Div1);
+		/* PCLK2 = HCLK */
+		RCC_PCLK2Config(RCC_HCLK_Div1);
+		/* PCLK1 = HCLK/2 */
+		RCC_PCLK1Config(RCC_HCLK_Div2);
+		/*  ADCCLK = PCLK2/4 */
+		RCC_ADCCLKConfig(RCC_PCLK2_Div6);
+	}
+//		/* Configure PLLs *********************************************************/
+//		/* PLL2 configuration: PLL2CLK = (HSE / 4) * 8 = 24 MHz */
+//		RCC_PREDIV2Config(RCC_PREDIV2_Div4);
+//		RCC_PLL2Config(RCC_PLL2Mul_8);
+
+//		/* Enable PLL2 */
+//		RCC_PLL2Cmd(ENABLE);
+
+//		/* Wait till PLL2 is ready */
+//		while (RCC_GetFlagStatus(RCC_FLAG_PLL2RDY) == RESET){}
+
+//		/* PLL1 configuration: PLLCLK = (PLL2 / 3) * 9 = 72 MHz */
+//		RCC_PREDIV1Config(RCC_PREDIV1_Source_PLL2, RCC_PREDIV1_Div3);
+
+//		RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_PLLMul_9);
+
+//		/* Enable PLL */
+//		RCC_PLLCmd(ENABLE);
+
+//		/* Wait till PLL is ready */
+//		while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){}
+
+//		/* Select PLL as system clock source */
+//		RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
+
+//		/* Wait till PLL is used as system clock source */
+//		while (RCC_GetSYSCLKSource() != 0x08){}
+//	}
+
+	RCC_GetClocksFreq(&RCC_ClockFreq);
+
+	/* Enable SPI1 clock */
+	RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
+
+	/* Enable SPI2 clock */
+	RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
+
+	/* Enable GPIOs clocks */
+	RCC_APB2PeriphClockCmd(
+						RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
+						RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |
+						RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO,
+						ENABLE);
+
+	return 0;
 }
-
 void Nvic_Init(void)
 {
 	NVIC_InitTypeDef NVIC_InitStructure;
@@ -53,7 +133,10 @@
     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 
-	
+		NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
+		NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
+		NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
+		NVIC_Init(&NVIC_InitStructure);
 	
 		NVIC_InitStructure.NVIC_IRQChannel = RTCAlarm_IRQn;
     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
@@ -62,7 +145,38 @@
 	
     NVIC_Init(&NVIC_InitStructure);
 }
-
+//?????3?????
+//???????APB1?2?,?APB1?36M
+//arr:??????
+//psc:??????
+//?????????3!
+void TIM3_Int_Init(void)
+{
+    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
+	NVIC_InitTypeDef NVIC_InitStructure;
+ 
+	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //????
+	
+	//???TIM3???
+	TIM_TimeBaseStructure.TIM_Period = 1000-1; //???????????????????????????	
+	TIM_TimeBaseStructure.TIM_Prescaler =72-1; //??????TIMx???????????
+	TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //??????:TDTS = Tck_tim
+	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM??????
+	TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //??????????TIMx???????
+ 
+	TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //?????TIM3??,??????
+ 
+	//?????NVIC??
+	NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3??
+	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //?????0?
+	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  //????3?
+	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ?????
+	NVIC_Init(&NVIC_InitStructure);  //???NVIC???
+ 
+ 
+	TIM_Cmd(TIM3, ENABLE);  //??TIMx					 
+}
+//???3??????
 int Systick_Init(void)
 {
 	int time_retry = 500;

--
Gitblit v1.9.3