回覆列表
  • 1 # 玩轉嵌入式

    用微控制器來點亮一個LED燈,是非常基本的操作,是初學者第一個、而且是必經歷的小專案。在用STM32微控制器實現點燈的時候,需要將埠設定為輸出,並且要輸出高電平或者低電平。下面詳細講解。

    下圖是微控制器驅動LED的電路原理圖,採用灌電流的方式,當微控制器輸出低電平時,LED被點亮;當微控制器輸出高電平時,LED熄滅。

    如果要讓LED發光,微控制器就要輸出低電平。STM32微控制器暫存器的配置不同於51微控制器,需要開啟埠的時鐘、需要設定埠的方向、輸出型別等。配置程式如下圖所示。

    上圖中使用STM32的PA4來控制LED,首先將GPIOA的時鐘開啟,再將埠配置為推輓輸出,上圖中速度設定為了50MHz。這裡採用的庫函式。

    將埠配置後以後,就可以控制埠的輸出了,如果埠輸出1,即高電平則LED處於熄滅狀態;如果埠輸出低電平,則LED處於點亮狀態;使用庫函式寫的程式如下。

    #define LED1_ON GPIO_ResetBits(GPIOA,GPIO_Pin_4)//PA4 = 0

    #define LED1_OFF GPIO_SetBits(GPIOA,GPIO_Pin_4) //PA4 = 1

    透過宏定義將LED1_ON定義為點燈;將LED1_OFF定義為關燈。在主函式中呼叫該宏定義即可實現LED的點亮和熄滅。

    如果要實現閃爍功能,可以透過延時來實現,也可以透過定時器來實現。

  • 2 # 科技電小二

    對於微控制器程式設計而言,點亮LED是微控制器程式設計的入門操作。

    對於STM32,本人習慣使用暫存器操作,所以本文將以KEIL4.12作為開發環境,以暫存器操作試驗為程式設計思路講解。

    先建立一個工程名為LED_Project,在keil的右側的工程視窗,選中專案,滑鼠右手單擊,出現如下圖所示

    選擇Device項,選擇對應型號,

    在工程中新增對應的暫存器版本的支援檔案,因只需要LED相關的暫存器操作,則只需要RCC,GPIO的韌體庫檔案,

    建立main.c檔案,幷包含 #include <stm32f10x_lib.h>標頭檔案

    首先我們假設當PA4引腳為高電平時,LED燈亮,為低電平時,LED等滅,

    設定LED的宏定義,如下:

    #define LED_ON GPIOA->ODR|=(1<<4);

    #define LED_OFF GPIOA->ODR&=~(1<<4);

    定義一個LED的GPIO初始化函式,

    如上圖所示,

    RCC->APB2ENR|=1<<2; 是PA埠的時鐘使能

    我們使用PA4作為LED輸出控制埠,配置PA4作為推輓輸

    設定led燈1秒鐘亮滅一次,俗稱呼吸燈函式如下:

    設定LED燈亮滅時間漸變,函式如下圖所示

    如上圖所示,函式中使用for迴圈,完成一個led閃爍頻率從最快10ms間隔閃爍一次,漸漸增大時間,最後到1S閃爍一次,再逐漸減小間隔時間,閃爍頻率加快。

    LED閃爍的實現效果還可以進行設計,大家可以自由的進行發揮程式碼的魅力和能力

    以上是問題的粗略解答,難免會有遺漏

  • 中秋節和大豐收的關聯?
  • 為啥有些捧韓信的人喜歡無限貶低項羽?