MQTT協議在STM32上的移植

2021-10-01 18:35:51 字數 3303 閱讀 9515

mqtt協議在stm32上的移植

開發平台

軟體環境

硬體環境

參考文件

本篇是mqtt在stm32裝置上的移植,因此使用paho的嵌入式c

庫,原始碼位址

移植

首先,需要將

../paho.mqtt.embedded-c/mqttpacket/

中的所有檔案新增到keil工程檔案,然後參考

../paho.mqtt.embedded-c/mqttpacket/samples/

中的例程編寫。

移植的前提是保證已經建立tcp連線,因為mqtt協議實在tcp基礎上的資料傳輸協議。本實驗使用sim800c無線通訊模組先與mqtt伺服器建立tcp連線(使用透傳模式),再通過串列埠與stm32建立通訊聯絡。

介面函式

移植主要參考修改庫中的

../paho.mqtt.embedded-c/mqttpacket/samples/transport.c

例程檔案

,且主要是transport_sendpacketbuffer()和transport_getdata()函式,分別用來作為硬體實現傳送和接收資料報的介面函式,因此需要針對硬體平台做相應修改。 1

2 34 5

6 78 9

10 11

12 13

14 15

16 17

18 19

int32_t transport_sendpacketbuffer(uint8_t* buf, uint32_t buflen)

int32_t transport_getdata(uint8_t* buf, int32_t count)

連線1 2

3 45 6

7 89 10

11 12

13 14

15 16

17 18

19 20

21 22

23 24

25 26

27 28

29 30

31 32

33 34

35 36

37 38

39 40

41 42

43 44

uint8_t mqtt_connect(void)

else }

else

printf("no connack\n");

return 0; }

訂閱和發布函式1 2

3 45 6

7 89 10

11 12

13 14

15 16

17 18

19 20

21 22

23 24

25 26

27 28

29 30

31 32

33 34

35 36

37 38

39 40

41 42

43 44

45 46

47 48

49 50

51 52

53 54

55 56

57 58

void mqtt_publish(char *ppubtopic, char *pmessage)

uint8_t mqtt_subscribe(char *psubtopic)

; uint32_t buflen = sizeof(buf);

int32_t msgid = 1;

int32_t req_qos = 0;

uint32_t rc, len = 0;

mqttstring topicstring = mqttstring_initializer;

topicstring.cstring = psubtopic;

len = mqttserialize_subscribe(buf, buflen, 0, msgid, 1, &topicstring, &req_qos);

rc = transport_sendpacketbuffer(buf, len);

reset_receive_buf();

if (mqttpacket_read(buf, buflen, transport_getdata) == suback) /* wait for suback */

else }

else

printf("no suback received!\r\n");

return 0; }

接收資料報解析函式1 2

MODBUS協議在STM32上實現 一

第一節 通訊的硬體協議機制 主從模式的建立 目的 實現在modbus的從機實現 1.硬體層協議 解決傳輸問題,相當於路 2.軟體層協議 舉例 例如rs232 傳送1是多少v,傳送0是多少v 485協議 這個硬體晶元是廠商做到一起的,一般需要有一根控制線用開判斷是哪種模式 can硬體協議也是類似的 1...

ProtoThread在STM32上實現跑馬燈

protothread相關介紹,原始碼獲取等請到我的另乙個博文閱讀 protothread的介紹 protothread優缺點都有,它實現了乙個輕量級的基於事件觸發的執行緒模型,特別適用於走台階似的一級一級的往下走問題處理,你到了某個台階上,不走了,去了一趟廁所,回來後可以從這個台階上繼續往前走,不...

在STM32上移植FreeRTOS

freertos是乙個迷你的實時作業系統核心。作為乙個輕量級的作業系統,功能包括 任務管理 時間管理 訊號量 訊息佇列 記憶體管理 記錄功能 軟體定時器 協程等,可基本滿足較小系統的需要。開啟後如下如顯示 為了避免出錯,請將路徑改為全英文 將主程式改為如下 include freertos.h in...