[USB芯片] 【CH32X035评估板测评】+2、基于GPIO的呼吸灯实现

[复制链接]
 楼主| xu@xupt 发表于 2023-9-9 19:40 | 显示全部楼层 |阅读模式
本帖最后由 xu@xupt 于 2023-9-9 19:46 编辑

#申请开发板# #有奖活动# #申请原创# @21ic小管家
【CH32X035评估板测评】2、基于GPIO的呼吸灯实现
1、关于LED灯
CH32X035评估板上有2个LED灯,LED正极与3.3V正电相连,负极可以根据端口进行连接,以实现GPIO对KED的控制。本例中使用PA4控制LED实现呼吸灯效果。
357397085bf472c4215bb297bbaca165
ba38e0e89579143c22e2ee7d6b9867a8
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、实现效果

4936464fc5ad6174a4.png 2592464fc5ae5005e4.png 6553164fc5af6c6a1d.png




forgot 发表于 2023-9-14 08:49 | 显示全部楼层
赞一下,非常好的测评,我的板子也收到了,先来学习一下
Bymyself 发表于 2023-10-5 20:38 | 显示全部楼层
可以试试弄成gif图,可以看到变化效果

评论

感谢提醒,下次试试  发表于 2023-10-6 08:40
tpgf 发表于 2023-10-9 16:39 | 显示全部楼层
一般来说这里串接进来的电阻是保护小灯的还是保护引脚的呢
drer 发表于 2023-10-9 16:54 | 显示全部楼层
1个毫秒的延时时间会不会过短啊
wiba 发表于 2023-10-9 17:21 | 显示全部楼层
我们能用肉眼观察到的频率最大是多少呢
kxsi 发表于 2023-10-10 16:22 | 显示全部楼层
在用引脚实现呼吸灯的功能的时候,可以将引脚设置为哪些模式呢
coshi 发表于 2023-10-10 16:45 | 显示全部楼层
这种循环的工作需要开看门狗方式程序死机吗
qcliu 发表于 2023-10-10 17:32 | 显示全部楼层
coshi 发表于 2023-10-10 16:45
这种循环的工作需要开看门狗方式程序死机吗

应该不用 又不会长时间不断电
您需要登录后才可以回帖 登录 | 注册

本版积分规则

134

主题

751

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部

134

主题

751

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部