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


引言

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




准備環節

在keil5工程根目錄新建文件夾HARDWARE。在新建的文件夾中新建文件 led.hled.c

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

根目錄下各文件的調用關系如下:
dTv5lR.jpg




# 編碼

步驟:

  • 使能所在總線的時鍾
  • 配置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口的八種輸入輸出模式見如下鏈接:\(\color{#0000FF}{https://www.cnblogs.com/Rane/p/11829471.html}\)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM