在Developerkit開發板上運行blink例程

本文將介紹怎麼樣在VScode環境下,將AliOS Tings提供的blink例程在Developerkit開發板上運行起來。ios

413f8cd9e7ea5426c663ce40bb9ab8b3efc03556
DeveloperKit開發板git

在例程中分別用到兩個led和一個按鈕,上圖中用紅色的框標識出來。例程正確運行後,會有一個LED按1s的週期閃爍,另一個LED當按鍵被按下時,切換輸出電平。本文中,各個硬件的分配以下表:github

外設名稱app

對應gpio編輯器

實驗中的功能函數

LED1工具

PB6oop

每秒閃爍1次ui

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中,點擊編譯目標選擇按鈕

256281c1a6f3dee6ef45a64b7d3ec2cee979ffbc

此時編輯器頂部的命令輸入框會彈出選擇要編譯的目標,此時選擇blink

061bb5cfbf1e7bcee5358013b30baa2741e498d9

緊接着會繼續要求選擇開發板,此時選擇Developerkit開發板。

2ab4808d31eb931edd4e735ae50f473b9a43978d

接下來經過alios-studio工具條的編譯按鈕啓動編譯。

e43a7a48afa73182c81626f775ce0ae049618093

等待編譯完成。

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驅動已被正確安裝。

3b06db95172f9fc8a5a68358d6d679fd742cdb6c

經過alios-studio工具條中的下載按鈕,將編譯好的固件下載到開發板中。

3fe46c048844e03bfead21ad1a20fafce4b58e0f

燒寫完成後開發板會自動運行,此時能夠看到LED開始按1s爲間隔閃爍。按動板上的「M」按鈕,LED2會切換輸出。這裏要指出,blink Demo主要爲了演示GPIO的HAL層操做函數,並無作按鍵去抖動工做,因此點按按鈕時,可能會出現按一次LED2直接切換兩次。也請你們在實際的代碼設計中注意按鍵去抖能力的加入。到此,例程已成功完成運行。


原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索