色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】4, 按鍵驅動LED

開發板試用精選 ? 來源:開發板試用 ? 作者:電子發燒友論壇 ? 2022-11-04 15:15 ? 次閱讀
本文來源電子發燒友社區,作者:hehung, 帖子地址:https://bbs.elecfans.com/jishu_2013493_1_1.html


有一周多沒有時間弄這個板子了,這段時間實在是有點忙,這周末抓緊了點時間弄了弄。資料確實有點少了,只能一點一點的摸索。弄了一個按鍵控制LED的程序。

核心板上有一個LED以及按鍵,我們查看原理圖可以知道,LED連接到GPIO9,按鍵連接到了GPIO5.
221350hhw24gj1scgyhgjm.png?221351fb2h5du66pi15wdp.png
所以只需要初始化這兩個引腳作為輸入輸出就行了,還是比較簡單的,因為是學習,所以從簡單的開始入手。

初始化代碼如下:
LED初始化,初始化為輸出:
  1. GpioInit();
  2. IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_GPIO);
  3. GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_DIR_OUT);
復制代碼


KEY初始化函數,初始化為輸入:
  1. GpioInit();
  2. IoSetFunc(WIFI_IOT_IO_NAME_GPIO_5, WIFI_IOT_IO_FUNC_GPIO_5_GPIO);
  3. GpioSetDir(WIFI_IOT_IO_NAME_GPIO_5, WIFI_IOT_GPIO_DIR_IN);
復制代碼


如何調用呢?
看下邊:
控制GPIO輸出,1為輸出高,0位輸出低:
  1. GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 1);
復制代碼
獲取GPIO輸入電平:
  1. WifiIotGpioValue Key_Status = WIFI_IOT_GPIO_VALUE1;
  2. GpioGetinputVal(WIFI_IOT_IO_NAME_GPIO_5, &Key_Status);
復制代碼
其中:Key_Status
就是獲取的電平值,GpioGetInputVal()的返回值表示獲取是否成功的標志。
我創建了兩個任務:
一個任務專門控制LED,一個任務控制Key。
上電之后,LED閃爍,頻率是500ms。
按下user按鍵之后,LED滅
再次按下user按鍵,LED亮
再次按下user按鍵,再次閃爍
以此循環。

完整代碼如下:
BUILD.gn
  1. static_library("myapp") {
  2. sources = [
  3. "my_main.c"
  4. ]
  5. include_dirs = [
  6. "http://utils/native/lite/include",
  7. "http://kernel/liteos_m/components/cmsis/2.0",
  8. "http://base/iot_hardware/interfaces/kits/wifiiot_lite",
  9. "http://vender/hisi/hi3861/hi3861/include"
  10. ]
  11. }
復制代碼


my_main.c函數
  1. /*this is my first application*/
  2. /*2020/11/08*/
  3. #include
  4. #include "ohos_init.h"
  5. #include "ohos_types.h"
  6. #include
  7. #include
  8. #include "ohos_init.h"
  9. #include "cmsis_os2.h"
  10. #include "wifiiot_gpio.h"
  11. #include "wifiiot_gpio_ex.h"
  12. #include "wifiiot_adc.h"
  13. #include
  14. #include
  15. #include
  16. #include
  17. #define LED_INTERVAL_TIME_US 500000 /*500ms*/
  18. #define LED_TASK_STACK_SIZE 512
  19. #define LED_TASK_PRIO 25
  20. #define KEY_INTERVAL_TIME_US 10000 /*10ms*/
  21. #define KEY_TASK_STACK_SIZE 1024
  22. #define KEY_TASK_PRIO 26
  23. static void *LedTask(const char *arg);
  24. static void *KeyTask(const char *arg);
  25. /*LED Control*/
  26. enum LedState {
  27. LED_ON = 0,
  28. LED_OFF,
  29. LED_SPARK,
  30. };
  31. enum LedState g_ledState = LED_SPARK;
  32. static void *LedTask(const char *arg)
  33. {
  34. (void)arg;
  35. while (1) {
  36. switch (g_ledState) {
  37. case LED_ON:
  38. GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 1);
  39. usleep(LED_INTERVAL_TIME_US);
  40. break;
  41. case LED_OFF:
  42. GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 0);
  43. usleep(LED_INTERVAL_TIME_US);
  44. break;
  45. case LED_SPARK:
  46. GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 0);
  47. usleep(LED_INTERVAL_TIME_US);
  48. GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 1);
  49. usleep(LED_INTERVAL_TIME_US);
  50. break;
  51. default:
  52. usleep(LED_INTERVAL_TIME_US);
  53. break;
  54. }
  55. }
  56. return NULL;
  57. }
  58. static void Led0Entry(void)
  59. {
  60. osThreadAttr_t attr;
  61. GpioInit();
  62. IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_GPIO);
  63. GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_DIR_OUT);
  64. attr.name = "LedTask";
  65. attr.attr_bits = 0U;
  66. attr.cb_mem = NULL;
  67. attr.cb_size = 0U;
  68. attr.stack_mem = NULL;
  69. attr.stack_size = LED_TASK_STACK_SIZE;
  70. attr.priority = LED_TASK_PRIO;
  71. if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL) {
  72. printf("[Led0Task] Falied to create LedTask!n");
  73. }
  74. }
  75. SYS_RUN(Led0Entry);
  76. /*OLED board KEY Control - vased on ADC input*/
  77. static void *KeyTask(const char *arg)
  78. {
  79. (void)arg;
  80. WifiIotGpioValue Key_Status = WIFI_IOT_GPIO_VALUE1;
  81. WifiIotGpioValue Last_key_Status = WIFI_IOT_GPIO_VALUE1;
  82. uint8_t Key_press_cnt = 0u;
  83. while (1) {
  84. GpioGetInputVal(WIFI_IOT_IO_NAME_GPIO_5, &Key_Status);
  85. // printf("%dn", Key_Status);
  86. if((Key_Status == WIFI_IOT_GPIO_VALUE0) && (Last_key_Status != Key_Status))
  87. {
  88. // Key_press_cnt = (Key_press_cnt>2) ? 0:(++Key_press_cnt);
  89. if(Key_press_cnt >= 2)
  90. {
  91. Key_press_cnt = 0;
  92. }
  93. else
  94. {
  95. Key_press_cnt ++;
  96. }
  97. switch(Key_press_cnt)
  98. {
  99. case 0:g_ledState = LED_ON;break;
  100. case 1:g_ledState = LED_OFF;break;
  101. case 2:g_ledState = LED_SPARK;break;
  102. }
  103. }
  104. else
  105. {
  106. }
  107. Last_key_Status = Key_Status;
  108. usleep(LED_INTERVAL_TIME_US);
  109. }
  110. return NULL;
  111. }
  112. static void KeyEntry(void)
  113. {
  114. osThreadAttr_t attr;
  115. GpioInit();
  116. IoSetFunc(WIFI_IOT_IO_NAME_GPIO_5, WIFI_IOT_IO_FUNC_GPIO_5_GPIO);
  117. GpioSetDir(WIFI_IOT_IO_NAME_GPIO_5, WIFI_IOT_GPIO_DIR_IN);
  118. // AdcRead();
  119. attr.name = "KeyTask";
  120. attr.attr_bits = 0U;
  121. attr.cb_mem = NULL;
  122. attr.cb_size = 0U;
  123. attr.stack_mem = NULL;
  124. attr.stack_size = KEY_TASK_STACK_SIZE;
  125. attr.priority = KEY_TASK_PRIO;
  126. if (osThreadNew((osThreadFunc_t)KeyTask, NULL, &attr) == NULL) {
  127. printf("[KeyTask] Falied to create KeyTask!n");
  128. }
  129. }
  130. SYS_RUN(KeyEntry);
復制代碼

我的軟件目錄如下:
222233qia6nisa6sd6dz4i.png

最后效果圖見視頻。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • wi-fi
    +關注

    關注

    14

    文章

    2169

    瀏覽量

    124826
  • HarmonyOS
    +關注

    關注

    79

    文章

    1982

    瀏覽量

    30414
  • HiSpark
    +關注

    關注

    1

    文章

    156

    瀏覽量

    6945
收藏 人收藏

    評論

    相關推薦

    Wi-Fi 8要來了!未來Wi-Fi技術演進方向揭秘

    產品銷售中,雖然Wi-Fi 7產品的銷量份額快速從年初的個位數百分比增長至14%,但Wi-Fi 6產品的銷量份額依然穩定在60%左右。如果從存量設備來看,那么Wi-Fi 7路由器的占比將遠遠小于這個數。 ? 智能手機等終端設備已
    的頭像 發表于 11-24 03:14 ?1935次閱讀
    <b class='flag-5'>Wi-Fi</b> 8要來了!未來<b class='flag-5'>Wi-Fi</b>技術演進方向揭秘

    華為海思正式進入Wi-Fi FEM賽道?

    大家都知道了,2018年11 月離開銳迪科(RDA),前往福建晉江創立三伍微,專注于Wi-Fi射頻前端芯片,從路由器Wi-Fi FEM,到手機Wi-Fi FEM,再到IoT FEM全覆
    發表于 12-11 17:42

    摩爾斯微電子發布Wi-Fi HaLow評估套件,加速物聯網開發

    近日,全球領先的Wi-Fi HaLow解決方案提供商摩爾斯微電子正式推出一款開創性的評估套件——MM6108-EKH05。這款完全整合的開發平臺,旨在推動各行業物聯網解決方案的快速發展
    的頭像 發表于 12-11 13:40 ?344次閱讀

    Wi-Fi 4Wi-Fi 7:網速飆升40倍的無線革命

    1 Wi-Fi技術的快速發展 每一代新的Wi-Fi協議發布,都會帶來更高的無線速率。 ? 從Wi-Fi 4Wi-Fi 7:無線網絡技術顯著
    的頭像 發表于 12-09 10:10 ?375次閱讀
    從<b class='flag-5'>Wi-Fi</b> <b class='flag-5'>4</b>到<b class='flag-5'>Wi-Fi</b> 7:網速飆升40倍的無線革命

    Wi-Fi 7與Wi-Fi 6E有什么區別

    也許很多人還在考慮是否要將使用的Wi-Fi設備升級到Wi-Fi 6或Wi-Fi 6E,而這些標準的繼任者卻已經開始“登堂入室”了。Wi-Fi 7是新一代
    的頭像 發表于 11-07 11:38 ?1079次閱讀

    網速快4倍!iPhone 16/Pro全系支持Wi-Fi 7

    在安卓全面普及Wi-Fi 7一年之后,蘋果終于在iPhone 16系列配備了Wi-Fi 7技術,并且是全系支持。 相比之下,前代的iPhone 15不論是標準版還是Pro版都僅僅支持Wi-Fi 6E
    的頭像 發表于 09-10 09:31 ?668次閱讀

    最典型的3家Wi-Fi Halow芯片企業

    Wi-Fi Halow是Wi-Fi聯盟推出的專門面向物聯網市場的標準。
    的頭像 發表于 08-30 09:58 ?2077次閱讀
    最典型的3家<b class='flag-5'>Wi-Fi</b> Halow芯片企業

    未來的Wi-Fi路由器

    廠家加入開始殺價,Wi-Fi FEM由于廠家眾多,價格一降再降,直接殺到成本價以下,DC-DC電源芯片也好不到哪里去,供應商的上市年度報和季度報也是不堪入眼。 除了跟著主芯片從Wi-Fi4升級到Wi-Fi5,再從
    的頭像 發表于 06-20 15:32 ?477次閱讀

    DA16200 超低功耗 Wi-Fi 模塊開發套件 Pro數據手冊

    電子發燒友網站提供《DA16200 超低功耗 Wi-Fi 模塊開發套件 Pro數據手冊.rar》資料免費下載
    發表于 05-30 17:53 ?1次下載
    DA16200 超低功耗 <b class='flag-5'>Wi-Fi</b> 模塊開發<b class='flag-5'>套件</b> Pro數據手冊

    DA16200 超低功耗 Wi-Fi 模塊開發套件數據手冊

    電子發燒友網站提供《DA16200 超低功耗 Wi-Fi 模塊開發套件數據手冊.rar》資料免費下載
    發表于 05-30 17:13 ?0次下載
    DA16200 超低功耗 <b class='flag-5'>Wi-Fi</b> 模塊開發<b class='flag-5'>套件</b>數據手冊

    華為獲得全球首個國際Wi-Fi聯盟WFA企業級Wi-Fi 7認證!

    Wi-Fi聯盟已發布Wi-Fi 7認證標準,華為是第一批送測廠商,獲得業界首個企業級Wi-Fi 7 的Wi-Fi聯盟官方認證。
    的頭像 發表于 04-28 10:17 ?791次閱讀
    華為獲得全球首個國際<b class='flag-5'>Wi-Fi</b>聯盟WFA企業級<b class='flag-5'>Wi-Fi</b> 7認證!

    驗證物聯網Wi-Fi HaLow用例的MM6108-EKH08開發套件來啦

    驗證物聯網Wi-Fi HaLow用例的MM6108-EKH08開發套件來啦 MM6108-EKH08開發套件專為驗證物聯網Wi-Fi HaLow用例而設計。該
    的頭像 發表于 04-11 12:01 ?1819次閱讀
    驗證物聯網<b class='flag-5'>Wi-Fi</b> HaLow用例的MM6108-EKH08開發<b class='flag-5'>套件</b>來啦

    Wi-Fi 7與Wi-Fi 6的相關知識科普

    科普:Wi-Fi 7 vs. Wi-Fi 6,青出于藍
    的頭像 發表于 03-12 10:59 ?814次閱讀
    <b class='flag-5'>Wi-Fi</b> 7與<b class='flag-5'>Wi-Fi</b> 6的相關知識科普

    Wi-Fi的誕生與發展

    短距離無線通信技術有Wi-Fi、ZigBee、藍牙以及Z-Wave,今天我們先揭開Wi-Fi的神秘面紗。Chrent短距離無線通信技術——Wi-Fi過去的20多年,Wi-Fi靠著僅有的
    的頭像 發表于 03-07 08:26 ?1371次閱讀
    <b class='flag-5'>Wi-Fi</b>的誕生與發展

    Wi-Fi HaLow和傳統Wi-Fi的區別

    Wi-Fi HaLow和傳統Wi-Fi的區別? Wi-Fi是一種無線網絡技術,可以連接到互聯網或局域網,為用戶提供無線上網的便利。隨著科技的發展和互聯網的普及,Wi-Fi也在不斷演進和
    的頭像 發表于 02-02 15:28 ?1414次閱讀
    主站蜘蛛池模板: 米奇在线8888在线精品视频| 亚洲精品乱码久久久久久v| 55夜色66夜亚洲精品播放| 男女后进式猛烈xx00动态图片| metart中国撒尿人体欣赏| 四虎影视永久无码精品| 国产一区二区青青精品久久| 在线免费中文字幕| 青青草原影视| 花蝴蝶高清观看免费| qvod在线观看| 亚洲日韩国产精品乱-久| 欧美日韩亚洲一区二区三区在线观看| 国产成在线观看免费视频| 在线看片福利无码网址| 日本熟妇乱妇熟色A片蜜桃| 精品国产午夜肉伦伦影院| SM高H黄暴NP辣H调教性奴| 亚洲精品视频免费看| 免费毛片a在线观看67194 | 精品熟女少妇AV久久免费A片| 97影院理论午夜伦不卡偷| 特级做A爰片毛片免费看108| 狼人射综合| 国产精品路线1路线2路线| 91福利在线观看| 亚久久伊人精品青青草原2020| 内射少妇三洞齐开| 饥渴难耐的浪荡艳妇在线观看| 爱豆剧果冻传媒在线播放| 御姐被吸奶| 亚洲薄码区| 欧美多人群p刺激交换电影| 狠狠色狠色综合曰曰| 二次元美女扒开内裤喷水| 中国大陆一级毛片免费| 午夜片无码区在线观看| 欧美亚洲国产免费高清视频| 久久精品国产欧美| 国产美女一区二区| 草莓视频免费在线观看|