1. 程式人生 > 實用技巧 >STM32點亮LED(學習IO口配置輸出)

STM32點亮LED(學習IO口配置輸出)

引言

點亮LED實際上是為了學習如何配置IO口使其輸出高低電平。這一節的內容相當於學習C/C++時的hello world!




準備環節

在keil5工程根目錄新建資料夾HARDWARE。在新建的資料夾中新建檔案 led.hled.c

同時需要將上述檔案以及相應的FWLib下的檔案加入工程,這裡不再贅述。

根目錄下各檔案的呼叫關係如下:




# 編碼

步驟:

  • 使能所在匯流排的時鐘
  • 配置IO口資訊
  • 初始化IO口
  • main函式內呼叫

led.h

#ifndef __LED_H
#define __LED_H	 
#include "sys.h"

#define LED0 PEout(5)// PE5
#define LED1 PEout(6)// PE6	這兩行均為位帶操作,這裡不再展開

void LED_Init(void);	//宣告LED的初始化操作

#endif

led.c

#include "led.h"

void LED_Init(void)
{

	GPIO_InitTypeDef  GPIO_InitStructure;	//定義IO口配置資訊的結構體

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);	//初始化所在匯流排的時鐘
    //以下三行為IO口配置資訊
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6;	//IO口位置資訊
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;		//IO口輸出模式	輸出模式詳見最後補充
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		//IO口輸出速度
	
    GPIO_Init(GPIOE, &GPIO_InitStructure);	//利用上述資訊初始化IO口
    
	GPIO_SetBits(GPIOE, GPIO_Pin_5);
	GPIO_SetBits(GPIOE, GPIO_Pin_6);		//點亮相應IO口的LED
//    GPIO_ResetBits(GPIOB, GPIO_Pin_5);	該函式可以熄滅相應IO口的LED
	
}

main.c

#include "led.h"
#include "delay.h"	//提供了相關的延時函式

int main(void){
	delay_init();	//延時函式初始化
	LED_Init();		//led.c內編寫的該函式
	
	while(1){		//while內的函式實現了每隔300ms改變一次兩LED的亮滅狀態
		LED0 = 1;
		LED1 = 1;
		delay_ms(300);
		LED0 = 0;
		LED1 = 0;
		delay_ms(300);
	}
}




補充

GPIO口的八種輸入輸出模式見如下連結:https://www.cnblogs.com/Rane/p/11829471.html