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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值