亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

CW32數(shù)字電壓電流表軟件教程(二):按鍵檢測的控制原理解析

jf_qE49KoVBr8 ? 來源:CW32生態(tài)社區(qū) ? 作者:CW32生態(tài)社區(qū) ? 2024-05-06 15:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

3.1.獨立按鍵基礎(chǔ)知識

3.1.1.獨立按鍵結(jié)構(gòu)組成

獨立按鍵實際上是一個非自鎖的輕觸開關(guān),有左右兩個觸點,當(dāng)按下時左右兩個觸點閉合,當(dāng)松開時左右兩個觸點斷開。

3.1.2.獨立按鍵控制原理

想要使用外部的按鍵控制單片機有兩種比較常見的方法:IO掃描和外部中斷。

對于IO掃描的方式而言,需要單片機以比較高的頻率去不間斷地判斷IO口的輸入電平,隨后根據(jù)IO電平來執(zhí)行后續(xù)的邏輯。外部中斷的方式會在章節(jié)十二中進行詳細介紹,本章著重介紹IO掃描的控制方式。(單片機通過檢測按鍵按下前后的高低電平變化,來判斷按鍵是否按下。通過程序的控制,就可以實現(xiàn)不同的功能與設(shè)置。機械式按鍵在按下或者釋放時,由于機械彈性作用的影響,通常伴隨有一定時間的觸點機械抖動,然后其觸點才穩(wěn)定下來。抖動時間長短與開關(guān)的機械特性有關(guān),一般為5-10ms。在觸點抖動期間檢測按鍵的按下與否,可能會導(dǎo)致判斷錯誤,為了克服機械抖動所產(chǎn)生的影響,必須采取消抖措施,可分為硬件消抖和軟件消抖。)

3.1.3.按鍵亞穩(wěn)態(tài)與按鍵消抖

對于一個IO而言,在將其配置為輸入模式之后,該引腳上的電平受外部電路影響,基本可以分為三種狀態(tài):高電平、低電平、浮空。高低電平很好理解,這里說明浮空的意義,浮空就是不對該IO進行任何電氣屬性的連接,此時該IO上的電平是未知的(雖然從直觀感受上來看此時IO電壓應(yīng)該是0,但是空氣中會有噪聲,電路板上也會有噪聲,某些電磁干擾也會充當(dāng)噪聲,所以浮空輸入的IO電壓實際上是未知的)。

典型的浮空輸入型IO電路如圖3-1所示:

af2e55d8-0b7a-11ef-a297-92fbcf53809c.png

圖3-1 浮空輸入IO電路

當(dāng)開關(guān)閉合,IO電壓等于VCC電壓,當(dāng)開關(guān)斷開,IO電壓未知,此時IO電壓可能會受到不明來源的干擾,如果使用該電路作為IO掃描的電路方案,抗干擾能力會不好,容易造成誤觸發(fā),故此應(yīng)用場景下不考慮使用該電路。

和浮空輸入相比,比較好的辦法是使用上拉電阻或下拉電阻將IO的電壓固定下來,帶上拉電阻或下拉電阻電路如圖3-2所示:

af44e2e4-0b7a-11ef-a297-92fbcf53809c.png

圖3-2 上拉電阻(左) 和 下拉電阻(右)電路

上拉電阻可以將IO電壓固定在VCC電壓,當(dāng)開關(guān)閉合時,IO接地使其電壓變?yōu)镚ND電壓;下拉電阻可以將IO電壓固定在GND電壓,當(dāng)開關(guān)閉合時,IO電壓其實就是電阻R2的電壓,此時R2的電壓就是VCC。使用上拉/下拉電阻可以很好地提高IO掃描的抗干擾性能,一般情況這兩個電路不會有很大區(qū)別,挑一個你喜歡的用就好。

按鍵通過金屬導(dǎo)體的相互接觸來控制電信號,由于機械特性,這種接觸實際上并不可靠,手指按下按鍵不代表按鍵真的閉合且保持穩(wěn)定,這種情況就是按鍵抖動,抖動過程中按鍵控制的信號處于亞穩(wěn)態(tài),亞穩(wěn)態(tài)的信號不可靠,不能將其作為IO掃描的最終結(jié)果,為了獲取正確的按鍵狀態(tài),我們需要對按鍵進行消抖處理,按鍵消抖大概可以分為兩種方式:

硬件消抖:硬件消抖一般會在按鍵兩端并聯(lián)電容,通過電容的充放電作用將按鍵按下時的高頻振蕩吸收掉,當(dāng)開關(guān)處于亞穩(wěn)態(tài)時,IO電壓不規(guī)則變化,電容會吸收這些不穩(wěn)定電壓進行充電,這對IO電壓有平緩的效果,以此達到消抖的目的,硬件消抖電路如圖3-3所示。

af54e5f4-0b7a-11ef-a297-92fbcf53809c.png

圖3-3 硬件消抖電路

簡單的軟件消抖:極為簡單的軟件消抖一般是通過延時的辦法來跳過亞穩(wěn)態(tài)階段,當(dāng)檢測到按鍵按下時,不會立即去檢測電平,而是經(jīng)過短暫的延時之后,再去檢測當(dāng)前引腳的電平,這能在一定程度上消除亞穩(wěn)態(tài)帶來的影響,但需要對按鍵按下和抬起都進行延時判斷才能更為有效。

更好的軟件消抖:在監(jiān)測到IO電平發(fā)生變化后的一小段時間內(nèi)快速采集IO的電平狀態(tài),如果這一小段時間內(nèi)IO電平全都屬于有效電平,則認為按鍵已按下(這種利用數(shù)學(xué)進行消抖的方式達到了對數(shù)字信號的篩選作用,所以他也是一種簡易濾波器)。

在條件允許的情況下,硬件消抖的效果會更好,如果PCB沒有多余的空間留給這個消抖電容,使用軟件消抖同樣是一個不錯的方案。

3.2.獨立按鍵原理圖

CW32F003核心板上一共有兩個按鍵,一個復(fù)位和一個用戶按鍵,復(fù)位作為單片機的特殊功能,不可以作為按鍵使用,故只有用戶按鍵可以作為按鍵使用。 CW32F003核心板關(guān)于獨立按鍵的原理圖如圖3-4所示。

af65d4c2-0b7a-11ef-a297-92fbcf53809c.png

圖3-4 CW32F003按鍵電路

3.3.獨立按鍵驅(qū)動流程

通過上面的原理圖可以了解到,按鍵的一端接到了地,另一端接到單片機的PB2引腳上。通過檢測PB2引腳的電平狀態(tài),判斷按鍵是否按下。當(dāng)按鍵松開的時候,PB2檢測到的電平為高電平,當(dāng)按鍵按下的時候,PB2檢測到的電平為低電平。

外部電路不含上下拉電阻,對IO而言是浮空輸入,因此需要使用單片機內(nèi)部的上下拉電阻;電路不含消抖電容,故編程上需要對按鍵進行軟件消抖。

3.4.按鍵控制LED燈亮滅

3.4.1.配置流程

一般我們使用GPIO的輸入功能,都需要有以下幾個步驟。

開啟GPIO的端口時鐘

配置GPIO的模式

配置GPIO的輸入

編寫消抖函數(shù)

從開發(fā)板原理圖了解到按鍵接的是單片機的PB2。我們要使能按鍵就需要配置GPIOB端口。下面我們就以按鍵連接的PB2進行介紹。

3.4.1.1.開啟GPIO的端口初始化

由于時鐘的配置在之前的章節(jié)已有說明,故不再贅述,我們直接對端口進行初始化。初始化的代碼與上文GPIO輸出的配置略有不同,完整代碼如下:

void Gpio_Init(void)
{
  __RCC_GPIOC_CLK_ENABLE();//打開GPIOC的時鐘,PC0控制LED亮滅
  GPIO_InitTypeDef GPIO_InitStruct;
  GPIO_InitStruct.Pins = GPIO_PIN_0;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.IT = GPIO_IT_NONE;
  GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
  GPIO_Init(CW_GPIOC, &GPIO_InitStruct);
        
  __RCC_GPIOB_CLK_ENABLE();//打開GPIOB的時鐘,PB2控制按鍵輸入
  GPIO_InitStruct.Pins = GPIO_PIN_2;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT_PULLUP;  //沒有輸入時PB2默認為高電平
  GPIO_InitStruct.IT = GPIO_IT_NONE;
  GPIO_Init(CW_GPIOB, &GPIO_InitStruct);
}
3.4.1.2.編寫消抖函數(shù)

本次實驗采用軟件消抖,消抖函數(shù)的編寫思路為:設(shè)置按鍵檢測標(biāo)志位(Flag_Key),當(dāng)單片機檢測到按鍵按下,即PB2為低電平時,將標(biāo)志位置1;在后續(xù)的條件判斷中如果標(biāo)志位為1,則檢測按鍵是否松開,若已松開則完成本次判斷,認為按鍵已經(jīng)按下過一次。這種方式可以不用延時判斷,節(jié)約軟件資源。

完整的按鍵檢測程序如下:
uint8_t Flag_Key;         //按鍵標(biāo)志位
extern uint8_t Flag_LED;         //LED顯示標(biāo)志位
void Key_Scan(void)
{
  if(GPIO_ReadPin(CW_GPIOB,GPIO_PIN_2) == GPIO_Pin_RESET)  //檢測PB2是否為低電平
    {
          Flag_Key = 1;
    }
  if(Flag_Key)     //接著判斷標(biāo)志位
    {
      if(GPIO_ReadPin(CW_GPIOB,GPIO_PIN_2) == GPIO_Pin_SET)    //如果按鍵已經(jīng)松開
        {
          Flag_Key = 0;   //清零標(biāo)志位,等待下一次按鍵檢測
          if(Flag_LED == 0) Flag_LED = 1; //按鍵按下該變LED顯示標(biāo)志位的值,由顯示標(biāo)志位控制LED   
          else Flag_LED = 0;
        }
    }
}
3.4.1.3.LED顯示函數(shù)

在按鍵按下更改LED顯示標(biāo)志位后,需要根據(jù)顯示標(biāo)志位的值來控制LED燈的亮滅。
uint8_t Flag_LED;       


void LED_Init(void)
{
  GPIO_WritePin(CW_GPIOC,GPIO_PIN_0,GPIO_Pin_SET);  //初始化讓LED燈處于熄滅狀態(tài)
}
void LED_Lighting(void)
{
  if(Flag_LED == 1)
    {
      GPIO_WritePin(CW_GPIOC,GPIO_PIN_0,GPIO_Pin_RESET);        //亮
    }
  else 
    {
      GPIO_WritePin(CW_GPIOC,GPIO_PIN_0,GPIO_Pin_SET);       //滅
    }
}
最終主函數(shù)里只需要運行相應(yīng)的初始化函數(shù)和上面的函數(shù):
int main()
{
  RCC_Configuration();
  Gpio_Init();
  LED_Init();
   
  while(1)
   {


審核編輯:劉清
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 上拉電阻
    +關(guān)注

    關(guān)注

    5

    文章

    366

    瀏覽量

    31528
  • 濾波器
    +關(guān)注

    關(guān)注

    162

    文章

    8255

    瀏覽量

    184416
  • 電磁干擾
    +關(guān)注

    關(guān)注

    36

    文章

    2447

    瀏覽量

    107477
  • GND
    GND
    +關(guān)注

    關(guān)注

    2

    文章

    548

    瀏覽量

    40966
  • 獨立按鍵
    +關(guān)注

    關(guān)注

    1

    文章

    45

    瀏覽量

    11979
  • 電壓電流表
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    2252
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    278

    瀏覽量

    1625

原文標(biāo)題:CW32數(shù)字電壓電流表軟件教程-實驗二:按鍵檢測

文章出處:【微信號:武漢芯源半導(dǎo)體,微信公眾號:武漢芯源半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    CW32電機控制基礎(chǔ)——無刷直流電機應(yīng)用分析總結(jié)

    CW32電機驅(qū)動控制開發(fā)中,為應(yīng)用選擇正確的電機類型很重要。必須根據(jù)負載特性選擇參數(shù)正確的電機。為給定應(yīng)用選擇電機要考慮的三個參數(shù)是:應(yīng)用所需的峰值轉(zhuǎn)矩、RMS轉(zhuǎn)矩和工作轉(zhuǎn)速范圍。
    的頭像 發(fā)表于 10-09 17:13 ?2410次閱讀
    <b class='flag-5'>CW32</b>電機<b class='flag-5'>控制</b>基礎(chǔ)——無刷直流電機應(yīng)用分析總結(jié)

    CW32電機控制基礎(chǔ)——無刷直流電機的運行特性

    無刷直流電機的運行特性是指電機在起動、正常工作和調(diào)速等情況下,電機外部各可測物理變量之間的關(guān)系。本文在面對CW32電機控制應(yīng)用的相關(guān)開發(fā)與調(diào)試的應(yīng)用中,提供必要且專業(yè)的理論支撐。
    的頭像 發(fā)表于 10-09 17:12 ?2760次閱讀
    <b class='flag-5'>CW32</b>電機<b class='flag-5'>控制</b>基礎(chǔ)——無刷直流電機的運行特性

    CW32電機控制基礎(chǔ)--無刷電機無位置傳感器的轉(zhuǎn)子位置檢測技術(shù)

    無位置傳感器的無刷直流電機的位置估計方法可以從5個方面來論述:反電動勢法、電流法、狀態(tài)觀測器法、人工智能法和磁鏈法。這幾種方法的研究相對比較成熟,且都已得到一定程度的應(yīng)用。CW32生態(tài)社區(qū)在方波控制的相關(guān)應(yīng)用和Demo中多使用反
    的頭像 發(fā)表于 10-09 17:06 ?2981次閱讀
    <b class='flag-5'>CW32</b>電機<b class='flag-5'>控制</b>基礎(chǔ)--無刷電機無位置傳感器的轉(zhuǎn)子位置<b class='flag-5'>檢測</b>技術(shù)

    【教程】手把手教你用CLion進行CW32開發(fā)

    以下文章內(nèi)容由CW32生態(tài)社區(qū)用戶End提供: https://gitee.com/xcet/embedded-cw32-board-template/tree/master/ref
    的頭像 發(fā)表于 09-29 18:00 ?6382次閱讀
    【教程】手把手教你用CLion進行<b class='flag-5'>CW32</b>開發(fā)

    如何使用新版本J-Flash編程CW32 MCU?

    CW32 MCU器件支持包JlinkDevices_WHXY.rar解壓到新建的JlinkDevices子目錄即可。 4、運行JFlash.exe,通過Jlink連接CW32 MCU測試板,進行編程測試
    的頭像 發(fā)表于 07-01 15:05 ?377次閱讀
    如何使用新版本J-Flash編程<b class='flag-5'>CW32</b> MCU?

    CW32L010 ESC Driver 電機控制套件使用

    Ω的分流電阻構(gòu)成母線電流檢測電路。 采用反電動勢法,對各相來對電機的位置進行檢測,通過過零檢測確定轉(zhuǎn)子的位置,實現(xiàn)電機的無感閉環(huán)控制。
    發(fā)表于 06-13 18:12

    淺談AppleWatch 電流表

    “ ?將你的 Apple Watch 變成電流表來測量直流電流。 ? ” 分享一個好玩的項目,將 Apple Watch 或任何帶有可觸及磁力計的手表變成電流表,以測量直流電流。項目是
    的頭像 發(fā)表于 04-25 18:17 ?589次閱讀
    淺談AppleWatch <b class='flag-5'>電流表</b>

    CW32模塊使用】雙軸按鍵搖桿模塊

    雙軸按鍵游戲搖桿模塊,采用 PS2游戲手柄上金屬按鍵搖桿電位器。模塊特設(shè)路模擬輸出和一路數(shù)字輸出接口、輸出值分別對應(yīng)(X、Y)雙軸偏移量、其類型為模擬量、
    的頭像 發(fā)表于 03-29 17:23 ?698次閱讀
    【<b class='flag-5'>CW32</b>模塊使用】雙軸<b class='flag-5'>按鍵</b>搖桿模塊

    吉時利數(shù)字2400在半導(dǎo)體器件測試中的深度應(yīng)用與關(guān)鍵技術(shù)解析

    吉時利數(shù)字2400(Keithley 2400)作為一款高性能源測量單元(SMU),集成了電壓源、電流源、電壓表
    的頭像 發(fā)表于 03-18 11:36 ?712次閱讀
    吉時利<b class='flag-5'>數(shù)字</b>源<b class='flag-5'>表</b>2400在半導(dǎo)體器件測試中的深度應(yīng)用與關(guān)鍵技術(shù)<b class='flag-5'>解析</b>

    代碼+案例+生態(tài):武漢芯源半導(dǎo)體CW32嵌入式開發(fā)實戰(zhàn)正式出版

    尊敬的各位電子工程師、嵌入式開發(fā)愛好者們:大家好!今天,我們懷著無比激動與自豪的心情,向大家宣布一個重大喜訊——武漢芯源半導(dǎo)體的單片機CW32正式出書啦!《基于ARMCortex-M0+的CW32
    的頭像 發(fā)表于 03-03 15:15 ?932次閱讀
    代碼+案例+生態(tài):武漢芯源半導(dǎo)體<b class='flag-5'>CW32</b>嵌入式開發(fā)實戰(zhàn)正式出版

    代碼+案例+生態(tài):武漢芯源半導(dǎo)體CW32嵌入式開發(fā)實戰(zhàn)正式出版

    尊敬的各位電子工程師、嵌入式開發(fā)愛好者們: 大家好!今天,我們懷著無比激動與自豪的心情,向大家宣布一個重大喜訊——武漢芯源半導(dǎo)體的單片機CW32正式出書啦!《基于ARM Cortex-M0+
    發(fā)表于 03-03 15:14

    常見的電壓電流測試產(chǎn)品原理

    電壓電流
    jf_97110154
    發(fā)布于 :2025年01月22日 09:31:29

    壓電阻箱如何進行負載測試?

    的測試設(shè)備,包括高壓電源、負載電阻、電壓表電流表等。確保所有設(shè)備都經(jīng)過校準(zhǔn),并且符合相關(guān)的安全標(biāo)準(zhǔn)。 連接測試設(shè)備:將高壓電源連接到高壓電
    發(fā)表于 01-16 12:34

    桿塔接地電阻輸電線路在線監(jiān)測裝置 電壓電流表

    電流表
    jf_96960730
    發(fā)布于 :2024年11月27日 14:08:55

    CW32充電檢測儀#CW32

    檢測
    jf_61020569
    發(fā)布于 :2024年11月22日 09:05:30