STM32F103实验一:点亮LED灯

STM32F103点亮LED

这条博客是基于正点原子mini板的代码。

创建文件夹、源文件以及设置路径就不讲了,直接附上代码。

库函数配置步骤

  • 在模板中新建文件夹用于存放 led.cled.h文件
  • 设置好 led.cled.h 文件的路径
  • led.h 文件中设置好 __LED_H 宏定义和引脚定义
  • led.c 中配置好初始化函数 LED_Init 函数体
  • main.c文件中应用相应函数体,并设置延时循环体
  • 如果不想创建 led.cled.h 文件,则可以直接在主函数中定义功能函数

方法一:将功能函数分化出来,另外建立文件夹。

1、led.h 文件配置

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

#define LED0 PAout(8)	// 用位操作定义引脚PA8
#define LED1 PDout(2)	

void LED_Init(void);
	 				    
#endif

2、led.c文件配置

# include "led.h"

void LED_Init(void)
{
 GPIO_InitTypeDef  GPIO_InitStructure; 	//引用GPIO_Init 函数结构体声明
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //设置端口使能时钟
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
 
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		//输出推挽模式
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	   //  I/O口输出速度
 	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;		//配置引脚
 GPIO_Init(GPIOA, &GPIO_InitStructure);		//引脚初始化		 
 GPIO_SetBits(GPIOA,GPIO_Pin_8);	   //高电平输出

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;	    		
 GPIO_Init(GPIOD, &GPIO_InitStructure);	  				
 GPIO_SetBits(GPIOD,GPIO_Pin_2); 						
}

3、main.c函数配置

#include "led.h"
#include "delay.h"
#include "sys.h"

int main(void)
{
	delay_init();	// 引用模板文件里已经定义好的延时函数
	LED_Init(); 	 // 引用我们前面创立的I/O初始化函数
	while(1)
	{
		LED0=0;	//设置I/O口初始参数
		LED1=1;	
		delay_ms(300);	// 设置延时参数
		LED0=1;
		LED1=0;
		delay_ms(300);	
	}
}

方法二:直接在主函数中配置功能函数

main.c文件

# include <stm32f10x.h>
# include "delay.h"

int main(void)
{
	GPIO_InitTypeDef  GPIO_InitStruct;
	delay_init();
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
	
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8;
	GPIO_Init(GPIOA,&GPIO_InitStruct);
	GPIO_ResetBits(GPIOA, GPIO_Pin_8);
	
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;
	GPIO_Init(GPIOD,&GPIO_InitStruct);
	GPIO_ResetBits(GPIOD, GPIO_Pin_2);
	
	while(1)
	{
		GPIO_SetBits(GPIOA, GPIO_Pin_8);
		GPIO_ResetBits(GPIOD, GPIO_Pin_2);
		delay_ms(300);	 
		
		GPIO_SetBits(GPIOD, GPIO_Pin_2);
		GPIO_ResetBits(GPIOA, GPIO_Pin_8);
		delay_ms(300);	
		
	}
}

猜你喜欢

转载自blog.csdn.net/qq_44713454/article/details/88791081