|
【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】小白寫個入門程序——按鍵控制LED燈的亮滅(查詢方式), 以前只是簡單的玩過51單片機(jī),現(xiàn)在直接玩鴻蒙開發(fā),處處碰壁、踩坑無數(shù)!根據(jù)官網(wǎng)教程搭好環(huán)境之后,官網(wǎng)的示例程序編譯成功并且在開發(fā)板上運行了,然后就差點沒有下文了,因為不知道接下來要怎么玩,如何玩?然后大量查閱資料,查閱C語言教程,補充C語言知識,F(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)
下載附件 保存到相冊
半小時前 上傳
程序運行效果如視頻所示: |
|