STM32點亮LED(學習IO口配置輸出)
阿新 • • 發佈:2020-08-29
引言
點亮LED實際上是為了學習如何配置IO口使其輸出高低電平。這一節的內容相當於學習C/C++時的hello world!
。
準備環節
在keil5工程根目錄新建資料夾HARDWARE
。在新建的資料夾中新建檔案 led.h
和 led.c
。
同時需要將上述檔案以及相應的FWLib下的檔案加入工程,這裡不再贅述。
根目錄下各檔案的呼叫關係如下:
# 編碼
步驟:
- 使能所在匯流排的時鐘
- 配置IO口資訊
- 初始化IO口
- main函式內呼叫
led.h
#ifndef __LED_H #define __LED_H #include "sys.h" #define LED0 PEout(5)// PE5 #define LED1 PEout(6)// PE6 這兩行均為位帶操作,這裡不再展開 void LED_Init(void); //宣告LED的初始化操作 #endif
led.c
#include "led.h" void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; //定義IO口配置資訊的結構體 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //初始化所在匯流排的時鐘 //以下三行為IO口配置資訊 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6; //IO口位置資訊 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //IO口輸出模式 輸出模式詳見最後補充 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口輸出速度 GPIO_Init(GPIOE, &GPIO_InitStructure); //利用上述資訊初始化IO口 GPIO_SetBits(GPIOE, GPIO_Pin_5); GPIO_SetBits(GPIOE, GPIO_Pin_6); //點亮相應IO口的LED // GPIO_ResetBits(GPIOB, GPIO_Pin_5); 該函式可以熄滅相應IO口的LED }
main.c
#include "led.h"
#include "delay.h" //提供了相關的延時函式
int main(void){
delay_init(); //延時函式初始化
LED_Init(); //led.c內編寫的該函式
while(1){ //while內的函式實現了每隔300ms改變一次兩LED的亮滅狀態
LED0 = 1;
LED1 = 1;
delay_ms(300);
LED0 = 0;
LED1 = 0;
delay_ms(300);
}
}
補充
GPIO口的八種輸入輸出模式見如下連結:https://www.cnblogs.com/Rane/p/11829471.html