stm32-电灯-初学者-升级版

一、对比(stm32-电灯-初学者https://blog.csdn.net/qq_48758812/article/details/138091537?spm=1001.2014.3001.5502 博客文章内容进行部分代码优化)

(1)对比led.c文档做部分优化

在这里插入图片描述

(2)对比led.c文档做部分优化

在这里插入图片描述

(3)对比main.c文档做部分优化

在这里插入图片描述

二、同时点亮4盏灯(一亮一灭)

(优化后的)

led.h文档
#ifndef _LED_H
#define _LED_H

#include "stm32f4xx.h"

// 声明函数

void Led_Init(void);  // led灯

#endif

led.c文档
#include "led.h"

/*******************************
引脚说明

LED0连接在PF9
PF9输出低电平(0),灯亮;PF9输出高电平(1),灯灭;

LED1 连接在 PF10

FSMC_D10 连接在 PE13

FSMC_D11 连接在 PE14

*********************************/
void Led_Init(void)
{
    // 定义 PF9、PF10 结构体变量
    GPIO_InitTypeDef GPIO_InitStruct_F;
    // 定义 PE13、PE14 结构体变量
    GPIO_InitTypeDef GPIO_InitStruct_E;
    
    // 打开GPIOF组时钟(PF9、PF10属于GPIOF组时钟)
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
    // 打开GPIOE组时钟(PE13、PE14属于GPIOE组时钟)
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
    
    GPIO_InitStruct_F.GPIO_Pin   = GPIO_Pin_9 | GPIO_Pin_10;    // 引脚
    GPIO_InitStruct_F.GPIO_Mode  = GPIO_Mode_OUT;               // 输出
    GPIO_InitStruct_F.GPIO_OType = GPIO_OType_PP;               // 推挽输出
    GPIO_InitStruct_F.GPIO_PuPd  = GPIO_PuPd_UP;                // 上拉
    GPIO_InitStruct_F.GPIO_Speed = GPIO_Speed_25MHz;            // 速度

    // 初始化 
    GPIO_Init(GPIOF, &GPIO_InitStruct_F);
    
    GPIO_InitStruct_E.GPIO_Pin   = GPIO_Pin_13 | GPIO_Pin_14;   // 引脚
    GPIO_InitStruct_E.GPIO_Mode  = GPIO_Mode_OUT;               // 输出
    GPIO_InitStruct_E.GPIO_OType = GPIO_OType_PP;               // 推挽输出
    GPIO_InitStruct_E.GPIO_PuPd  = GPIO_PuPd_UP;                // 上拉
    GPIO_InitStruct_E.GPIO_Speed = GPIO_Speed_25MHz;            // 速度

    // 初始化 
    GPIO_Init(GPIOE, &GPIO_InitStruct_E);
}

main.c文档
#include "led.h"

// 粗延时
void delay(int n)
{
    int i, j;
    
    for(i=0; i<n; i++)
    {
        for(j=0; j<30000; j++)
        {
        }
    }        
}


int main(void)
{
    Led_Init(); // 调用函数 led灯
    
    while(1)
    {
        //灯灭
        GPIO_SetBits(GPIOF, GPIO_Pin_9);
        GPIO_SetBits(GPIOF, GPIO_Pin_10);
        GPIO_SetBits(GPIOE, GPIO_Pin_13);
        GPIO_SetBits(GPIOE, GPIO_Pin_14);
        delay(5000);
        
        //灯亮
        GPIO_ResetBits(GPIOF, GPIO_Pin_9);
        GPIO_ResetBits(GPIOF, GPIO_Pin_10);
        GPIO_ResetBits(GPIOE, GPIO_Pin_13);
        GPIO_ResetBits(GPIOE, GPIO_Pin_14);        
        delay(500);
    }
    return 0;
}

效果动图:

同时点亮四盏灯(同时闪烁)

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值