请问f1的程序怎么写

项目一、花样流水灯的制作1
利用STM32单片机的8个IO口实现花样流水灯。上电后,间隔点亮每四个LED灯,如图所示:灭开灭开——开灭开灭间隔时间为0.5s.
项目二、花样流水灯的制作2
利用STM32单片机的8个IO口实现花样流水灯。上电后,循环点亮每一个LED灯,间隔时间为0.5s。当k1按下时,控制流水灯在全亮和全熄灭之间循环,间隔时间为0.5s;当k2按下时,控制一个LED灯闪烁,间隔时间为0.5s;当任何按键松开时,恢复循环初始状态。
项目三、LED数码管定时器的制作
利用2位LED数码管制作一个1分钟定时器,最小计时单位为“1秒”,计时显示范围为:0~59。上电时数码管显示“00”,按键K1按下时,定时器开始计时并在数码管上显示;第一次按键K2时,定时器暂停计时,第二次按下K2时,清零。

#include "stm32f10x.h"
#include "led.h"
#include "key.h"
u8 num;
int main(void)
{    
      while(1)
      {    
        init();
        initconfig();
        num=ReadKeyDown();
        switch(num)
        {
        case 0: 
            f0(); break;
        case 1: 
            f1(); break;
        case 2: 
            f2(); break;
        case 3: 
            f3(); break;
        case 4:
            f4(); break;
        }
        Delay(delay);
      } 
}
#include "stm32f10x.h"
#include "key.h"
void initconfig()
{
     GPIO_InitTypeDef GPIO_InitStructure;

  /* Configure KEY1 Button */
  RCC_APB2PeriphClockCmd(RCC_KEY1, ENABLE);

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_InitStructure.GPIO_Pin = GPIO_KEY1;
  GPIO_Init(GPIO_KEY1_PORT, &GPIO_InitStructure);

  /* Configure KEY2 Button */
  RCC_APB2PeriphClockCmd(RCC_KEY2, ENABLE);

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_InitStructure.GPIO_Pin = GPIO_KEY2;
  GPIO_Init(GPIO_KEY2_PORT, &GPIO_InitStructure);

  /* Configure KEY3 Button */
  RCC_APB2PeriphClockCmd(RCC_KEY3, ENABLE);

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_InitStructure.GPIO_Pin = GPIO_KEY3;
  GPIO_Init(GPIO_KEY3_PORT, &GPIO_InitStructure);  

  /* Configure KEY4 Button */
  RCC_APB2PeriphClockCmd(RCC_KEY4, ENABLE);

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_InitStructure.GPIO_Pin = GPIO_KEY4;
  GPIO_Init(GPIO_KEY4_PORT, &GPIO_InitStructure);
}
u8 ReadKeyDown(void)
{
  /* 1 key is pressed */
  if(!GPIO_ReadInputDataBit(GPIO_KEY1_PORT, GPIO_KEY1))
  {
    return KEY1; 
  }    
  /* 2 key is pressed */
  if(!GPIO_ReadInputDataBit(GPIO_KEY2_PORT, GPIO_KEY2))
  {
    return KEY2; 
  }
  /* 3 key is pressed */
  if(!GPIO_ReadInputDataBit(GPIO_KEY3_PORT, GPIO_KEY3))
  {
    return KEY3; 
  }
  /* 4 key is pressed */
  if(!GPIO_ReadInputDataBit(GPIO_KEY4_PORT, GPIO_KEY4))
  {
    return KEY4; 
  }
  /* No key is pressed */
  else 
  {
    return NOKEY;
  }
}
#include "stm32f10x.h"
#include "led.h"
#include "key.h"
u8 n;
void init()
{
     GPIO_InitTypeDef GPIO_InitStructure;       /* 配置LED灯使用的GPIO管脚模式*/
      RCC_APB2PeriphClockCmd(RCC_GPIO_LED, ENABLE); /*使能LED灯使用的GPIO时钟*/
       GPIO_InitStructure.GPIO_Pin = LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN; 
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_Init(GPIO_LED, &GPIO_InitStructure);  /*使用的LED灯相关的GPIO口初始化*/
      GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN);/*关闭所有的LED指示灯*/
}
void Delay(vu32 nCount)
{
  for(; nCount != 0; nCount--);
}
void f1()
{   
    GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN);      Delay(delay);
    GPIO_SetBits(GPIO_LED,LD4_PIN|LD5_PIN);      Delay(delay);
    GPIO_SetBits(GPIO_LED,LD3_PIN|LD6_PIN);      Delay(delay);
    GPIO_SetBits(GPIO_LED,LD2_PIN|LD7_PIN);      Delay(delay);
    GPIO_SetBits(GPIO_LED,LD1_PIN|LD8_PIN);      Delay(delay);
    n=ReadKeyDown();
    if(n==0)f1();
}
void f2()
{
    GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN);      Delay(delay);
     GPIO_SetBits(GPIO_LED,LD1_PIN|LD3_PIN|LD5_PIN|LD7_PIN);    Delay(delay);
    GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN);      Delay(delay);
    GPIO_SetBits(GPIO_LED,LD2_PIN|LD4_PIN|LD6_PIN|LD8_PIN);      Delay(delay);
    GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN);      Delay(delay);
    n=ReadKeyDown();
    if(n==0)f2();
}
void f3()
{
    GPIO_SetBits(GPIO_LED,LD1_PIN|LD8_PIN);       Delay(delay);
    GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN);      Delay(delay);
    GPIO_SetBits(GPIO_LED,LD2_PIN|LD7_PIN);       Delay(delay);
    GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN);      Delay(delay);
    GPIO_SetBits(GPIO_LED,LD3_PIN|LD6_PIN);       Delay(delay);
    GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN);      Delay(delay);
    GPIO_SetBits(GPIO_LED,LD4_PIN|LD5_PIN);       Delay(delay);
    GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN);      Delay(delay);
    n=ReadKeyDown();
    if(n==0)f3();
}
void f0()
{   
    GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN);      Delay(delay);
}
void f4()
{   
    GPIO_ResetBits(GPIO_LED,LD1_PIN|LD2_PIN|LD3_PIN|LD4_PIN|LD5_PIN|LD6_PIN|LD7_PIN|LD8_PIN);      Delay(delay);
    GPIO_SetBits(GPIO_LED,LD1_PIN|LD2_PIN);      Delay(delay);
    GPIO_SetBits(GPIO_LED,LD3_PIN|LD4_PIN);      Delay(delay);
    GPIO_SetBits(GPIO_LED,LD5_PIN|LD6_PIN);      Delay(delay);
    GPIO_SetBits(GPIO_LED,LD7_PIN|LD8_PIN);      Delay(delay);
    n=ReadKeyDown();
    if(n==0)f4();
}