那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于STM32F407庫函數開發按鍵控制LED燈

CHANBAEK ? 來源:小浩筆記 ? 作者:一紙HH ? 2023-05-19 15:09 ? 次閱讀

按鍵控制燈的亮與滅的效果圖:

圖片

一、寄存器開發與庫函數開發的優缺點

1、寄存器開發

缺點:

(1)開發難度大,查閱相關手冊比較多

(2)開發效率相對低,產品周期長

(3)可維護性較差

(4)可移植性、閱讀性差

優點:

運行效率高。

2、庫函數開發

優點:

(1)開發難度小,有庫函數封裝,即可實現功能

(2)開發效率高,產品周期短

(3)可維護性高

(4)可移植性、閱讀性強

缺點:

運行效率相對寄存器低一些。

STM32庫函數實際是ST公司對寄存器開發封裝。

二、LED庫函數開發

LED庫開發要添加庫文件:stm32f4xx_gpio.c

(1)原理圖可參看上篇文章:入門篇 | STM32F407寄存器開發--點燈

(2)打開GPIOF組時鐘,也叫做使能F組時鐘(STM32當中外設的時鐘不打開,降低功耗)

(3)設置GPIOF9 引腳為輸出模式 輸出推挽 上拉 速度

/*
引腳說明:
LED0連接在PF9引腳
PF9輸出VCC(1),燈滅
PF9輸出GND(0),燈亮
*/

void Led_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct;
  
  //使能GPIO F組時鐘,
  //RCC_AHB1ENR |= (0x01<<5);
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
  
  
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; //引腳9
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //輸出模式
  GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //快速
  GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉
  GPIO_Init(GPIOF, &GPIO_InitStruct);

}

(4)通過置位或者復位函數控制引腳電平來點燈

GPIO_SetBits( ) :置位(1GPIO_ResetBits( )復位(0
int main(void)
{
  //LED燈初始化
  Led_Init();
  
  while(1)
  {
    GPIO_SetBits(GPIOF,GPIO_Pin_9); //PF9置1 燈滅
    delayms(1000);
    GPIO_ResetBits(GPIOF,GPIO_Pin_9);//PF9置0 燈亮
    delayms(1000);
  }
  return 0;
}

是不是比起寄存器點燈方便多啦!!!

二、按鍵庫函數開發

按鍵庫開發要添加庫文件:stm32f4xx_gpio.c

(1)理解按鍵輸入原理圖

按鍵S1連接PA0,

當按鍵S1按下時,PA0為低電平

當按鍵S1未按下時,PA0為高電平

圖片

補充:由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動,為了不產生這種現象而作的措施就是按鍵消抖。抖動時間的長短由按鍵的機械特性決定,一般為5ms~10ms。我們延時消抖即可

(2)打開GPIOA組時鐘,也叫做使能A組時鐘(STM32當中外設的時鐘不打開,降低功耗。

(3)設置GPIOA0 引腳為模式 上拉

/*
引腳說明:
KEY0(S1) -- PA0
*/
void Key_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能GPIO A組時鐘,
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0; //引腳0
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN; //輸入模式
  GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉
  GPIO_Init(GPIOA, &GPIO_InitStruct);
}

(4)通過函數獲取引腳電平(主函數使用此函數)

GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)

結合上面led庫函數點燈來實現按鍵控制燈的亮與滅

int main(void)
{
  //LED燈初始化
  Led_Init();
  Key_Init();
    
  while(1)
  {
    
    if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == Bit_RESET)//判斷是否按下
    {
      delayms(15); //延時消抖
      
      if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0)//判斷是否按下
      {
        while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0);//按鍵按下
        GPIO_ToggleBits(GPIOF, GPIO_Pin_9);//引腳狀態變更
      }
    }
  
  }
  return 0;
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6043

    文章

    44621

    瀏覽量

    638625
  • led燈
    +關注

    關注

    22

    文章

    1592

    瀏覽量

    108420
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    121199
  • STM32
    +關注

    關注

    2272

    文章

    10924

    瀏覽量

    357608
  • STM32F407
    +關注

    關注

    15

    文章

    188

    瀏覽量

    29654
收藏 人收藏

    評論

    相關推薦

    STM32F407 外部中斷配置步驟

    介紹STM32F407外部中斷配置步驟,以按鍵為例,實現外部中斷配置,使用按鍵觸發中斷進行LED控制
    的頭像 發表于 07-06 14:31 ?2083次閱讀
    <b class='flag-5'>STM32F407</b> 外部中斷配置步驟

    使用HAL庫函數外部中斷功能實現按鍵控制LED

    STM32開發,使用HAL庫函數外部中斷功能實現按鍵控制LED1 概述1.1 資源概述1.2引
    發表于 08-13 09:16

    利用按鍵控制LED的亮滅

    STM32F4工程--IO口--按鍵控制點燈程序(庫函數) ----芯片:STM32F429IGT6本文章介紹使用STM32F4單片機,利用
    發表于 08-24 07:18

    如何使用HAL庫函數實現按鍵控制LED

    如何使用HAL庫函數實現按鍵控制LED
    發表于 11-16 06:25

    請問STM32F407VET6怎么實現按鍵控制LED狀態?

    請問STM32F407VET6怎么實現按鍵控制LED狀態?
    發表于 11-18 06:10

    如何使用庫函數的方法用按鍵控制一個LED的取反?

    如何使用庫函數的方法用按鍵控制一個LED的取反?
    發表于 11-25 08:52

    怎樣通過庫函數操作stm32f407上的按鍵LED以及蜂鳴器的控制

    如何對LED進行初始化配置呢?怎樣通過庫函數操作stm32f407上的按鍵LED以及蜂鳴器
    發表于 01-26 07:33

    STM32F407 UCOS III實驗

    STM32F407 UCOS III實驗,介紹基于STM32F407的UCOSIII實例,參考下
    發表于 09-22 14:08 ?82次下載

    STM32F407 開發板原理圖

    STM32F407 開發板原理圖
    發表于 09-22 16:12 ?393次下載
    <b class='flag-5'>STM32F407</b> <b class='flag-5'>開發</b>板原理圖

    STM32F4工程--IO口--按鍵控制點燈程序

    STM32F4工程--IO口--按鍵控制點燈程序(庫函數) ----芯片:STM32F429IGT6本文章介紹使用STM32F4單片機,利用
    發表于 11-29 14:06 ?13次下載
    <b class='flag-5'>STM32F</b>4工程--IO口--<b class='flag-5'>按鍵控制</b>點燈程序

    STM32F407通過按鍵控制LED和蜂鳴器

    學習STM32F4的基本知識,掌握I/O口的基本操作,了解MDK開發環境使用方法之后,通過學習LED,BEEP,KEY基本模塊的應用實例,最終設計出通過按鍵控制
    發表于 11-29 15:51 ?31次下載
    <b class='flag-5'>STM32F407</b>通過<b class='flag-5'>按鍵控制</b><b class='flag-5'>LED</b>和蜂鳴器

    STM32F407學習記錄---按鍵檢測實驗

    stm32f407上的按鍵實現控制LED以及蜂鳴器,實現的功能如下:KEY0鍵控制
    發表于 12-01 18:06 ?14次下載
    <b class='flag-5'>STM32F407</b>學習記錄---<b class='flag-5'>按鍵</b>檢測實驗

    STM32F407開發板用戶手冊】第19章 STM32F407的GPIO應用之按鍵FIFO

    STM32F407開發板用戶手冊】第19章 STM32F407的GPIO應用之按鍵FIFO
    發表于 12-05 15:21 ?39次下載
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>開發</b>板用戶手冊】第19章 <b class='flag-5'>STM32F407</b>的GPIO應用之<b class='flag-5'>按鍵</b>FIFO

    STM32】基于STM32F407寄存器方式點亮LED流水燈

    目錄一、通過寄存器方式點亮1.二、通過庫函數方式點亮三級目錄本文使用原子STM32F407最小系統板示例核心芯片為:STM32F407ZGT6一、通過寄存器方式點亮1.二、通過庫函數
    發表于 12-08 17:51 ?7次下載
    【<b class='flag-5'>STM32</b>】基于<b class='flag-5'>STM32F407</b>寄存器方式點亮<b class='flag-5'>LED</b>流水燈

    stm32按鍵控制led亮滅

    stm32按鍵控制led亮滅? 在嵌入式系統中,硬件按鍵常常被用作開關輸入,控制
    的頭像 發表于 09-02 17:05 ?1.1w次閱讀
    百家乐路纸发表区| 百家乐赌场信息| 威尼斯人娱乐城澳门赌场| 足球开户| 皇冠现金网是真的吗| 百家乐官网高手qq| 游艇会百家乐官网的玩法技巧和规则 | 七胜百家乐官网娱乐场| 现场百家乐电话投注| bet365提款多久到账| 百家乐官网娱乐网址| 百家乐官网网站| 扬州市| 百家乐园会员注册| bet365ok| 百家乐官网超级市场| 百家乐出千桌| 百家乐官网总厂在哪里| 百家乐现金平台排名| 新葡京娱乐城官方网站| 澳门百家乐官网赌场娱乐网规则 | 新化县| 网上百家乐追杀| 德州扑克单机| 月华百家乐官网的玩法技巧和规则| 中原百家乐的玩法技巧和规则| 正阳县| 澳门百家乐赢钱窍门| 世界各国赌场美女| 百家乐网投开户| 爱赢娱乐城开户| 国美百家乐官网的玩法技巧和规则| 大发888娱乐城电脑版下载 | 威尼斯人娱乐场注册| 订做百家乐官网桌子| 威尼斯人娱乐城信誉最好| 澳门百家乐官网玩法与游戏规则 | 网络百家乐官网赌博视频| 百家乐在线娱乐平台| 真钱百家乐官网公司哪个好| 百家乐破解赌戏玩|