STM32单片机基础之GPIO输出

说明:

这里说明一下,STM32有很多文件,我这里上传的只是部分配置文件,不是所有的文件。

程序:

main.c文件

#include "system.h"
#include "led.h"


/*******************************************************************************
* 函 数 名         : delay
* 函数功能		   : 延时函数,通过while循环占用CPU,达到延时功能
* 输    入         : i
* 输    出         : 无
*******************************************************************************/
void delay(u32 i)
{
	while(i--);
}

/*******************************************************************************
* 函 数 名         : main
* 函数功能		   : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
int main()
{
	LED_Init();					//配置LED,相关初始化
	while(1)
	{
		LED1=!LED1;
		LED2=!LED2;
		delay(6000000);		//大概0.5s闪烁一次
	}
}
led.h 文件

#ifndef _led_H
#define _led_H

#include "system.h"

/*  LED时钟端口、引脚定义 */
#define LED1_PORT 			GPIOB   
#define LED1_PIN 			GPIO_Pin_5
#define LED1_PORT_RCC		RCC_APB2Periph_GPIOB

#define LED2_PORT 			GPIOE   
#define LED2_PIN 			GPIO_Pin_5
#define LED2_PORT_RCC		RCC_APB2Periph_GPIOE


#define LED1 PBout(5)  	
#define LED2 PEout(5)  	


void LED_Init(void);


#endif
led.c文件

#include "led.h"

/*******************************************************************************
* 函 数 名         : LED_Init
* 函数功能		   : LED初始化函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void LED_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;												//定义结构体变量
	
	RCC_APB2PeriphClockCmd(LED1_PORT_RCC|LED2_PORT_RCC,ENABLE);	//打开对应外设的时钟,这里有两个,一个GPIOB一个GPIOE
	
	GPIO_InitStructure.GPIO_Pin=LED1_PIN;  											//选择你要设置的IO引脚
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;	 						//设置推挽输出模式
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;	 				    //设置传输速率
	
	GPIO_Init(LED1_PORT,&GPIO_InitStructure); 	   							/* 初始化GPIO */
	//GPIO_SetBits(LED1_PORT,LED1_PIN);  												  //这个函数将LED端口拉高,熄灭所有LED
	
	//因为前面引脚对GPIO结构体进行了设置,所以这里的输出模式、速度可以不用再配置
	GPIO_InitStructure.GPIO_Pin=LED2_PIN;  											//选择你要设置的IO口
	GPIO_Init(LED2_PORT,&GPIO_InitStructure); 	 							  /* 初始化GPIO */
	//GPIO_SetBits(LED2_PORT,LED2_PIN);   												//这个函数将LED端口拉高,熄灭所有LED
}



运行结果:

两个LED灯0.5s闪烁一次。

VID_20220411_231927

你可能感兴趣的:(STM32单片机之菜鸟阶段,单片机)