STM32实现流水灯

 跟51学习进度一样,当我们实现点亮一个灯之后我们就会想着如何点亮流水灯,呼吸灯这两种灯,在51中我们用的整个端口比如说P0口然后利用左移或者右移函数进行流水灯的实现,在32中我们依旧可以采用这种方式,但是由于开发板中连接的LED灯所用的端口不是同一组端口,所以可以直接利用简单的某个灯亮,两外的灯暗来实现。

首先还是先上电路图,我用的还是野火的指南者的开发板
在这里插入图片描述
如图所示,所用的还是共阳极的原理图,要想点亮灯只需要给低电平就好了。要想实现流水灯,就叫而已是其中一个低电平其他全部高电平就好了。
代码如下。首先是GPIO初始化。

void LED_Init(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin,uint32_t RCC_APB2Periph)//灯初始化
{
 GPIO_InitTypeDef GPIO_InitStruct;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph,ENABLE);//打开时钟
 GPIO_InitStruct.GPIO_Pin = GPIO_Pin;//设置引脚
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//设置方式
 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;//设置速度
 GPIO_Init(GPIOx,  &GPIO_InitStruct);//引脚初始化
}
void delay(uint32_t count)//延时函数
{
 for(;count!=0;count--);
 
}

初始化之后在main函数中开始编写流水灯。代码如下。

 LED_G_Init(GPIOB, GPIO_Pin_0,RCC_APB2Periph_GPIOB);
 LED_G_Init(GPIOB, GPIO_Pin_0,RCC_APB2Periph_GPIOB);
 LED_G_Init(GPIOB, GPIO_Pin_0,RCC_APB2Periph_GPIOB);
 while(1)
 {
  GPIO_ResetBits(GPIOB, GPIO_Pin_0);
  GPIO_SetBits(GPIOB, GPIO_Pin_0);
  GPIO_SetBits(GPIOB, GPIO_Pin_0);
  delay(0xFFFF);
  GPIO_ResetBits(GPIOB, GPIO_Pin_0);
  GPIO_SetBits(GPIOB, GPIO_Pin_0);
  GPIO_SetBits(GPIOB, GPIO_Pin_0);
  delay(0xFFFF);
  GPIO_ResetBits(GPIOB, GPIO_Pin_0);
  GPIO_SetBits(GPIOB, GPIO_Pin_0);
  GPIO_SetBits(GPIOB, GPIO_Pin_0);
  delay(0xFFFF);

这样就实现了流水灯的效果,虽然实现了,但是感觉这种方法很是石板且没有·技术含量,兄弟么有什么方法可以一起讨论一下。

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值