```C
{
	为什么实际上板子只有 D 2 在亮？
	while(1)
	{
            GPIOE_BSRR = (1 << (8 + 16)); // PE 8 ???
            delay_ms(300);

            GPIOE_BSRR = (1 << (9 + 16)); // PE9 ???
            delay_ms(300);

            GPIOE_BSRR = (1 << (10 + 16)); // PE10 ???
            delay_ms(300);

            GPIOE_BSRR = (1 << (11 + 16)); // PE11 ???
            delay_ms(300);

            //Ï¨ÃðËùÓÐµÆ
            GPIOE_BSRR = (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11);
        
	}
}
```

```C
1 PB6/I2C_SCL/Cont SW18 BUTTON

LED 灯 R7/R5 PE11/LCD_D8/LED4/TM1_2
PE10/LCD_D7/LED3/TM1_2N
PE9/LCD_D6/LED2/TM1_1
PE8/LED_D5/LED1/TM1_1N
```


```C
#include "stm32f10x.h"


#define RCC_APB2ENR         (*((volatile unsigned int*)0x40021018))   // APB2 ÍâÉèÊ±ÖÓÊ¹ÄÜ¼Ä´æÆ÷
#define GPIOE_CRH           (*((volatile unsigned int*)0x40011804))   // ¶Ë¿ÚÅäÖÃ¸ß¼Ä´æÆ÷
#define GPIOE_BSRR          (*((volatile unsigned int*)0x40011810))   // ¶Ë¿ÚÎ»ÉèÖÃ/¸´Î»¼Ä´æÆ÷
#define GPIOE_IDR           (*((volatile unsigned int*)0x40011808))   // ¶Ë¿ÚÊäÈëÊý¾Ý¼Ä´æÆ÷	
#define GPIOE_ODR           (*((volatile unsigned int*)0x4001180C))   // ¶Ë¿ÚÊä³öÊý¾Ý¼Ä´æÆ÷
	
#define GPIOB_CRL           (*((volatile unsigned int*)0x40010C00))   // ¶Ë¿ÚÅäÖÃµÍ¼Ä´æÆ÷
#define GPIOB_IDR           (*((volatile unsigned int*)0x40010C08))   // ¶Ë¿ÚÊäÈëÊý¾Ý¼Ä´æÆ÷	
#define GPIOB_BSRR          (*((volatile unsigned int*)0x40010C10))   // ¶Ë¿ÚÎ»ÉèÖÃ/¸´Î»¼Ä´æÆ÷	

void LED_Init(void)
{
	RCC_APB2ENR |= 1<<6;          //Ê¹ÄÜPORTEÊ±ÖÓ	
//	GPIOE_CRH &=0XFFFFFFF0;       //Çå³ýPE8Òý½ÅÔ­À´ÉèÖÃ  
//	GPIOE_CRH |=0x3;			        //ÉèÖÃCNF8[1:0]Îª0x00£ºÍ¨ÓÃÍÆÍìÊä³öÄ£Ê½£¬MODE8[1:0]Îª0x11£ºÊä³öÄ£Ê½
	GPIOE_CRH &= 0xFFFF0000;   // ?? PE8~PE11 ????
GPIOE_CRH |= 0x00003333;   // ?? PE8~PE11 ?????
	//GPIOE_BSRR = 1<<8;           //µÚ8bitÖÃ1£¬ÔòÉèÖÃ¶ÔÓ¦µÄODR8Î»Îª1£¬¼´PE8Òý½ÅÊä³ö¸ßµçÆ½  
	GPIOE_BSRR = (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11);
}

void Delay(unsigned int nCount)
{ 
  while(nCount > 0)
  { 
  	  nCount --;   
  }
}

void LED_Turn(void)
{
	
	while(1)
	{

		GPIOE_BSRR = 1<<24;        //????????ODR8??0????PE8???????????
//		GPIOE_BRR = 1<<8; 
		Delay(0xfffff);
		Delay(0xfffff);
	
	  GPIOE_BSRR = 1<<8; 
		
		Delay(0xfffff);
		Delay(0xfffff);
	}
}

void KEY_Init(void)
{
		RCC_APB2ENR |=1<<3;    //Ê¹ÄÜPORTBÊ±ÖÓ	
	  GPIOB_CRL &=~(0xf<<24);// PB.6ÉÏÀ­ÊäÈë	
		GPIOB_CRL |=(0x08<<24);// PB.6ÉÏÀ­ÊäÈë	
		GPIOB_BSRR = (1<< 6);
}

u8 KEY_Scan(void)
{	 

	u8 key_1= 0;
	if(GPIOB_IDR & 0x40)
			key_1=0;
	else 
  		key_1=1;
	if(key_1==1)
	{
		delay_ms(100);//È¥¶¶¶¯ 
		if(GPIOB_IDR & 0x40)
			key_1=0;

			
		if(key_1==1)
			return 1;
	} 
 	return 0;// ÎÞ°´¼ü°´ÏÂ
}
```

```C

void LED_M2LR(void)
{while(1){
    // 中间向两边点亮：D3 -> D4 -> D2 -> D5
    GPIOE_BSRR = (1 << (9 + 16));  // 拉低 D3
    delay_ms(300);
    GPIOE_BSRR = (1 << (10 + 16)); // 拉低 D4
    delay_ms(300);
    GPIOE_BSRR = (1 << (8 + 16));  // 拉低 D2
    delay_ms(300);
    GPIOE_BSRR = (1 << (11 + 16)); // 拉低 D5
    delay_ms(300);

    // 熄灭所有 LED
    GPIOE_BSRR = (1 << 8)|(1 << 9)|(1 << 10)|(1 << 11); // 拉高
    delay_ms(500);}
}
```

```C
1下拉
0上拉
ODR 寄存器
void LED_Init(void)
{
	RCC_APB2ENR |= 1<<6;          //Ê¹ÄÜPORTEÊ±ÖÓ	
//	GPIOE_CRH &=0XFFFFFFF0;       //Çå³ýPE8Òý½ÅÔ­À´ÉèÖÃ  
//	GPIOE_CRH |=0x3;			        //ÉèÖÃCNF8[1:0]Îª0x00£ºÍ¨ÓÃÍÆÍìÊä³öÄ£Ê½£¬MODE8[1:0]Îª0x11£ºÊä³öÄ£Ê½
	GPIOE_CRH &= 0xFFFF0000;   // ?? PE8~PE11 ????
GPIOE_CRH |= 0x00003333;   // ?? PE8~PE11 ?????
	//GPIOE_BSRR = 1<<8;           //µÚ8bitÖÃ1£¬ÔòÉèÖÃ¶ÔÓ¦µÄODR8Î»Îª1£¬¼´PE8Òý½ÅÊä³ö¸ßµçÆ½  
	GPIOE_BSRR = (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11);
}





void LED_L2R(void)
{
    // D2 -> D3 -> D4 -> D5
    GPIOE_BSRR = (1 << (8 + 16));  // ?? D2
    delay_ms(300);
    GPIOE_BSRR = (1 << (9 + 16));  // ?? D3
    delay_ms(300);
    GPIOE_BSRR = (1 << (10 + 16)); // ?? D4
    delay_ms(300);
    GPIOE_BSRR = (1 << (11 + 16)); // ?? D5
    delay_ms(300);

    // ???? LED
    GPIOE_BSRR = (1 << 8)|(1 << 9)|(1 << 10)|(1 << 11); // ??
    delay_ms(500);
}

void LED_R2L(void)
{
    // D5 -> D4 -> D3 -> D2
    GPIOE_BSRR = (1 << (11 + 16)); // ?? D5
    delay_ms(300);
    GPIOE_BSRR = (1 << (10 + 16)); // ?? D4
    delay_ms(300);
    GPIOE_BSRR = (1 << (9 + 16));  // ?? D3
    delay_ms(300);
    GPIOE_BSRR = (1 << (8 + 16));  // ?? D2
    delay_ms(300);

    // ???? LED
    GPIOE_BSRR = (1 << 8)|(1 << 9)|(1 << 10)|(1 << 11); // ??
    delay_ms(500);
}

void LED_M2LR(void)
{
    // ???????:D3 -> D4 -> D2 -> D5
    GPIOE_BSRR = (1 << (9 + 16));  // ?? D3
    GPIOE_BSRR = (1 << (10 + 16)); // ?? D4
    delay_ms(300);
    GPIOE_BSRR = (1 << (8 + 16));  // ?? D2
    GPIOE_BSRR = (1 << (11 + 16)); // ?? D5
    delay_ms(300);

    // ???? LED
    GPIOE_BSRR = (1 << 8)|(1 << 9)|(1 << 10)|(1 << 11); // ??
    delay_ms(500);
}
void KEY_Init(void)
{
		RCC_APB2ENR |=1<<3;    //Ê¹ÄÜPORTBÊ±ÖÓ	
	  GPIOB_CRL &=~(0xf<<24);// PB.6ÉÏÀ­ÊäÈë	
		GPIOB_CRL |=(0x08<<24);// PB.6ÉÏÀ­ÊäÈë	
		GPIOB_BSRR = (1<< 6);
}

u8 KEY_Scan(void)
{	 

	u8 key_1= 0;
	if(GPIOB_IDR & 0x40)
			key_1=0;
	else 
  		key_1=1;
	if(key_1==1)
	{
		delay_ms(100);//È¥¶¶¶¯ 
		if(GPIOB_IDR & 0x40)
			key_1=0;

			
		if(key_1==1)
			return 1;
	} 
 	return 0;// ÎÞ°´¼ü°´ÏÂ
}
```