摘要: 本文將介紹怎麼樣在VScode環境下,將AliOS Tings提供的blink例程在Developerkit開發板上運行起來。 DeveloperKit開發板 在例程中分別用到兩個led和一個按鈕,上圖中用紅色的框標識出來。ios
本文將介紹怎麼樣在VScode環境下,將AliOS Tings提供的blink例程在Developerkit開發板上運行起來。git
DeveloperKit開發板github
在例程中分別用到兩個led和一個按鈕,上圖中用紅色的框標識出來。例程正確運行後,會有一個LED按1s的週期閃爍,另一個LED當按鍵被按下時,切換輸出電平。本文中,各個硬件的分配以下表:app
外設名稱編輯器 |
對應gpio函數 |
實驗中的功能工具 |
LED1oop |
PB6ui |
每秒閃爍1次設計 |
LED2 |
PE3 |
當檢測到按鍵時切換輸出電平 |
按鈕M |
PE11 |
經過中斷方式檢測按接下來咱們進入代碼,並按照具體的硬件對應引腳修改源碼。 |
同VS CODE打開AliOS-Things 2.0源碼,若是您尚未AliOS-Things的源碼,能夠在VS code的控制檯中經過git工具進行拉取,拉取命令以下:
git clone https://github.com/alibaba/AliOS-Things.git
打開源碼後,咱們在源碼的app/example/blink目錄下,打開blink.c,在源碼的頂部找到幾個宏定義以下:
#define GPIO_LED_IO 18 #define GPIO_TRIGGER_IO 4 #define GPIO_INPUT_IO 5
上述的幾個宏定義須要和咱們和實際的硬件對應,對應關係以下表:
宏定義 |
對應硬件 |
實際IO口 |
OS中的引腳編號 |
實驗中的功能 |
GPIO_LED_IO |
LED1 |
PB6 |
22 |
每秒閃爍1次 |
GPIO_TRIGGER_IO |
LED2 |
PE3 |
67 |
當檢測到按鍵時切換輸出電平 |
GPIO_INPUT_IO |
按鈕M |
PE11 |
75 |
經過中斷方式檢測按鍵 |
因爲AliOS-Things對硬件進行了抽象,因此對GPIO的操做須要先按照必定的規則將MCU的GPIO轉換爲編號。轉換規則爲MCU的GPIO bank號 X 16 + 具體gpio在bank中的位置,bank的編號從0開始。如PB6,其bank號爲1在bank中的位置爲6,則PB6應被轉換爲 1 X 16 + 6 = 22;同理,PE3=4 x 16 + 3 = 67。由於例程不是爲Developerkit開發板而寫,因此須要修改例程中的宏第一以下:
#define GPIO_LED_IO 67 // PE3 #define GPIO_TRIGGER_IO 22 // PB6 #define GPIO_INPUT_IO 75 // PE11
完成修改後,保存blink.c文件。
在VS CODE環境中,在左下角的alios-studio中,點擊編譯目標選擇按鈕
此時編輯器頂部的命令輸入框會彈出選擇要編譯的目標,此時選擇blink
緊接着會繼續要求選擇開發板,此時選擇Developerkit開發板。
接下來經過alios-studio工具條的編譯按鈕啓動編譯。
等待編譯完成。
Making blink@developerkit.bin Making blink@developerkit.hex AOS MEMORY MAP |=================================================================| | MODULE | ROM | RAM | |=================================================================| | newlib_stub | 296 | 0 | | sal | 6977 | 250 | | kv | 3055 | 104 | | common | 256 | 12 | | libc_nano | 19649 | 602 | | kernel_init | 653 | 36 | | rhino | 16225 | 7821 | | developerkit | 5045 | 1403 | | vfs | 950 | 1141 | | digest_algorithm | 92 | 0 | | libgcc | 3320 | 0 | | stm32l4xx_cube | 26592 | 8506 | | cli | 6234 | 357 | | yloop | 2369 | 28 | | device_sal_bk7231 | 8542 | 265 | | sensor | 9451 | 303 | | osal | 1074 | 4 | | log | 412 | 20 | | hal | 164 | 12 | | blink | 325 | 24 | | atparser | 5882 | 297 | | armv7m | 1975 | 0 | | *fill* | 150 | 1599 | |=================================================================| | TOTAL (bytes) | 119688 | 22784 | |=================================================================| Build complete
將Developerkit鏈接至PC,確保開發板的STlink驅動已被正確安裝。
經過alios-studio工具條中的下載按鈕,將編譯好的固件下載到開發板中。
燒寫完成後開發板會自動運行,此時能夠看到LED開始按1s爲間隔閃爍。按動板上的「M」按鈕,LED2會切換輸出。這裏要指出,blink Demo主要爲了演示GPIO的HAL層操做函數,並無作按鍵去抖動工做,因此點按按鈕時,可能會出現按一次LED2直接切換兩次。也請你們在實際的代碼設計中注意按鍵去抖能力的加入。到此,例程已成功完成運行。