天天看點

用AliOS Things在Developer Kit 上點亮一個LED全局掌控看一下原理圖,确認LED對應的IO口AliOS Things 架構-SOC層操作GPIO寫代碼結束

全局掌控

  • 看一下原理圖,确認LED對應的IO口
  • AliOS Things 架構-SOC層
  • 操作GPIO
  • 寫代碼

闆子上有三個LED,分别是LED1,LED2,LED3。

看原理圖,這三個LED的陽極接的3V電源。

隻要控制LED的IO口低電平,對應的LED就會亮。

用AliOS Things在Developer Kit 上點亮一個LED全局掌控看一下原理圖,确認LED對應的IO口AliOS Things 架構-SOC層操作GPIO寫代碼結束

根據圖紙上的網絡标号,确認三個LED分别對應的IO口。

LED1 對應 PB6

LED2 對應 PE3

LED3 對應 PD15

順便看到了三個按鍵,一起記錄一下。

KEY1 PE11

KEY2 PE14

KEY3 PE10

拿萬用表測試一下,證明上述對應關系OK。

從單片機程式設計的思維考慮:

先将對應IO口設定為推挽輸出模式(這樣的IO口驅動能力很強,可以通過軟體設定)

再通過控制對應IO口是0或者是1,來控制實際對應的高低電平

IO口是0,表示低電平,那麼對應的LED會亮

IO口是1,表示高電平,對應的LED會滅

在 AliOS Things 的體系中,SOC層屬于底層的東西。由廠家負責維護,你要做的就是了解它。

在SDK的目錄裡,找到 board 的檔案夾,裡面找到對應的硬體名稱。比如零妖打開的是 developerkit 這個檔案夾。

這個檔案夾裡面,是一些涉及底層的東西,想找硬體底層的内容就來這裡。

用AliOS Things在Developer Kit 上點亮一個LED全局掌控看一下原理圖,确認LED對應的IO口AliOS Things 架構-SOC層操作GPIO寫代碼結束

零妖要控制LED1,目的是閃爍LED1。

LED1 對應 PB6 ,檢視和GPIO有關的頭檔案,它的編号是 22 。

在SDK的檔案夾裡面,有一個 include 的檔案夾,裡面放的是一些頭檔案,需要的話就查一下,包含到你的代碼中。

操作GPIO屬于操作SOC層中的硬體,是以 #include <hal/soc/soc.h> 即可。

在 include/hal/soc 檔案夾裡面,能找到一個 gpio.h 的頭檔案。

你可以檢視對GPIO操作的一些函數。

GPIO有關的API,詳細解釋參考:

https://github.com/alibaba/AliOS-Things/wiki/AliOS-Things-API-HAL-SOC-GPIO-Guide
用AliOS Things在Developer Kit 上點亮一個LED全局掌控看一下原理圖,确認LED對應的IO口AliOS Things 架構-SOC層操作GPIO寫代碼結束

#include <aos/aos.h>
#include <hal/soc/soc.h>

gpio_dev_t LED1;//初始化一個GPIO相關的結構體

//聲明函數
static void LED1_Off(void *arg);

//檢視原理圖,IO口輸出0,LED亮
static void LED1_On(void *arg)
{
    hal_gpio_output_low(&LED1);
    aos_post_delayed_action(100, LED1_Off, NULL);
}
//檢視原理圖,IO口輸出1,LED滅
static void LED1_Off(void *arg)
{
    hal_gpio_output_high(&LED1);
    aos_post_delayed_action(100, LED1_On, NULL);
}

//主任務,OS初始化完成後運作的第一個任務。
int application_start(int argc, char *argv[])
{
    LOG("初始化完成,應用程式開始:");
    
    LED1.port = 22;//LED1對應的IO口,在OS裡面編号是22
    LED1.config = OUTPUT_PUSH_PULL;//設定為推挽輸出
    hal_gpio_init(&LED1);//初始化LED1的IO口
    aos_post_delayed_action(1000, LED1_On, NULL);//1S之後調用LED1_On()函數
    aos_loop_run();//進入事件循環

    return 0;
}           

從主任務講起。

首先序列槽輸出字元串,告訴你OS已經初始化完成。

配置IO口

然後又定時1S,時間到了之後,執行 LED_on()函數

LED亮之後,設定了一個100ms定時器,到時間後執行 LED_off()函數

LED滅之後,設定了一個100ms定時器,到時間之後執行LED_on()函數

LED亮和滅循環執行。

結束

  • SOC層是由晶片廠家負責維護的
  • 非必要,不要修改裡面的内容
  • 你想操作底層硬體相關,就來SOC層找相關内容
  • 一些典型傳感器已經有成熟的代碼,這個後面再看

微信公衆号 偶爾更新

用AliOS Things在Developer Kit 上點亮一個LED全局掌控看一下原理圖,确認LED對應的IO口AliOS Things 架構-SOC層操作GPIO寫代碼結束

繼續閱讀