GPIO输出点亮LED灯(使用STM32Cube_FW_F4_V1.16.0固件库)

这是我人生中编写的第一个STM32小程序,让LED彩灯闪亮。

led.h:

#ifndef __LED_H__
#define __LED_H__

#include "stm32f429xx.h"
#include "stm32f4xx_hal_gpio.h"

#define LED_R_ON                HAL_GPIO_WritePin(GPIOH, GPIO_PIN_10, GPIO_PIN_RESET)
#define LED_R_OFF                HAL_GPIO_WritePin(GPIOH, GPIO_PIN_10, GPIO_PIN_SET)
#define LED_R_TOGGLE            HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_10)

#define LED_G_ON                HAL_GPIO_WritePin(GPIOH, GPIO_PIN_11, GPIO_PIN_RESET)
#define LED_G_OFF                HAL_GPIO_WritePin(GPIOH, GPIO_PIN_11, GPIO_PIN_SET)
#define LED_G_TOGGLE            HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_11)

#define LED_B_ON                HAL_GPIO_WritePin(GPIOH, GPIO_PIN_12, GPIO_PIN_RESET)
#define LED_B_OFF                HAL_GPIO_WritePin(GPIOH, GPIO_PIN_12, GPIO_PIN_SET)
#define LED_B_TOGGLE            HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_12)

#define LED_RED                    LED_R_ON; LED_G_OFF; LED_B_OFF
#define LED_GREEN                LED_R_OFF; LED_G_ON; LED_B_OFF
#define LED_BLUE                LED_R_OFF; LED_G_OFF; LED_B_ON
#define LED_YELLOW                LED_R_ON; LED_G_ON; LED_B_OFF
#define LED_PURPLE                LED_R_ON; LED_G_OFF; LED_B_ON
#define LED_CYAN                LED_R_OFF; LED_G_ON; LED_B_ON
#define LED_WHITE                LED_R_ON; LED_G_ON; LED_B_ON
#define LED_ALL_OFF                LED_R_OFF; LED_G_OFF; LED_B_OFF

void LED_GPIO_Config(void);

#endif

led.c:

#include "led.h"
#include "stm32f4xx_hal_rcc.h"

void LED_GPIO_Config(void)
{
    __HAL_RCC_GPIOH_CLK_ENABLE();
    
    GPIO_InitTypeDef init;
    init.Alternate = 0;
    init.Mode = GPIO_MODE_OUTPUT_PP;
    init.Pull = GPIO_PULLUP;
    init.Speed = GPIO_SPEED_FREQ_LOW;
    
    init.Pin = GPIO_PIN_10;
    HAL_GPIO_Init(GPIOH, &init);
    
    init.Pin = GPIO_PIN_11;
    HAL_GPIO_Init(GPIOH, &init);
    
    init.Pin = GPIO_PIN_12;
    HAL_GPIO_Init(GPIOH, &init);
    
    LED_ALL_OFF;
}

main.c:

#include "led.h"

void Delay(__IO uint32_t i)
{
    for (; i != 0; i--);
}

int main(void)
{
    LED_GPIO_Config();
    
    while (1)
    {
        LED_RED;
        Delay(0xfffff);
        
        LED_GREEN;
        Delay(0xfffff);
        
        LED_BLUE;
        Delay(0xfffff);
        
        LED_YELLOW;
        Delay(0xfffff);
        
        LED_PURPLE;
        Delay(0xfffff);
        
        LED_CYAN;
        Delay(0xfffff);
        
        LED_WHITE;
        Delay(0xfffff);
        
        LED_ALL_OFF;
        Delay(0xfffff);
    }
}

后记:STM32Cube_FW_F4_V1.16.0固件库与我学的教程中的旧版固件库有很大不同,代码上改动非常明显。一边编,一边查着改。

 

转载于:https://www.cnblogs.com/repeae/p/7052705.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值