Mbed非用不可嗎?

2021-12-26 開源Block

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 類:不使用計算機連接兩臺設備

通訊:網絡插口,乙太網,WiFi、Mesh網絡和BLE

網絡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做通訊。

安全(C接口):在mbed作業系統的上下文中使用mbed uVisor和mbed TLS。

mbed作業系統上的安全分為兩部分:

    這麼多的API,可以滿足基本設計需求。想要調試程序?在項目右擊Export Program,在出現的窗口選擇keil或是IAR:


導出文件就會出現下載,解壓下載好的文件,就可以在你熟悉的keil或是IAR中進行調試了。

相關焦點

  • 【套路】用一個小例程來談談mbed的優點
    接下來呢,我用mbed編寫一個簡單易上手小程序點亮燈,在之前的學習筆記中我有說過如何創建一個數字輸入/輸出功能工程(請複製以下連結粘貼至手機瀏覽器查看http://www.all4lib.com/topic/2998?ifpost=0)。
  • 這個mbed OS,會成為物聯網的Android嗎?
    而 mbed OS 就是給所有 Cortex-M 設備使用的免費作業系統(RTOS)。接受 PingWest 採訪時 ARM 物聯網業務副總裁 Michael Horne 證實 mbed OS 也可以給 Cortex-A 手機系列晶片使用,但 mbed OS 專注於物聯網設備。物聯網的特徵是功耗更敏感、設備更小,設置沒有屏幕,使用場景也千差萬別。
  • 【Nucleo-L432評測】+ 體驗ARM-mbed
    mbed是一個面向ARM處理器的原型開發平臺,它具體包括免費的軟體庫(SDK),硬體參考設計(HDK)和在線工具(Web)三部分內容,各個部分的具體介紹如下:SDK:mbed設計了一個硬體抽象層,從而屏蔽了不同mcu廠商提供了微處理之間的差異,對於用戶來說,他只需要和這個硬體抽象層打交道即可,也就是說,用戶基於mbed開發的應用可以很方便地更換使用不同廠商的arm
  • mbed入門學習筆記(24篇全)
    訪問 mbed 中文官網主頁 https://www.mbed.com/zh-cn/about-mbed/,可以看到簡介,ARM 為推廣 IoT 應用專門成立了一個新部門 mbed。簡單來說, mbed是專為物聯網(IoT)設備開發的一個軟體開發平臺。使用 mbed 平臺開發的直觀感受就是: 簡單易用, 不必關心硬體底層操作, 可選的硬體平臺很多。
  • ARM推出mbed物聯網裝置平臺
    該平臺還有持續成長的mbed軟硬體生態系統作強而有力的後盾,為物聯網裝置與服務提供通用的基礎元件。為簡化及加速物聯網(IoT)裝置的產出與部署,ARM推出新款軟體平臺ARM mbed IoT Device Platform及mbed OS免費作業系統。
  • 被ARM寄予厚望的mbed,現在怎麼樣了?
    在昨日的ARM mbed connect 2016大會上,ARM公布了mbed平臺的最新進展。據ARM合作夥伴技術負責人Mihail Stoyanov介紹,在其最新的mbed OS 5上已經有超過20萬的註冊開發者,顯然,這比去年12月ARM 25周年上公布的數據(15萬)並沒有太大的提升。
  • CSR推出ARM mbed作業系統連接方案
    CSR公司日前發布了幾款即將推出的面向新型ARM® mbed™作業系統(OS)的連接方案產品細節,這些方案將使開發人員能夠更加輕鬆、快速地開發出完整的物聯網(IoT)解決方案。CSR將為IoT社區開發者提供兩款mbed擴展板,其中一款集成了基於CSR6030™和 CSR8311™的Wi-Fi與藍牙連接方案,另一款則可提供基於CSR1010™的Bluetooth Smart連接功能,將於2015年初全面上市。兩款擴展板專為與2014年10月上市的ARM mbed作業系統進行無縫協作而設計,可為所有IoT設備提供所需的基礎連接功能。
  • 在開發者眼中,ARM mbed平臺的優劣各是什麼?
    ARM高調發布了它的mbed OS開發平臺,這在智能硬體圈裡引起了一些轟動。好多人都知道機智雲在國內最早做為智能硬體提供技術服務的雲平臺,於是有不少朋友問我,mbed到底如何?是否真如宣傳那麼給力?首先,相較於過去的開發工具和作業系統,mbed確實提供了一個相對更加系統和更加全面的智能硬體開發環境。
  • NUCLEO-L452RE快速入門之mbed的使用
    開發環境使用的是ST官方提供的Arduino的開發環境,也就是在線開發環境mbed。本文簡答介紹一下關於mbed的使用。1.mbed的下載(連結可在「閱讀全文」的文檔裡找到),其實使用usb連接Nucleo板子到電腦,電腦會識別出一個存儲盤,打開新識別的存儲盤,裡面就存儲有一個mbed的開發連結。
  • ARM推出為物聯網打造的開放平臺mbed OS
    該軟體為基於ARM現有Cortex-M架構設計的mbed平臺,包括免費的嵌入式mbed OS作業系統,以及軟體工具包mbed Device Server,ARM公司稱「能夠以安全的方式為連接和管理設備提供所需的伺服器端技術
  • Silicon Labs的Gecko技術使ARM mbed OS更加節能
    (芯科科技有限公司,NASDAQ:SLAB),今日宣布基於ARM Cortex-M處理器的節能型EFM32 Gecko MCU產品組合現在已經廣泛支持ARM mbed OS。Silicon Labs的Giant Gecko、Happy Gecko、Leopard Gecko和Wonder Gecko MCU運行mbed OS以及mbed電源管理應用編程接口(API),為嵌入式開發人員構建電池供電、基於ARM的IoT連接設備提供最佳的能效、易用性和安全技術。
  • ARM mbed Connect,這也許是你最看好的科技大會!
    好吧,官微君承認,ARM mbed Connect 2016 確實是件大事!好故事,開始的時候它是這樣的↓↓↓     從2014年ARM推出mbed平臺開始,這家IP公司就正式進軍物聯網市場,正式翻開了物聯網的牌子,也表達了對的IOT的野心。12月5日的大會上ARM公布了mbed平臺的最新進展,並介紹了最新的mbed OS 5已經超過20萬的註冊者,顯然ARM對mbed的投入遠超了業界的預期。
  • 彎路,非走不可?
    搜索彎路和大學生兩個關鍵字,百度和知乎上的搜索結果近億條,有人分享走過彎路的經驗;有人給出少走彎路的建議;有人說彎路是財富,不走是損失;有人說走彎路要謹慎,弄不好彎路變絕路……「在人生的路上,有一條路每個人非走不可,那就是年輕時候的彎路。不摔跟頭,不碰壁,不碰個頭破血流,怎能練成鋼筋鐵骨,怎能長大呢?」
  • ARM公布為"物聯網"設計的嵌入式mbed OS系統軟體平臺
    繼ARM公司發布了為嵌入式微控制器設計的Cortex-M7架
  • 玩轉ARM、mbed和Arduino平臺的參考設計
    一款兼容Arduino® 和ARM® mbed™ 平臺的擴展板,可用於快速開發產品原型!它究竟是——?
  • Facebook「非死不可」?
    大洋的另一邊,人們隔岸觀火,卻也沒忘調侃一句臉書(Facebook)這回「非死不可」了。從「臉書」的音譯到「非死不可」的變形,這個全球最大的社交巨頭似乎從天堂跌入了地獄,用戶流失、數據洩露、助選醜聞、天價罰單,刀刀斃命。然而百足之蟲尚且死而不僵,在這個流量就是生命的時代裡,對於臉書最大的「金主」廣告商而言,生意和道德孰重孰輕不言而喻。
  • 網物聯作業系統之mbed
    #include "mbed.h" DigitalOut LED(PC_5)  main(){       printf("Hello The World!下面我們來看一個CAN 總線的應用程式   #include "mbed.h"   DigitalOut myled(D8);   CAN can1(PD_0, PD_1,500000);   int main() {   CANMessage msg;   while(1) {   if
  • 完美一躍、兼容ARM mbed OS——NuMaker-PFM-M453評測
    NuMaker Platform是新唐針對物聯網應用所開發的平臺,支持 ARM mbed OS 5,適合做為物聯網各式應用開發,並且支持通用Arduino接口,讓用戶快速加入感測與無線模塊進行原型設備設計。
  • Micrium發布利用uCOS-III+uC/TCP-IP連接ARM mbed雲端的教程,手頭有STM32F7探索板的可測試
    用於ST官方的STM32F7探索版例子:https://www.micrium.com/download/stm32f7-discovery-smart-thermostat-mbed-project/ ========================對於這個工程,簡單的說就是在uCOS-III+uC/TCP-IP的基礎上移植mbed
  • 【揭秘】柳傳志5小時密談:大企業非死不可嗎?
    我第一個發言就提了個狠問題:「小米時代」,楊元慶的思維方式顯然老了,作為聯想控股的「老大」,你怎麼看聯想集團的「老大」?還有人問:眼瞅著十幾歲的BAT市值都在800-3000億美金之間,明年三十多歲的聯想控股上市會不會覺得冤?還有人質疑:這家老牌領袖企業的底層思維方式有可能扭轉嗎?矛頭都指向這個時代的殘酷命題:企業做大以後非死不可嗎?