天天看點

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顯示			
	}	
}
           

完整代碼在我的資源裡上傳了,可以免費下載下傳。

繼續閱讀