STM32F4基于固件库的流水灯实现

1.首先创建led.c&led.h
led.c中初始化led灯的GPIO引脚
初始设置默认小灯全熄灭setBit设置对应的引脚口
void M4_LEDN_ONLY_ONE(int ledN)定义只可以亮一个led灯

#include "led.h"
#include "main.h"
//LEDµÆµÄ³õʼ»¯
	
void M4_LED_INIT(){
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF|RCC_AHB1Periph_GPIOE, ENABLE);
	
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9| GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;  
    GPIO_Init(GPIOF, &GPIO_InitStructure);
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13| GPIO_Pin_14;
	GPIO_Init(GPIOE, &GPIO_InitStructure);
	
	
	GPIO_SetBits(GPIOF, GPIO_Pin_9| GPIO_Pin_10);
	GPIO_SetBits(GPIOE, GPIO_Pin_13| GPIO_Pin_14);
}

//Ö»ÁÁÒ»¸öLEDµÆ
void M4_LEDN_ONLY_ONE(int ledN)
{
	
	switch(ledN)
	{  //Ò»ºÅµÆÁÁÆð£¬ÆäËûµÆ²»ÁÁ
		case 1:
		{
		 GPIO_ResetBits(GPIOF, GPIO_Pin_9);
		 GPIO_SetBits(GPIOF, GPIO_Pin_10);
		 GPIO_SetBits(GPIOE, GPIO_Pin_13| GPIO_Pin_14);
		 break;
		}
		case 2:
		{
		 GPIO_ResetBits(GPIOF, GPIO_Pin_10);
		 GPIO_SetBits(GPIOF, GPIO_Pin_9);
		 GPIO_SetBits(GPIOE, GPIO_Pin_13| GPIO_Pin_14);
		 break;
		}
		case 3:
		{
		 GPIO_ResetBits(GPIOE, GPIO_Pin_13);
	   GPIO_SetBits(GPIOF, GPIO_Pin_9| GPIO_Pin_10);
		 GPIO_SetBits(GPIOE, GPIO_Pin_14);
		 break;	
		}
		case 4:
		{
		 GPIO_ResetBits(GPIOE, GPIO_Pin_14);
	   GPIO_SetBits(GPIOF, GPIO_Pin_9| GPIO_Pin_10);
		 GPIO_SetBits(GPIOE, GPIO_Pin_13);
		 break;	
		}
		default:
		 break;
	}
}

2.led.h
一些头文件中必有的声明

#ifndef _LED_H_
#define _LED_H_

#define M4_LED1 1
#define M4_LED2 2
#define M4_LED3 3
#define M4_LED4 4

#define M4_LED_ON 0
#define M4_LED_OFF 1


void M4_LED_INIT(void);

void M4_LEDN_ONLY_ONE(int ledN);
	
#endif

3.main.c
实现delay(),一个时延效果

static unsigned int time=2000;

void delay(unsigned int time)
{
    time--;
}

int main(void)
{
	M4_LED_INIT();

  /* Infinite loop */
  while (1)
  {
        M4_LEDN_ONLY_ONE(M4_LED1);
		delay(time);
	    M4_LEDN_ONLY_ONE(M4_LED2);
		delay(time);
		M4_LEDN_ONLY_ONE(M4_LED3);
		delay(time);
		M4_LEDN_ONLY_ONE(M4_LED4);
	    delay(time);
	}
}

你可能感兴趣的:(嵌入式)