完整的程序代码
#include "stm32f10x.h"
ErrorStatus HSEStartUpStatus;
void SetSysClockTo72(void);     //声明pll时钟设置
void RCC_Configuration(void);   //声明时钟初始化函数
void GPIO_Configuration(void);   //声明io口初始化函数
void delay(int);     //声明延时函数
GPIO_InitTypeDef GPIO_InitStructure;  //声明gpio的结构
int main(void)
{
 RCC_Configuration();   //初始化时钟
 GPIO_Configuration();   //初始化io口
 
  while (1)
  {
   
  GPIO_WriteBit(GPIOA,GPIO_Pin_1,Bit_SET);   //置位第一个灯
  delay(20);
  GPIO_WriteBit(GPIOA,GPIO_Pin_1,Bit_RESET);    //复位第一个灯
  delay(20);
  GPIO_WriteBit(GPIOA,GPIO_Pin_4,Bit_SET);
  delay(20);
  GPIO_WriteBit(GPIOA,GPIO_Pin_4,Bit_RESET);
  delay(20);
  GPIO_WriteBit(GPIOB,GPIO_Pin_0,Bit_SET);
  delay(20);
  GPIO_WriteBit(GPIOB,GPIO_Pin_0,Bit_RESET);
  delay(20);
  GPIO_WriteBit(GPIOB,GPIO_Pin_1,Bit_SET);
  delay(20);
  GPIO_WriteBit(GPIOB,GPIO_Pin_1,Bit_RESET);
  delay(20);  
  }
}
void GPIO_Configuration(void)   //io初始化函数
{
 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_4;//选择io口的第一和四位
 GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1 | GPIO_Pin_4; 
 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;    //时钟速度为50M
 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;      //设置为端口输出模式
 GPIO_Init(GPIOA,&GPIO_InitStructure);         //用以上几个参数初始化PA口
// GPIO_Init(GPIOA, &GPIO_InitStructure);
 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;//选择io口的第0和1位
 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;    //时钟速度为50M
 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;      //设置为端口输出模式
 GPIO_Init(GPIOB,&GPIO_InitStructure);         //用以上几个参数初始化PB口
 
 
}
void RCC_Configuration(void)     //时钟初始化函数
{
  SetSysClockTo72();
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);
}
void SetSysClockTo72()            //pll时钟设置函数
{
 RCC_DeInit();     //RCC寄存器初始化
 RCC_HSEConfig(RCC_HSE_ON);    //打开外部时钟
// HSEStartUpStatus=RCC_WaitForHSEStartUp();
    HSEStartUpStatus=RCC_WaitForHSEStartUp();
 if(HSEStartUpStatus==SUCCESS)          //如果外部时钟启动成功就执行初始化
 {
  FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);  //打开flash缓冲区
  FLASH_SetLatency(FLASH_Latency_2);     //配置flash延时周期
  RCC_HCLKConfig(RCC_SYSCLK_Div4);    //配置hclk时钟
  RCC_PCLK2Config(RCC_HCLK_Div1);     //配置pclk2时钟
  RCC_PCLK1Config(RCC_HCLK_Div2);        //配置pclk1时钟 系统时钟2分频为36M
    
  RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);   //配置pll时钟为8*9=72M
  RCC_PLLCmd(ENABLE);   //打开pll时钟
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)   //如果未启动成功则执行这个空循环
  {
  }
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);    //选择pll作为系统时钟
  while(RCC_GetSYSCLKSource()!=0x08)  //等待pll作为系统时钟
  {
  }
 
 }
  else    //如果未启动成功
  {
   while(1)
   {
   }
  }
}
void delay(int k)
{
 int i,j;
 for(i=0;i<50000;i++)
  for(j=0;j<k;j++);
}
  
#ifdef  USE_FULL_ASSERT
void assert_failed(uint8_t* file, uint32_t line)
{
  while (1)
  {
  }
}
#endif