MQTT客戶端移植到STM32

2021-07-11 05:18:53 字數 1331 閱讀 1848

是新一代資訊科技的重要組成部分,也是「資訊化」時代的重要發展階段。其英文名稱是:「internet of things(iot)」。顧名思義,物聯網就是物物相連的網際網路。這有兩層意思:其一,物聯網的核心和基礎仍然是網際網路,是在網際網路基礎上的延伸和擴充套件的網路;其二,其使用者端延伸和擴充套件到了任何物品與物品之間,進行

資訊交換和通訊

,也就是物物相息。物聯網通過智慧型感知、識別技術與普適計算等通訊感知技術,廣泛應用於網路的融合中,也因此被稱為繼計算機、網際網路之後世界

資訊產業

發展的第三次浪潮

。物聯網是網際網路的應用拓展,與其說物聯網是網路,不如說物聯網是業務和應用。因此,應用創新是物聯網發展的核心,以

使用者體驗

為核心的

創新2.0

是物聯網發展的靈魂。

由於是簡單的實驗,我就採用了stm32 板子,定時收集感測器資料,通過串列埠轉wifi連線網路上傳,同時關注serve端傳過來的訊息;其中我這邊socket連線伺服器是在串列埠轉wifi模組中設定好伺服器的ip和port,這就不用我在stm32中操心了;當然也可以在stm32 中同過串列埠設定 串列埠轉wifi模組 進入at模式來控制socket的連線和斷開,所以移植過來的mqtt**中可以去掉這一塊了;——對了,差點忘記了,關於mqtt的demo很多,網上下了一大堆原始碼,從中找了乙個embed 相關的subscribe的 c原始碼;

原本以為這是一件很簡單的事情,原始碼有了,stm32 開發用了keil4,用c來編寫毫無問題;不管三七二十一的把.h和.c檔案全部copy過來,。。。。於是問題來了,人間的**是在linux上跑的,我這個stm32微控制器上沒有系統,**中的那些.h檔案十有**不能用,於是只能辛辛苦苦的根據main函式一步一步的把**拷過來,還好,大部分原始碼都不用改動,要改的只有兩個方面,一是涉及系統時間的,這方面我就用微控制器的定時器計時,二是原始碼中的socket 的read和write我用stm32串列埠來get和send;

大框架已經搭好,於是一步步配置好,進入迴圈中不斷subscribe和publish就可以了;由於我下的原始碼是只有subscribe的,我無法知道人家是如何實現同時接受和傳送的,但我想linux上多半是開個執行緒就可以了;由於我用的是stm32,沒法開多執行緒,於是初學微控制器的我傻眼了,我就簡單粗暴的再while迴圈中先subscribe在publish,很明顯,這絕對是錯誤的,執行起來伺服器那裡一發訊息過來,我這邊就很容易掛掉;於是我在想,linux的多執行緒在底層是怎麼實現的呢?是不是和以前學到的所謂時間片的分配有關,那我豈不是沒那個能力來實現了?好吧,這個問題看倆很深奧,留給以後的我給解決吧;作為初學者,我就採用了建立乙個buffer,串列埠中斷接收資料放到buffer中,迴圈中判斷buffer有資料的話就去處理,沒有的話就去publish;這樣乙個模型就暢快的建立起來了;

MQTT客戶端移植C語言

首先說明一下,下面demo是在linux上跑的,展現了嵌入式mqtt客戶端使用的一般流程,其核心就是把一些資料按mqtt協議打包好,再通過socket傳送到伺服器,你也可以移植到微控制器上,比如stm32,前提是能夠連線到服務通訊,一般wifi模組例如esp8266,內建了tcp ip協議棧,微控制...

FreeRTOS 移植到STM32記錄

新建乙個不包含中文路徑的資料夾名字為freertos,如下圖所示 freertos資料夾內容如下圖所示 其中heap 4.c檔案的路徑是 freertos freertosv9.0.0 freertos source portable memmang,port.c件的路徑是 freertos fre...

MQTT協議在STM32上的移植

mqtt協議在stm32上的移植 開發平台 軟體環境 硬體環境 參考文件 本篇是mqtt在stm32裝置上的移植,因此使用paho的嵌入式c 庫,原始碼位址 移植 首先,需要將 paho.mqtt.embedded c mqttpacket 中的所有檔案新增到keil工程檔案,然後參考 paho.m...