天天看点

STM32的LED闪烁实验

            对于想学习STM32的新手来说,点亮LED灯是学习STM32的第一步,

前面几篇博文我已经大概总结了什么是STM32,以及基于kile5.23版本的模板

工程的创建。

  下面我就把点亮STM32 的LED灯过程分享一下:

    首先你的了解以下俩点:

    1、 了解 STM32 用有几种 GPIO 模式。

STM32的LED闪烁实验

    2、 怎么学会设置 STM32 的 GPIO 输出控制 LED 灯。

首先我们来看一下我们开发板上面 LED 的接线图:

STM32的LED闪烁实验
STM32的LED闪烁实验

从上面的图,我们可以看到 LED 灯是接到单片机的 PC 口的 PC0 到 PC7。而

点 亮一盏LED的原理就是把相应LED接到单片机的相应的IO口输出低电平, IO

口 输出为高电平就能够熄灭 LED(由图中得LED灯都是共阳极接高电平,所以

当所接开发板的引脚输出低电平时,有电流流过LED灯,灯才亮)。

了解了这些以后就可以开始动工了》

     ①创建一个空的工程,

     ②初始化GPIO。

#ifndef _led_H
#define _led_H
#include "stm32f10x.h"
#define LED GPIO_Pin_All	//管脚宏定义
void LED_Init(void);
void led_display(void);

#endif 
           
#include "led.h"

/*******************************************************************************
* 函 数 名         : delay
* 函数功能		   : 延时函数,delay(6000000)延时约1s
* 输    入         : i
* 输    出         : 无
*******************************************************************************/
void delay(u32 i)	  
{
	while(i--);
}

/*******************************************************************************
* 函 数 名         : LED_Init
* 函数功能		   : LED初始化函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void LED_Init()	  //端口初始化
{
	GPIO_InitTypeDef GPIO_InitStructure; //声明一个结构体变量,用来初始化GPIO

	SystemInit();	//时钟初始化
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

	/*  配置GPIO的模式和IO口 */
	GPIO_InitStructure.GPIO_Pin=LED;  //选择你要设置的IO口
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;	 //设置推挽输出模式
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;	  //设置传输速率
	GPIO_Init(GPIOC,&GPIO_InitStructure); 	   /* 初始化GPIO */
}

/*******************************************************************************
* 函 数 名         : led_display
* 函数功能		   : LED显示函数  LED闪烁
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void led_display()
{
	GPIO_SetBits(GPIOC,LED);
	delay(6000000);//延时约为1s
	GPIO_ResetBits(GPIOC,LED);
	delay(6000000);
           

    ③主函数写出要实现的功能

int main()
{	
	LED_Init();		//LED端口及时钟初始化  
	while(1)
	{
		led_display(); //led显示			
	}	
}
           

完整代码在我的资源里上传了,可以免费下载。

继续阅读