STM32LED灯交替闪烁

本文讲述了作者使用BRBRGG型号的LED灯遇到的问题,如何通过右键设置output并给LED分配lable,最终在main.c的while循环中控制RESET和SET以实现预期效果,虽然视频还在审核中,但提供了清晰的步骤指导。

我的变体是BRBRGG,要求R,G,B的时间分别为300,300,1000.

型号就是这一款,第一个问题就是找不到哪个对应哪个LED灯哈哈哈哈

好在后面找到了说明

然后右键单击,选择output(以绿灯PB0为例)

 

然后给他们设置了lable

!!!记得把output level设置为high

保存之后进入main.c,在while(1)内添加代码

RESET关闭,SET开启

最后结果就是这样的啦!

(视频还在审核中)

### STM32 LED交替闪烁实现方法 对于STM32微控制器而言,要实现两个LED交替闪烁功能,可以通过配置相应的GPIO引脚作为输出,并利用定时器或软件延时来控制LED的状态切换。下面将以STM32G030C8T6为例介绍具体做法。 #### 初始化外设与时钟树设置 为了使能PB4端口用于驱动第一个LED,在初始化阶段需开启对应外设时钟并设定系统主频至64MHz[^1]: ```c // 开启RCC时钟门控以访问GPIOB寄存器 __HAL_RCC_GPIOB_CLK_ENABLE(); ``` 同样地,如果第二个LED连接到其他引脚(比如PC13),也需要相应地启用该引脚所属的GPIO模块时钟。 #### 配置GPIO引脚为输出模式 定义好要用作LED输出的引脚之后,下一步就是把这些引脚配置成推挽输出方式[^2]: ```c GPIO_InitTypeDef GPIO_InitStruct = {0}; /* PB4 (LED1) configuration */ GPIO_InitStruct.Pin = GPIO_PIN_4; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /* PC13 (LED2) configuration */ GPIO_InitStruct.Pin = GPIO_PIN_13; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); ``` 这段代码不仅设置了PB4和PC13这两个引脚的工作模式,还指定了它们的速度等级以及上下拉电阻状态。 #### 编写主循环逻辑 最后一步是在`main()`函数内的无限循环里加入实际的操作语句,通过改变高低电平达到让两盏LED轮流亮起的目的[^3]: ```c while(1){ /* Turn on LED1 and turn off LED2 */ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); // Delay for half a second HAL_Delay(500); /* Turn off LED1 and turn on LED2 */ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); // Another delay of half a second HAL_Delay(500); } ``` 上述代码片段展示了如何在一个周期内先后点亮不同的LED,每次变化之间都有大约500毫秒的时间间隔,从而形成每秒钟一次完整的开关动作序列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值