- UID
- 1029342
- 性别
- 男
|
void RCC_Configuration(void)
{
RCC_DeInit(); //将外设 RCC寄存器重设为缺省值
RCC_HSEConfig(RCC_HSE_ON); //设置外部高速晶振(HSE)
HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等待 HSE 起振,该函数将等待直到 HSE 就绪,或者在超时的情况下退出
if(HSEStartUpStatus == SUCCESS) //如果 HSE 就绪,则开始设置
{
RCC_HCLKConfig(RCC_SYSCLK_Div1); //设置 AHB 增强型高速总线的时钟(HCLK)
RCC_PCLK2Config(RCC_HCLK_Div1); //设置高速 AHB 时钟(PCLK2)
RCC_PCLK1Config(RCC_HCLK_Div2); //设置高速 AHB 时钟(PCLK1)
FLASH_SetLatency(FLASH_Latency_2); //设置代码延时值——两个延时周期
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //使能预先取指令缓存
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); //设置 PLL 时钟源及倍频系数,外部HSE默认8MHz,倍频系数为9,则PLL时钟为72MHz
RCC_PLLCmd(ENABLE); //使能PLL
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) //如果检查指定的 RCC 标志位设置——PLL未就绪,则循环等待
{
}
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //设置PLL时钟为系统时钟
while(RCC_GetSYSCLKSource()!= 0x08) //如果用作系统的时钟源不是PLL,则循环等待。
{
}
}
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);//使能GPIOA GPIOB TIM1 外设时钟
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11; //选中引脚8、9、10、11
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置选中引脚的最高输出速率为50MHz
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //设置选中管脚的工作状态为复用推挽输出。
GPIO_Init(GPIOA,&GPIO_InitStructure); //根据 GPIO_InitStruct中指定的参数初始化外设 GPIOA 寄存器
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; // GPIO_InitStruct中指定的参数未变,所以只改变需要改变的参数
GPIO_Init(GPIOB,&GPIO_InitStructure); //根据 GPIO_InitStruct中指定的参数初始化外设 GPIOB 寄存器
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //设置选中管脚的工作状态为输入浮空
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void NVIC_Configuration(void)
{
//NVIC_InitTypeDef NVIC_InitStructure;
#ifdef VECT_TAB_RAM
NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);
#else
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);
#endif
}
#ifdef DEBUG
void assert_failed(u8 *file,u32 line) //返回出错时的行列信息
{
}
#endif |
|