ZBLOG

while (1) { // GPIOB_CTLL = 0x3300033; // GPIOB_ODR = 0; // delay_xms(500); // GPIOB_ODR = 0x23; // delay_xms(500); GPIOB_CTLL = GPIOB_CNF0 | GPIOB_MODE0;//GREEN GPIOB_ODR = 0; delay_xms(500); GPIOB_CTLL = GPIOB_CNF0 | GPIOB_MOD...

以上代码是一个无限循环,通过控制GPIOB端口的控制寄存器(GPIOB_CTLL)和输出数据寄存器(GPIOB_ODR)来实现不同LED灯的闪烁。每次循环都会切换到下一个LED灯。

如果你想进一步优化代码,可以考虑使用位操作和宏定义来简化代码。例如,可以定义一些宏来表示不同的LED灯状态:

#define GREEN_ON    (GPIOB_CNF0 | GPIOB_MODE0)
#define LOWBLUE_ON  (GPIOB_CNF0 | GPIOB_MODE0 | GPIOB_CNF1 | GPIOB_MODE1)
#define BLUE_ON     (GPIOB_CNF1 | GPIOB_MODE1)
// 其他颜色...

// 定义一个数组来保存不同LED灯状态
const int led_states[] = {GREEN_ON, LOWBLUE_ON, BLUE_ON, /*其他颜色...*/};

然后,在循环中通过索引访问led_states数组,并将对应的值设置给GPIOB_CTLL寄存器即可:

int index = 0;
while (1)
{
    // 设置GPIOB_CTLL为当前LED灯的状态
    GPIOB_CTLL = led_states[index];
    GPIOB_ODR = 0; // 关闭所有LED
    
    delay_xms(500);
    
    index++;
    if (index >= sizeof(led_states) / sizeof(led_states[0]))
        index = 0;
}

这样做可以使代码更加清晰、易读,并且方便扩展和修改LED灯的数量和顺序。当需要添加新的LED灯时,只需要在led_states数组中添加对应的宏定义即可。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://sdn.0voice.com/?id=2152

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?