打印
[USB芯片]

【CH32X035评估板测评】+2、基于GPIO的呼吸灯实现

[复制链接]
2446|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 xu@xupt 于 2023-9-9 19:46 编辑

#申请开发板# #有奖活动# #申请原创# @21ic小管家
【CH32X035评估板测评】2、基于GPIO的呼吸灯实现
1、关于LED灯
CH32X035评估板上有2个LED灯,LED正极与3.3V正电相连,负极可以根据端口进行连接,以实现GPIO对KED的控制。本例中使用PA4控制LED实现呼吸灯效果。
2、关于程序
这段程序主要实现了一个呼吸灯效果。下面是对程序的详细总结:
GPIO_breath_INIT函数用于初始化 GPIOA 的引脚 4,设置为推挽输出模式,并设置输出速度为 50MHz。
ledbreath函数用于控制呼吸灯的亮灭过程。首先将 GPIOA 引脚 4 置为低电平,然后置为高电平,并延时一段时间(t-i)。接着将引脚 4 置为高电平,再置为低电平,并延时一段时间(i)。
在 main 函数中,首先配置中断优先级组为组2,并更新系统时钟。然后初始化延时函数和 GPIO 引脚。
定义了变量 breathTime 和 stopTime,分别表示呼吸灯的总时间和停止时间。
进入无限循环,循环中的第一个 for 循环逐渐增加停止时间,调用 ledbreath 函数实现呼吸灯效果。然后延时1毫秒。
第二个 for 循环逐渐减小停止时间,再次调用 ledbreath 函数实现呼吸灯效果。然后再次延时1毫秒。
无限循环会一直执行上述的呼吸灯效果,实现了呼吸灯的闪烁效果。
总体而言,这段程序通过控制 GPIO 引脚的电平状态和延时函数,实现了一个呼吸灯的效果,让 LED 灯在一定的时间内逐渐变亮和变暗,形成闪烁的效果。

#include "debug.h"
void GPIO_breath_INIT(void)
{
    GPIO_InitTypeDef GPIO_InitStructure = {0};
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
}

void ledbreath(uint16_t t,uint16_t i)
{
        GPIO_WriteBit(GPIOA, GPIO_Pin_4, Bit_RESET);
        GPIO_WriteBit(GPIOA, GPIO_Pin_4, Bit_SET);
        Delay_Us(i);
        GPIO_WriteBit(GPIOA, GPIO_Pin_4, Bit_SET);
        GPIO_WriteBit(GPIOA, GPIO_Pin_4, Bit_RESET);
        Delay_Us(t-i);
}

int main(void)
{

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    SystemCoreClockUpdate();
    Delay_Init();
    GPIO_breath_INIT();

    u16 breathTime=2000,stopTime;
    while(1)
    {
        for(stopTime=1;stopTime<breathTime;stopTime+=1)//这两个参数随便调,只要效果明显就行了,先开始i增加占空比在增大
      {
              ledbreath(breathTime,stopTime);
      }
         Delay_Ms(1);
          for(stopTime=breathTime;stopTime>1;stopTime-=1)//后占空比开始减小
       {
               ledbreath(breathTime,stopTime);
       }
          Delay_Ms(1);
    }
}




3、实现效果






使用特权

评论回复
沙发
forgot| | 2023-9-14 08:49 | 只看该作者
赞一下,非常好的测评,我的板子也收到了,先来学习一下

使用特权

评论回复
板凳
Bymyself| | 2023-10-5 20:38 | 只看该作者
可以试试弄成gif图,可以看到变化效果

使用特权

评论回复
评论
xu@xupt 2023-10-6 08:40 回复TA
感谢提醒,下次试试 
地板
tpgf| | 2023-10-9 16:39 | 只看该作者
一般来说这里串接进来的电阻是保护小灯的还是保护引脚的呢

使用特权

评论回复
5
drer| | 2023-10-9 16:54 | 只看该作者
1个毫秒的延时时间会不会过短啊

使用特权

评论回复
6
wiba| | 2023-10-9 17:21 | 只看该作者
我们能用肉眼观察到的频率最大是多少呢

使用特权

评论回复
7
kxsi| | 2023-10-10 16:22 | 只看该作者
在用引脚实现呼吸灯的功能的时候,可以将引脚设置为哪些模式呢

使用特权

评论回复
8
coshi| | 2023-10-10 16:45 | 只看该作者
这种循环的工作需要开看门狗方式程序死机吗

使用特权

评论回复
9
qcliu| | 2023-10-10 17:32 | 只看该作者
coshi 发表于 2023-10-10 16:45
这种循环的工作需要开看门狗方式程序死机吗

应该不用 又不会长时间不断电

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

113

主题

700

帖子

3

粉丝