天天看點

STM32F429第三篇之GPIO的模闆工程建構前言建構步驟實驗結果

文章目錄

  • 前言
  • 建構步驟
  • 實驗結果

前言

本篇承接<STM32F429第一篇之建立一個HAL庫模闆工程>。實作模闆工程的應用,主要參考資料:

  • 正點原子.STM32F429開發指南——HAL庫版本

建構步驟

  1. 通過參考上一篇文章,建立一個HAL庫模闆工程。如下圖所示:
STM32F429第三篇之GPIO的模闆工程建構前言建構步驟實驗結果
  1. 在 Template 檔案夾中,新進 hardware 檔案夾。如下圖所示:
    STM32F429第三篇之GPIO的模闆工程建構前言建構步驟實驗結果
  2. 将 Template 檔案夾名稱改成LED.
    STM32F429第三篇之GPIO的模闆工程建構前言建構步驟實驗結果
  3. 定位到 \LED\user 。删除掉多餘的檔案,剩餘:
    STM32F429第三篇之GPIO的模闆工程建構前言建構步驟實驗結果
  4. 将三個檔案名為 Template 的檔案 全部修改名稱為:LED。如下圖所示:
    STM32F429第三篇之GPIO的模闆工程建構前言建構步驟實驗結果
  5. 輕按兩下 LED.uvprojx 檔案,打開項目:
    STM32F429第三篇之GPIO的模闆工程建構前言建構步驟實驗結果
  6. 點選 Manage Project Items 按鈕,如下圖所示:
STM32F429第三篇之GPIO的模闆工程建構前言建構步驟實驗結果

8. 作如下圖修改:

STM32F429第三篇之GPIO的模闆工程建構前言建構步驟實驗結果
  1. 在HARDWARE處右擊,選擇 Add New Item to Group ‘HARDWARE’.
    STM32F429第三篇之GPIO的模闆工程建構前言建構步驟實驗結果
  2. 選擇C File,名稱為led,位置選擇在hardware檔案夾,最後點選 Add 。如下圖所示:
    STM32F429第三篇之GPIO的模闆工程建構前言建構步驟實驗結果
    注意:位置不是預設的user檔案夾
  3. 類似的,建立led的頭檔案。如下圖所示:
    STM32F429第三篇之GPIO的模闆工程建構前言建構步驟實驗結果
  4. 添加頭檔案到工程,如下圖所示:
    STM32F429第三篇之GPIO的模闆工程建構前言建構步驟實驗結果
  5. 編寫LED初始化檔案:

頭檔案:

#ifndef _LED_H
#define _LED_H

extern void LED_Init(void);

#endif

           

c檔案:

#include "led.h"
#include "stm32f4xx.h"

void LED_Init(void)
{
    GPIO_InitTypeDef GPIO_Initure;
    __HAL_RCC_GPIOB_CLK_ENABLE();           //開啟GPIOB時鐘
	
    GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1; //PB1,0
    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;  //推挽輸出
    GPIO_Initure.Pull=GPIO_PULLUP;          //上拉
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;     //高速
    HAL_GPIO_Init(GPIOB,&GPIO_Initure);
	
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);	//PB0置1,預設初始化後燈滅
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);	//PB1置1,預設初始化後燈滅
}

           
  1. 編寫main.c檔案
#include "sys.h"
#include "delay.h"
#include "led.h"

int main(void)
{

    HAL_Init();                     //初始化HAL庫
    Stm32_Clock_Init(360,25,2,8);   //設定時鐘,180Mhz
    delay_init(180);                //初始化延時函數
    LED_Init();                     //初始化LED
    while(1)
    {


        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET); //LED0對應引腳PB1拉低,亮,等同于LED0(0)
        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);   //LED1對應引腳PB0拉高,滅,等同于LED1(1)

        delay_ms(500);			//延時500ms
        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);   //LED0對應引腳PB1拉高,滅,等同于LED0(1)
        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET); //LED1對應引腳PB0拉低,亮,等同于LED1(0)
        delay_ms(500);                                      //延時500ms

    }
}


           
  1. 編譯下載下傳。

實驗結果

兩個LED燈,同時閃爍,周期為1s。如下圖所示。

STM32F429第三篇之GPIO的模闆工程建構前言建構步驟實驗結果
STM32F429第三篇之GPIO的模闆工程建構前言建構步驟實驗結果

繼續閱讀