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);
}
}