[stm32] Start Tour-LED灯流水灯

如果觉得不错就点个赞吧~

目录

一  元件相关

二 面包板上的连线

三 具体代码


一  元件相关

需要准备元件:32板,杜邦线,跳线,几个LED灯,几个电阻,ST-Link,面包板

二 面包板上的连线

32和Link的连接我写在了另一篇中,需要的同学可以自己去看[stm32] Start Tour-LED灯闪烁

如图,把接LED的正极分别接到32板上的PA0~7,一个灯一个io口,随便选择,因为我的代码里面用上了GPIO_Pin_All。

负极统一接GND

 

三 具体代码

 

还有一些软件配置,LINK驱动问题由于过于麻烦,我就不细述了。 废话不多说,直接上代码

#include "stm32f10x.h"                 
#include "Delay.h"

int main(void)
{
	//GPIO初始化(选择外设)
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//开启时钟
	GPIO_InitTypeDef GPIO_InitStructure;//GPIO_InitStructure只是一个名字,随便起都行
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//用推挽输出
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;//定义所有端口都为那个输出模式
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
	
	 
	while(1)
	{
		int i;
		for(i=0;i<2;i++)
		{
     GPIO_Write(GPIOA,~(0x0001<<i));
	   Delay_ms(500);
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为你提供一种简单的实现方式。 首先,需要确定使用的引脚,包括按键和LED的引脚。假设我们使用PA0引脚作为按键输入,PB0-PB3引脚作为LED输出。 然后,需要初始化GPIO的输入输出模式。这里我们需要将PA0引脚设置为输入模式,PB0-PB3引脚设置为输出模式。 接下来,我们可以在主循环中不断读取PA0引脚的状态,如果检测到按键按下,则让LED进行流水效果。实现代码如下: ```c #include "stm32f10x.h" int main(void) { GPIO_InitTypeDef GPIO_InitStructure; // 初始化PA0引脚为按键输入 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化PB0-PB3引脚为LED输出 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); int dir = 1; int index = 0; while(1) { // 检测按键状态 if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == RESET) { // 让LED进行流水效果 GPIO_SetBits(GPIOB, 1 << index); GPIO_ResetBits(GPIOB, 1 << ((index + 3) % 4)); index += dir; if(index >= 4) { dir = -1; index = 2; } else if(index < 0) { dir = 1; index = 1; } // 延时一段时间 for(int i = 0; i < 1000000; i++); } } } ``` 这段代码会不断检测PA0引脚的状态,如果检测到按键按下,则会让LED进行流水效果。其中,dir变量用于控制流水的方向,index变量用于记录当前点亮的LED编号。在流水效果中,我们需要让相邻的两个LED交替点亮和熄灭,因此需要使用位运算和GPIO_SetBits、GPIO_ResetBits函数来控制LED的状态。最后,需要使用一个简单的延时循环来控制流水的速度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烟非颜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值