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

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

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

【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】小白寫個入門程序——按鍵控制LED燈的亮滅(查詢方式)

[復(fù)制鏈接]

2607

主題

2607

帖子

7472

積分

高級會員

Rank: 5Rank: 5

積分
7472
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2021-1-26 13:56:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】小白寫個入門程序——按鍵控制LED燈的亮滅(查詢方式),         以前只是簡單的玩過51單片機(jī),現(xiàn)在直接玩鴻蒙開發(fā),處處碰壁、踩坑無數(shù)!根據(jù)官網(wǎng)教程搭好環(huán)境之后,官網(wǎng)的示例程序編譯成功并且在開發(fā)板上運行了,然后就差點沒有下文了,因為不知道接下來要怎么玩,如何玩?然后大量查閱資料,查閱C語言教程,補充C語言知識。現(xiàn)在來寫個入門程序:用一個按鍵控制LED燈的亮滅來跟大家分享一下,希望對像我這樣的小白有幫助,由于水平有限,難免有錯誤或不知足之處,希望各位大佬們指正。

        以前玩51單片機(jī)的朋友們都知道要用一個按鍵來控制LED燈的亮滅如何實現(xiàn),比如說stc15系列的51單片機(jī),LED一端接在P09的IO腳上,另一端經(jīng)過一個電阻接到VCC,按鍵一端接到P05的IO腳,另一端接GND,用查詢方式檢測按鍵狀態(tài),功能實現(xiàn)如下:



  • #include<stc15.h>
      
  • int main
      
  • {
      
  •     while(1)
      
  •      {
      
  •     if(!P05) P09 = 0;
      
  •     else P09 = 1;
      
  •      }
      
  • }
      


復(fù)制代碼

由于STC15系列的51單片機(jī)和傳統(tǒng)的51單片機(jī)的IO上電后默認(rèn)處于弱上拉狀態(tài),因此僅僅需要上面幾行代碼就可以實現(xiàn)了,F(xiàn)在玩的是海思Hi3861芯片和鴻蒙OS這兩樣?xùn)|西(暫且稱為東西),這兩樣?xùn)|西要實現(xiàn)像上面STC15單片機(jī)的這個功能,要如何實現(xiàn)呢?這個問題也是我學(xué)習(xí)鴻蒙開發(fā)入門的一個思路。

      通過查開發(fā)板的原理圖可以知道,LED1一端接到Hi3861芯片名為GPIO09的pin腳,另一端經(jīng)過一個330歐電阻之后接到3.3V,按鍵S1一端接到芯片名為GPIO05的pin腳,另一端接到GND。要實現(xiàn)上面那個功能需要走的流程大概如下:

1、GPIO初始化

2、設(shè)置GPIO的復(fù)用功能,比如說某些GPIO腳有I2C、UART、ADC等功能,要設(shè)置成GPIO功能



3、設(shè)置GPIO的方向是輸入或輸出

4、設(shè)置GPIO管腳上下拉狀態(tài)



主要實現(xiàn)代碼如下:



  • GpioInit();
      
  •    IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_GPIO);
      
  •     IoSetFunc(WIFI_IOT_IO_NAME_GPIO_5, WIFI_IOT_IO_FUNC_GPIO_5_GPIO);
      
  •     GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_DIR_OUT);
      
  •     GpioSetDir(WIFI_IOT_IO_NAME_GPIO_5, WIFI_IOT_GPIO_DIR_IN);
      
  •     IoSetPull(WIFI_IOT_IO_NAME_GPIO_5, WIFI_IOT_IO_PULL_UP);

復(fù)制代碼 然后弄個while(1)循環(huán),不斷查詢GPIO狀態(tài),



  • while (1)
      
  •     {
      
  •         GpioGetinputVal(WIFI_IOT_GPIO_IDX_5, &S2_status);
      
  •         if(!S2_status)
      
  •         {
      
  •             GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 0);
      
  •         }
      
  •         else GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 1);
      
  •     }

復(fù)制代碼 具體完整代碼已上傳到附件中。有需要的朋友們可以下載附件解壓后將文件夾復(fù)制到指定位置,如圖所示



2021-01-26_12-53.png (123.42 KB, 下載次數(shù): 0)

下載附件  保存到相冊  

1 小時前 上傳





兩個重要的BUILD.gn文件,如圖所示:





2021-01-26_13-05.png (148.99 KB, 下載次數(shù): 0)

下載附件  保存到相冊  

半小時前 上傳





2021-01-26_13-05_1.png (125.35 KB, 下載次數(shù): 0)

下載附件  保存到相冊  

半小時前 上傳



程序運行效果如視頻所示:
回復(fù)

使用道具 舉報

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

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


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