时钟配置函数:
时钟初始化配置函数
void SystemInit()
时钟配置函数:
外设时钟使能函数://三条总线
void RCC_AHBPeriphClockCmd()
void RCC_APB2PeriphClockCmd()//使能GPIO
void RCC_APB1PeriphClockCmd()
时钟源使能函数:
void RCC_HSICmd(FunctionalState NewState);
void RCC_LSICmd(FunctionalState NewState);
void RCC_PLLCmd(FunctionalState NewState);
void RCC_RTCCLKCmd(FunctionalState NewState);
时钟源和倍频因子配置函数:
void RCC_HSEConfig(uint32_t RCC_HSE);
void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource);
void RCC_HCLKConfig(uint32_t RCC_SYSCLK);
void RCC_PCLK1Config(uint32_t RCC_HCLK);
void RCC_PCLK2Config(uint32_t RCC_HCLK);
void RCC_ITConfig(uint8_t RCC_IT, FunctionalState NewState);
外设时钟复位函数:
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
自定义系统时钟:
#include "stm32f10x.h"
#include "led.h"
void RCC_HSE_Config(u32 div,u32 pllm) //???????(??????)
{
RCC_DeInit(); //???RCC?????????
RCC_HSEConfig(RCC_HSE_ON);//????????(HSE)
if(RCC_WaitForHSEStartUp()==SUCCESS) //??HSE??
{
RCC_HCLKConfig(RCC_SYSCLK_Div1);//??AHB??(HCLK)
RCC_PCLK1Config(RCC_HCLK_Div2);//????AHB??(PCLK1)
RCC_PCLK2Config(RCC_HCLK_Div1);//????AHB??(PCLK2)
RCC_PLLConfig(div,pllm);//??PLL????????
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??????
}
}
void delay(u32 ms)//yan shi
{
while(ms--);
}
int main()
{
RCC_HSE_Config(RCC_PLLSource_HSE_Div2,RCC_PLLMul_9);
LED_Init() ;
while(1)
{
GPIO_ResetBits(LED1_PORT, LED1_PIN);//dian liang
delay(60000);
GPIO_SetBits(LED1_PORT,LED1_PIN);//dian liang
delay(60000);
}
}