在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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;
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6037

    文章

    44564

    瀏覽量

    635978
  • led燈
    +關注

    關注

    22

    文章

    1592

    瀏覽量

    108069
  • 寄存器
    +關注

    關注

    31

    文章

    5355

    瀏覽量

    120541
  • STM32
    +關注

    關注

    2270

    文章

    10904

    瀏覽量

    356397
  • STM32F407
    +關注

    關注

    15

    文章

    188

    瀏覽量

    29495
收藏 人收藏

    評論

    相關推薦

    STM32F407 外部中斷配置步驟

    介紹STM32F407外部中斷配置步驟,以按鍵為例,實現外部中斷配置,使用按鍵觸發中斷進行LED控制
    的頭像 發表于 07-06 14:31 ?2009次閱讀
    <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次下載

    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開發板用戶手冊】第1章?? 初學STM32F407的準備工作

    STM32F407開發板用戶手冊】第1章?? 初學STM32F407的準備工作
    發表于 12-04 13:36 ?75次下載
    【<b class='flag-5'>STM32F407</b><b class='flag-5'>開發</b>板用戶手冊】第1章?? 初學<b class='flag-5'>STM32F407</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次閱讀
    主站蜘蛛池模板: 日本高清视频网站www| 高清视频在线播放| 99久久免费精品视频| www.亚洲色图.com| 91桃色国产线观看免费| 亚洲黄色一区二区| 色综合图片二区150p| 免费一级毛片在线播放| 加勒比在线免费视频| 在线观看免费观看| 一区二区在线免费观看| 欧美另类videos| 在线色网站| 中文字幕一区精品欧美| 性欧美xxxx视频| 日本成人免费网站| 黄色免费小视频| 在线视频精品视频| 免费一级毛片在线播放不收费| 400部大量精品情侣网站| 一级毛片西西人体44rt高清 | 毛色毛片| 99久久网站| 黄色特级录像| 午夜影音| 特黄特黄视频| 久久99精品久久久久久久野外| 96一级毛片| 国内自拍2021| 丝袜美女被c| 特黄特级毛片免费视| 久久夜色精品国产亚洲| 欲色淫香| 操欧洲美女| 国产精品污视频| 日本资源在线观看| 国产精品美女免费视频观看| 色综合色综合| 亚洲偷偷| 日本在线观看成人小视频| 丁香婷婷在线视频|