Mbed的在線IDE與IAR、keil的關係,就像維生素片和水果的關係,有人覺得咀嚼片來的方便,但也有人覺得自己親自削水果來得有趣。在線IDE編譯很方便快捷,開發快速,但沒有調試功能,而第三方的開發工具都是可視化的。
那為何Mbed非用不可?聽Momoko扯一扯。
mbedOS是ARM自己打造、主打IoT的一整套軟體解決方案,是一個針對ARM CortexM系列處理器的嵌入式開源生態。項目依賴則通過.lib文件來描述,.lib文件其實是一個txt文件,描述了依賴庫的源碼git url以及版本信息。
mbedOS的接口都是以C++的接口形式實現,也就是說對於某一類對象或者操作都會封裝成類。所以API都是以類函數和靜態函數提供。Mbed提供了統一的函數接口,屏蔽對底層的操作。
例如筆者寫過的《Momoko Mbed學習:GPIO中斷》http://www.all4lib.com/topic/3059?ifpost=0中的 InterruptIn 類,除了下降沿觸發中斷還可設置上升沿觸發中斷,讀取 IO 輸入狀態,使能/禁止中斷。mbed 環境下使用 GPIO 外部中斷非常簡單, 用戶不需要配置中斷相關寄存器例如AFIO_EXTI[0-4]、AFIO_EVCR等或者清除標誌位,只需專注於用戶的事務。
我們來看看如果不用mbed到底複雜在哪裡?
由於GPIO並不是專用的中斷引腳,因此在用GPIO來觸發外部中斷的時候需要設置將GPIO相應的引腳和中斷線連接起來,具體代碼如下:
void EXTI_cfg()
{ EXTI_InitTypeDefEXTI_InitStructure;
//清空中斷標誌
EXTI_ClearITPendingBit(EXTI_Line13);
//選擇中斷管腳PC.13
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource13);
EXTI_InitStructure.EXTI_Line= EXTI_Line13 ; //選擇中斷線路13
EXTI_InitStructure.EXTI_Mode= EXTI_Mode_Interrupt; //設置為中斷請求,非事件請求
EXTI_InitStructure.EXTI_Trigger= EXTI_Trigger_Rising_Falling; //設置中斷觸發方式為上下降沿觸發
EXTI_InitStructure.EXTI_LineCmd=ENABLE; //外部中斷使能
EXTI_Init(&EXTI_InitStructure);
}
EXTI_cfg中需要調用到的函數都在stm32f10x_exti.c。 STM32的中斷響應函數接口存在中斷向量表中,是由啟動代碼給出的。默認的中斷響應函數在stm32f10x_it.c中。因此我們需要把這個文件加入到工程中來。
是不是覺得複雜了很多?那麼我們來探究一下Mbed中其他的類函數還有什麼?
mbedOS提供以下幾種類型的API:
任務管理:在mbed作業系統中處理任務和事件。 輸入和輸出:模擬或數位訊號,總線,埠,中斷和PwmOut。 AnalogI/O:這類API讀取或設置模擬引腳的電壓
設置模擬輸出引腳的電壓。
Digital I/O:可以單獨控制數字引腳或分組值,DigitalIn/Out是GPIO的輸入輸出類
1. 單獨控制
DigitalIn:讀取單個數字輸入引腳。
DigitalOut:寫入單個數字輸出引腳。
DigitalInOut:讀寫單個雙向數字引腳。
2. 分組控制
BusIn:讀取多個引腳作為單個值。
BusOut:將單個值寫入多個引腳。
BusInOut:讀寫多個雙向引腳。
PortIn:讀取多個引腳作為單個值。
PortOut:將一個值寫入多個引腳。
PortInOut:讀寫多個雙向引腳。
InterruptIn: 當數字輸入引腳改變值時,InterruptIn產生中斷,觸發事件。InterruptIn則是將GPIO配置成輸入產生中斷的類
PwmOut:PwmOut則是PWM模塊的方波輸出類
數字接口:允許您的電路板與計算機或外部設備連接。主要有串行,SPI,I2C和CAN
Serial, UART類:異步串口通訊
SPI/SPISlave 類:串行外設電路
I2C/I2CSlave 類:內部集成電路
CAN 類:不使用計算機連接兩臺設備
網絡Sockets:標準的Socket接口,只是以C++封裝,提供在網絡設備上使用Sockets的通用接口
乙太網:連接,獲取MAC地址等的接口,用於通過乙太網連接連接到網際網路的API
WiFi:進行scan,連接到指定SSID等的接口,使用Wi-Fi設備連接到網際網路的API
Mesh網絡:mbed OS提供兩種基於IPv6的網狀網絡 - 6LoWPAN_ND和線程。
藍牙低功耗(BLE):一套完整的BLE類接口(https://docs.mbed.com/docs/mbed-os-api-reference/en/5.1/APIs/communication/ble/)專為小型,高能效的BLE應用而設計, 和上面的接口比起來相對獨立。乙太網、Wifi只是對網絡設備的基本操作,之後都可以走socket做通訊。
mbed作業系統上的安全分為兩部分:
這麼多的API,可以滿足基本設計需求。想要調試程序?在項目右擊Export Program,在出現的窗口選擇keil或是IAR:
導出文件就會出現下載,解壓下載好的文件,就可以在你熟悉的keil或是IAR中進行調試了。