<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      歡迎來(lái)到SFWR的博客

      訓(xùn)練題——按鍵部分

      Author:Cherry_Ywj

      1. 按鍵讀取

      CubeMx 配置:

      • 設(shè)置任意一 GPIO 口為GPIO_Input

      • 上拉和下拉

        這一步非常重要!如果你期望按鍵按下時(shí)是低電平,那么就需要上拉。如果沒(méi)有上拉,此時(shí)輸入引腳呈高阻態(tài),時(shí)而會(huì)檢測(cè)到高電平,時(shí)而會(huì)檢測(cè)到低電平。

      HAL 庫(kù)相關(guān)函數(shù)

      //讀取引腳狀態(tài),這里讀取的是PA0,高電平返回1,低電平返回0
      int statue = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);
      

      按鍵消抖

      按鍵在按下的那一刻是不穩(wěn)定的,稱為抖動(dòng)

      在這里插入圖片描述

      由于程序跑的很快,抖動(dòng)的過(guò)程中很有可能識(shí)別成了多次按鍵按下,就不是我們想要的效果。相應(yīng)的辦法就是消抖

      • 軟件消抖

        軟件消抖的方法很簡(jiǎn)單,就是檢測(cè)到按鍵按下時(shí),加個(gè)延時(shí)函數(shù),然后再檢測(cè)一次,延時(shí)函數(shù)往往不用太長(zhǎng),因?yàn)槎秳?dòng)的時(shí)間也很短

        if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==0)
        {
            HAL_Delay(10);	//延時(shí)10ms
            //再次檢測(cè)按鍵是否按下
            if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==0)
            {
                ...
            }
        }
        
      • 硬件消抖

        在按鍵兩端并聯(lián)一個(gè)電容即可,由于電容兩端的電壓不能突變,會(huì)消除按鍵按下帶來(lái)的抖動(dòng)

        image

      2. 外部中斷

      外部中斷的最常見(jiàn)形式是硬件監(jiān)聽(tīng)一個(gè)引腳的信號(hào)狀態(tài),當(dāng)該引腳的電平發(fā)生翻轉(zhuǎn)時(shí),即出現(xiàn)上升沿或下降沿,觸發(fā)外部中斷并進(jìn)入中斷處理函數(shù)。用戶則可以在相應(yīng)的回調(diào)函數(shù)中進(jìn)行處理。

      CubeMx 配置:

      • 設(shè)置某一 GPIO 口為GPIO_EXTIx模式

      • 選擇電平觸發(fā)模式

        如下圖所示,最常用的是紅色方框內(nèi)的三個(gè)模式:上升沿觸發(fā)、下降沿觸發(fā)以及上升沿下降沿都觸發(fā)。

        image

        :這里和按鍵檢測(cè)一樣,也需要加上拉或者下拉。如果希望是下降沿觸發(fā),即由高電平變?yōu)榈碗娖接|發(fā)中斷,應(yīng)該選擇上拉電阻。

      • NVIC(嵌套向量中斷控制器)

        在這里設(shè)置的是中斷優(yōu)先級(jí),一般說(shuō)來(lái),對(duì)于實(shí)時(shí)性要求越高的中斷,優(yōu)先級(jí)越高。

        由于這里只有一個(gè)中斷,可以不管。

      HAL 庫(kù)配置:

      中斷觸發(fā)后,程序會(huì)進(jìn)入void EXTIx_IRQHandler(void),這里的 x 根據(jù)實(shí)際引腳有不同的數(shù)值。內(nèi)部有個(gè)HAL_GPIO_EXTI_IRQHandler(),該函數(shù)主要幫助我們清楚中斷標(biāo)志位等其他內(nèi)容,這樣我們就不需要考慮這些東西,只需考慮用戶需要做的事情。

      image

      現(xiàn)在,找到HAL_GPIO_EXTI_Callback(GPIO_Pin)的定義,發(fā)現(xiàn)前面有個(gè)__weak,我們需要對(duì)該函數(shù)重新定義一遍,就會(huì)覆蓋原本內(nèi)容。

      /**
        * 函數(shù)功能: 外部中斷回調(diào)函數(shù)
        * 輸入?yún)?shù): GPIO_Pin:中斷引腳
        */
      void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
      {
        if(GPIO_Pin==KEY1_GPIO_PIN)
        {
            ...
        }
        else if(GPIO_Pin==KEY2_GPIO_PIN)
        {
            ...
        }
      }
      
      posted @ 2022-11-13 11:35  SFWR  Views(210)  Comments(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 欧美日韩精品一区二区三区在线 | 免费av深夜在线观看| 99久久免费精品国产色| 中文字幕日韩精品国产| 久久香蕉国产线熟妇人妻| 米奇亚洲国产精品思久久| 少妇人妻偷人一区二区| 欧美另类videossexo高潮| 视频一区二区不中文字幕| 亚洲av成人免费在线| 国产美女裸身网站免费观看视频| 日韩成人午夜精品久久高潮 | 午夜AAAAA级岛国福利在线| 色综合久久久久综合体桃花网| 中文字幕无码视频手机免费看| 日本熟妇hdsex视频| 天堂mv在线mv免费mv香蕉| 高颜值午夜福利在线观看| 国产欧美日韩高清在线不卡| 图片区 小说区 区 亚洲五月| 国产在线一区二区不卡| 猫咪www免费人成网站| 激情内射亚洲一区二区三区| 天堂mv在线mv免费mv香蕉| 乌苏市| 国产又爽又黄又无遮挡的激情视频| 99福利一区二区视频| 拉萨市| 日本东京热不卡一区二区| 国产成AV人片久青草影院| 兴山县| 人妻精品人妻无码一区二区三区| 女高中生强奷系列在线播放| 多伦县| 国产精品亚洲mnbav网站| 亚洲免费成人av一区| 国产丰满乱子伦无码专区| 日本一区二区三区在线播放| 国产精品国产三级国快看| 极品少妇无套内射视频| 丝袜美腿亚洲综合第一区|