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