stm实现流水灯的代码解释

以下代码,作出解释,有详细步骤,谢谢🙏
#include "led.h"
//#include "delay.h"
#include "stm32f10x.h"
void Delay(__IO u32 nCount);
char count=1;
void Kdelay(int n) //ÑÓ³Ùº¯Êý
{
int i,j;
for(i=0;i
{
for(j=0;j<10000;j++);
}
}

void Key_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;//¶¨ÒåÒ»¸öGPIO_InitTypeDefÀàÐ͵ĽṹÌå
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//¿ªÆôGPIOAµÄÍâÉèʱÖÓ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//Ñ¡Ôñ¿ØÖƵÄGPIOAÒý½Å
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;//ÉèÖÃÒý½ÅËÙÂÊΪ10MHz
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//ÉèÖÃÒý½ÅģʽΪͨÓÃÉÏÀ­ÊäÈë
GPIO_Init(GPIOA, &GPIO_InitStructure);//µ÷Óÿ⺯Êý£¬³õʼ»¯GPIOA0
}

int main(void)
{
_Bool x,z;
Key_GPIO_Config();
LED_Init(); //³õʼ»¯Óë LED Á¬½ÓµÄÓ²¼þ½Ó¿Ú

    GPIO_SetBits(GPIOB, GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);//¹Ø±ÕËùÓÐµÄµÆ ×¢ÒâA2¿ª·¢°æÓõĹ²Ñô¼« ÕâÀïÊÇÖÃ1

    x=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);
    z=x;
while(1)

{
x=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);
if(x==0) //Åжϰ´¼üÊÇ·ñ°´ÏÂ
{
Kdelay(20);//Ïû¶¶
z=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);
if(z==1)//Åжϰ´¼üÊÇ·ñËÉ¿ª
{
Kdelay(20);
count++;//count+1
}
}
if(count%2==0)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_2);
Delay(0x0ffef);
GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_2);
GPIO_ResetBits(GPIOB,GPIO_Pin_1|GPIO_Pin_3);
Delay(0x0ffef);
GPIO_SetBits(GPIOB,GPIO_Pin_1|GPIO_Pin_3);
}
else if(count%2==1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_0);
GPIO_SetBits(GPIOB,GPIO_Pin_1);
GPIO_SetBits(GPIOB,GPIO_Pin_2);
}
}
}

void Delay(__IO u32 nCount)
{
for(;nCount!=0;nCount--);
}

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图