led.h文件代码如下:
#ifndef __LED_H
#define __LED_H
#include "stm32f10x.h"
void LED_Config(void);
void LED_On_all(void);
void LED_Off_all(void);
void LED_On(uint8_t led);
void LED_Off(uint8_t led);
void Delay(__IO uint32_t nCount);
#endif /*__LED_H */
led.c文件代码如下:
#include "led.h"
void LED_Config(void) // LED配置函数
{ GPIO_InitTypeDef GPIO_InitStructure;// 声明外设结构体变量 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF,ENABLE);// 启动外设时钟
// 配置三个LED
/*配置PB0(LED1) */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/*配置PF7(LED2)和PF8(LED3) */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_8;
GPIO_Init(GPIOF, &GPIO_InitStructure);
// 初始化:LED全灭
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_SetBits(GPIOF, GPIO_Pin_7|GPIO_Pin_8);
}
// LED全亮
void LED_On_all(void)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_0);
GPIO_ResetBits(GPIOF, GPIO_Pin_7|GPIO_Pin_8);
}
// LED全灭
void LED_Off_all(void)
{
GPIO_SetBits(GPIOB, GPIO_Pin_0);
GPIO_SetBits(GPIOF, GPIO_Pin_7|GPIO_Pin_8);
}
// 指定某个LED灯亮
void LED_On(uint8_t led)
{ switch(led)
{ case 1: GPIO_ResetBits(GPIOB, GPIO_Pin_0);
break;
case 2: GPIO_ResetBits(GPIOF, GPIO_Pin_7);
break;
case 3: GPIO_ResetBits(GPIOF, GPIO_Pin_8);
break;
default:
break; }
}
//指定某个LED灯灭
void LED_Off(uint8_t led)
{ switch(led)
{ case 1: GPIO_SetBits(GPIOB, GPIO_Pin_0);
break;
case 2: GPIO_SetBits(GPIOF, GPIO_Pin_7);
break;
case 3: GPIO_SetBits(GPIOF, GPIO_Pin_8);
break;
default:
break; }
}
/*简单延时函数*/
void Delay(__IO uint32_t nCount)
{for (; nCount != 0; nCount--);}//T=0.1微秒
main.c文件代码如下:
#include "stm32f10x.h"
#include "led.h"
int i;
int main(void)
{
LED_Config();
LED_On_all();
Delay(5000000);
LED_Off_all();
Delay(5000000);
while(1){
for(i=1;i<4;i++)
{
LED_Off_all();
LED_On(i);
Delay(1000000);
}
}
}
我并未调用单个灭灯的函数,如有需要可以在main函数中添加。