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固件库与我学的教程中的旧版固件库有很大不同,代码上改动非常明显。一边编,一边查着改。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM