有句話說的好:
so,要想脫單,沒點套路是不行的。
沒錯,就是這個撩妹神器啦光立方。
作為漢子的你一定要學會這招,俘獲妹子的芳心;作為妹子的你更要學會這招,不要輕易被漢子的小把戲給迷倒嘍。
接下來呢,我用mbed編寫一個簡單易上手小程序點亮燈,在之前的學習筆記中我有說過如何創建一個數字輸入/輸出功能工程(請複製以下連結粘貼至手機瀏覽器查看http://www.all4lib.com/topic/2998?ifpost=0)。從數字輸入輸出的測試例程可以看到相比於庫函數,mbed的庫更加簡潔和好用,用戶不需要關心底層的代碼是怎麼實現的,操作了哪些寄存器,只需要關注應用本身,大大提高了開發速度,所以後面所有的程序我們都會用官方提供的庫來進行開發,這就是mbed的第一個優點。
來看看官方提供的數字輸入輸出部分的庫函數:
mbed中有三個類和數字輸入輸出相關,分別是DigitalIn(數字管腳輸入類)、DigitalOut(數字管腳輸出類)、DigitalInOut(數字管腳輸入輸出類),學過STM32庫函數的話應該明白這三個類提供的方法相當於GPIO庫函數的功能,但是更簡潔。
看完這些類和方法,試著點亮STM32F030R8開發板的一個LED燈。
之前我也有做過從mbed官網將在線工程導出為keil 4工程(http://www.all4lib.com/topic/2969?ifpost=0),就得到了一個模板,這樣就不用自己建立工程,做各種複雜的工程配置,是不是非常的簡單?
打開一個空的工程,main.cpp內容很簡單,如下:
#include "mbed.h"int main(){}
注意不同的mbed.h文件所包含的晶片型號是不一樣的,具體取決於你從在線工程導出時選擇的開發板型號。
現在將main.cpp改成下面這樣:
#include "mbed.h"DigitalOut myled(LED1);構造DigitalOut類的一個對象myled,並初始化int main() { while(1) { myled = 1; wait(0.2); myled = 0; wait(1.0); }}
下載程序到開發板,可以看到LED1每0.2s閃爍一次。現在我們來分析一下代碼。程序首先構造DigitalOut類的一個對象myled,初始化參數為LED1,我們從mbed API看到,構造函數形式為:DititalOut(PinName Pin);也就意味著LED1是某個引腳名,我們打開PinNames.h文件可以看到下面的定義:
這裡定義了這塊開發板所用晶片的所有用戶可以使用的引腳,還定義了mbed接口引腳(A0~D15),還定義了功能引腳(LED1~PWM_OUT)。LED1連接的引腳是MCU的PA_5,LED2~LED4引腳也是PA_5。事實上,初始化參數也可以是LED2~LED5,當然也可以是引腳名稱。那為什麼要把4個LED定義到同一個引腳呢?因為這是我們從mbed官網導出的工程,它是以NUCLEO板為原型定義的,而NUCLEO板上只有一個用戶LED(通常是LED1)。
數字輸出就講到這裡,接下來看一下數字輸入。
數字輸入一般用於讀取外部數字信息,比如按鍵、開關的狀態。
下面寫一個簡單的程序,功能是當按鍵按下的時候,LED1狀態改變,代碼如下:
#include "mbed.h"DigitalOut myled1(LED1);DigitalIn button(USER_BUTTON,PullDown); int main(){ myled1 = 1; while(1) { if(button == 0) myled1 = !myled1; }}
開發板上的按鍵接在PC_13引腳,在PinNames.h中有定義,電路圖中,按鍵連接了外部上拉電阻,按下時會檢測到低電平。如果用戶需要外接按鍵,可以把Pin Mode改為PullUp(內部上拉)、PullDown(內部下拉)、PullNone(懸空)、OpenDrain(開漏)四種模式,這樣在外接按鍵時就可以簡化電路設計。
實際上當我們下載程序後發現,有時候按下一次,LED1的狀態改變多次,有時沒有改變,這主要是由於按鍵抖動造成的,我們可以考慮加上按鍵消抖,效果會好很多。下面是按鍵消抖的代碼,在檢測時加了10ms的延時。
int main(){ myled1 = 1; while(1) { if(button == 0) { wait_ms(10); if(button == 0) myled1 = !myled1; } }}
從上面看是不是覺的很簡單啊,用mbed編程的好處:
首先,化繁瑣為簡單,這對於當前很多不熟悉智能硬體的人來說,幫助是十分巨大的。
其次,mbed把很多與硬體相關的程序使用中間件進行封裝,這使得操作不用特意關心底層驅動,開發者只要會調用函數就可以了。
最後,它還可以支持離線和在線開發環境,可以離線開發也可以在線編輯。使得寫程序變的簡單。
去思享國官網閱讀更多好文章吧!