對于想學習STM32的新手來說,點亮LED燈是學習STM32的第一步,
前面幾篇博文我已經大概總結了什麼是STM32,以及基于kile5.23版本的模闆
工程的建立。
下面我就把點亮STM32 的LED燈過程分享一下:
首先你的了解以下倆點:
1、 了解 STM32 用有幾種 GPIO 模式。
2、 怎麼學會設定 STM32 的 GPIO 輸出控制 LED 燈。
首先我們來看一下我們開發闆上面 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顯示
}
}
完整代碼在我的資源裡上傳了,可以免費下載下傳。