日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

stm32核心板可以点亮灯吗_STM32库函数点亮LED

發布時間:2025/4/5 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32核心板可以点亮灯吗_STM32库函数点亮LED 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

很多碼農寫出的第一個程序是"Hello World!",因為這個程序簡單容易上手,能給你自信心,讓你更加堅定學習編程的信念;單片機也是如此,相信很多單片機老師教給你的第一個程序就是點亮一個LED,今天我們就來分享如何使用STM32F103點亮第一個LED燈。

注:本程序使用單片機為STM32F103VET6

一 單片機的硬件電路連接

由原理圖我們可以看到,D2(LED)連接在名稱為PE1的IO口,且PE1輸出高電平,D2點亮,PE1輸出低電平,D2熄滅。

二 程序書寫順序

1 使能PE1所在的時鐘總線

2 初始化LED相關函數

3 設置PE1相應的IO口輸出函數

可能有同學就要問了,為什么STM32每次寫程序前,都要使能相應時鐘函數呢?而同為單片機的51單片機就不需要使能,每個IO口可以直接拿過來使用?

這是因為隨著電子集成度的提高,功耗和發熱問題日漸嚴重,芯片廠家也非常頭疼這個問題,于是就針對STM32這類的單片機開發出了使能功能。

簡單的理解:把單片機理解為很多水管的集合,我們要使用A水管,就先把A水龍頭打開,就可以在獲取A水管的水了。如果,全部的水管都打開,就會造成水資源的浪費。單片機也是這個道理,用哪個就使能哪個功能的IO,只有這樣,才會使芯片功耗達到最低。

三 程序代碼詳解

1 使能GPIO E

因為PE1在GPIO E的端口上,所以要使能GPIO E,在工程樹中找到rcc.c文件,打開它找到RCC_APB2PeriphClockCmd函數,并在STM32F1庫文件使用手冊中找到這個函數,理解其用法與參數數據。

所寫函數:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE)

找到參數1并且查看其取值范圍,可見GPIOE在其取值范圍內,打開GPIOE的開關,所以將它設置為ENABLE,

2 初始化GPIO_InitT

GPIO_InitTypeDef函數功能為初始化,繼續查看函數庫文件使用說明

在這里我們要構造一個函數體

GPIO_InitTypeDef GPIO_InitStructure;

將GPIO_InitTypeDef重新定義命名為GPIO_InitStructure;由使用說明可見,GPIO_Init函數要定義說明3個值,GPIO_PIN(IO口引腳標號) GPIOSpeed(GPIO輸出速度)GPIOMode(GPIO輸出模式)。在這里我們要將其設置為推挽輸出,因為我們要點亮LED,所以需要大電流,而其輸出特性剛好滿足我們的要求,所以設置為推挽輸出。

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //

將其設置好以后,繼續給GPIO_Init的兩個參數賦值,參數1為哪一個GPIO外設,我們將其寫為GPIOE,參數2為GPIO_InitStructure,所以我們的函數這樣子寫:

GPIO_Init(GPIOE, &GPIO_InitStructure);

將設置寫入GPIO_InitStructure中,用&將其寫入。

根據硬件原理圖,我們要將其寫高電平才會點亮LED,所以要將GPIOE PIN1口寫高電平,在這里我們用GPIO_SetBits函數,SetBit函數為置1函數,RESetBit函數為置0函數。

這個函數可以將相應IO口拉高,讓其為高電平,根據參數相關設置,我們寫入GPIOE PIN1函數即可。

最后再主函數中調用相關函數即可點亮LED

源碼分享:

#include "LED.h"//引用LED頭文件#include "stm32f10x.h"void LED_Init(void)//LED初始化函數{ GPIO_InitTypeDef GPIO_InitStructure;//構造結構體 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//使能GPIOE時鐘 //指定GPIO成員變量 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOE,&GPIO_InitStructure); GPIO_ResetBits(GPIOE,GPIO_Pin_1);//默認輸出低電平,默認不點亮}#include "stm32f10x.h"#include "delay.h"#include "LED.h"int main(void){ LED_Init();delay_init();while(1){ GPIO_SetBits(GPIOE,GPIO_Pin_1); delay_ms(500); GPIO_ResetBits(GPIOE,GPIO_Pin_1); delay_ms(500); }}

總結

要想點亮一個LED,其本質操作為設置其相應的IO口,只有學會了設置和操作IO口,大多數問題都能迎刃而解,設置IO口的關鍵就是設置哪一個IO口,輸出還是輸入?以什么模式輸出和輸入?輸出和輸入的速度又是多少?最后別忘記了,操作IO口,首先要使能相應的時鐘。

總結

以上是生活随笔為你收集整理的stm32核心板可以点亮灯吗_STM32库函数点亮LED的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。