電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 1170|回復(fù): 1
收起左側(cè)

[作業(yè)已審核] 4.19 綜合案例1按鍵開關(guān)燈

[復(fù)制鏈接]

4

主題

18

帖子

95

積分

一級(jí)會(huì)員

Rank: 1

積分
95
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2021-4-19 21:13:41 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
一、代碼實(shí)現(xiàn)流程
打開CubeMx→新建工程→搜索芯片→在右邊點(diǎn)擊芯片→保存工程→點(diǎn)擊RCC配置時(shí)鐘→設(shè)置成Crystal→然后在Clock Configuration中設(shè)置為HSE、72→然后點(diǎn)擊SYS→在Debug那里選擇Senal Wire→然后配置IO口(輸入輸出還有名字)→然后再GPIO中查看自己所設(shè)置的東西→然后在對(duì)應(yīng)位置敲代碼
二、代碼實(shí)現(xiàn)過程總結(jié)
①用到按鍵一班都會(huì)涉及消抖還有狀態(tài)標(biāo)志位,使用輪詢計(jì)數(shù)可以更好地利用內(nèi)部資源
②ctrl+k進(jìn)行所選代碼整體注釋,Ctrl+shift+k進(jìn)行整體取消注釋
③一定要在系統(tǒng)規(guī)定我們寫代碼的地方寫,不然下次生成還得再寫一遍
④對(duì)于什么時(shí)候設(shè)置成輸入輸出,我的理解就是你要用某個(gè)引腳控制一個(gè)東西,比如說你想控制小燈,那這個(gè)引腳就得設(shè)置成輸出。如果想知道某個(gè)引腳是高電平還是低電平,就設(shè)置成輸入,比如我想知道按鍵所連的IO口的狀態(tài)。
⑤對(duì)于上拉還是下拉,這是針對(duì)于輸入而言,輸出沒有上下拉的概念,按鍵按下檢測(cè)到低電平就是上拉輸入,按鍵按下檢測(cè)到高電平就是下拉輸入。
⑥讀取或者寫入GPIO函數(shù)在GPIO庫中,而按鍵名稱定義在main.h里面
三、代碼
  while (1)
  {
    switch(step)
    {
        case 0:
          {
            if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_RESET )//判斷按鍵是否按下
            {
                count++;
               
                if(count>=10000)//真的按下了
                {
                    count = 0;//按鍵按下也要重新開始
                    //printf("按鍵按下了\n");
                    step = 1;//標(biāo)志
                    flag = !flag;//按鍵標(biāo)志狀態(tài)
                }
               
            }
            else//抖動(dòng)狀態(tài)
             {
                count = 0;
             }
          }
          break;
         
        case 1:
          {
            if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_SET)//判斷按鍵是否釋放
            {
                //printf("按鍵已經(jīng)釋放\n");
                step = 0;
            }
          }
          break;
    }
   
    if(flag==0)
    {
      HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);//燈亮
      HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET);//燈亮
    }
    else
    {
      HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);//燈滅
      HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET);//燈滅
    }
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

24

主題

355

帖子

1677

積分

版主

Rank: 3Rank: 3

積分
1677
QQ
沙發(fā)
發(fā)表于 2021-4-20 10:17:51 | 只看該作者
總結(jié)的很細(xì)致,不錯(cuò)

發(fā)表回復(fù)

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表