STM32F4XX_外设LED灯(第二期)

166 阅读2分钟

STM32F4xx外设

led灯相关

单片机stm32f407ZGTx 共有两个LED灯,由两个引脚控制:GPIOF.9-->D1,GPIOF.10-->D2,对应引脚的电平置低,其对应的led灯点亮,反之熄灭。

GPIOF.9高电平 - LD1亮,GPIOF.9低电平 - LD1灭

GPIOF.10高电平 - LD2亮,GPIO.F10低电平 - LD2灭

led相关代码

  1. LED初始化
void LED_Init(void)
{    	 
  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,
  ENABLE);//使能GPIOF时钟

  //GPIOF.9,GPIOF.10初始化设置
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 
  | GPIO_Pin_10;
  
  GPIO_InitStructure.GPIO_Mode= GPIO_Mode_OUT;
  //普通输出模式
  
  GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
  //推挽输出
  
 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
 //100MHz(GPIO传输速度)
 
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  //上拉
  GPIO_Init(GPIOF, &GPIO_InitStructure);
  //初始化
	
GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
//GPIOF.9,GPIOF.10设置高,灯灭

}

2.LED灯闪烁代码

void LED_Flare(void)
{
GPIO_ResetBits(GPIOF,GPIO_Pin_9);  
//LED0对应引脚GPIOF.9拉低,亮  等同D1=0;

GPIO_SetBits(GPIOF,GPIO_Pin_10);   
//LED1对应引脚GPIOF.10拉高,灭 等同D2=1;

delay_ms(500); //延时500ms

GPIO_SetBits(GPIOF,GPIO_Pin_9);	   
//LED0对应引脚GPIOF.9拉高,灭  等同D1=1;

GPIO_ResetBits(GPIOF,GPIO_Pin_10); 
//LED1对应引脚GPIOF.10拉低,亮 等同D2=0;

delay_ms(500);  //延时500ms

}

3.LED 灯闪烁的其他实现方式

(1)方式1

//通过 位带 操作实现IO口控制

    LED0=0;	//LED0亮
    LED1=1;	//LED1灭
    delay_ms(500);
    LED0=1;	//LED0灭
    LED1=0;	//LED1亮
    delay_ms(500);

(2)方式2

//通过 直接操作寄存器 方式实现IO口控制

    GPIOF->BSRRH=GPIO_Pin_9;   //LED0亮
    GPIOF->BSRRL=GPIO_Pin_10; //LED1灭
    delay_ms(500);
    GPIOF->BSRRL=GPIO_Pin_9;  //LED0灭
    GPIOF->BSRRH=GPIO_Pin_10; //LED1亮
    delay_ms(500);

4 主函数处理

int main(void)
{
    delay_init(168); //初始化延时函数
    LED_Init();     //初始化LED灯
    while(1)
    {
        LED_Flare();    //LED灯闪烁
    }
}