在之前的文章中, 我們闡述了如何用C#在STM32上寫第一個Hello world , 有朋友抱怨國內介紹文章, 都是一個 Hello world , 然后再也沒有音訊, 寫到這里我想提一下我的初心, 那就是告訴所有人C#無所不能, C#可以寫單片機, 也可以寫Web應用, 也可以寫移動應用, 也可以寫桌面應用, 又有人提到 nanoFramework 的性能問題, 這點我認為跟MicroPython 等解釋型STM32應用一致的, 跟C寫的 代碼我認為是無法匹敵的!工作中長期使用C來寫應用, 這點是公認也是非常有感觸的。 那么今天我再介紹一下如何使用 nanoFramework 在STM32下面對接物聯網平台IoTSharp !
一、選用開發板
這次我們選擇了開發板 ST NUCLEO-F746ZG


NUCLEO-F746ZG 是ST公司推出的一款針對STM32F7系列設計的Cortex-M7 Nucleo-144開發板,支持mbed,兼容Arduino、還帶有ST Zio和 ST Morpho 擴展接口,可連接微控制器的所有周邊外設。
開發板基於STM32F746ZGT6設計,開發板還集成了ST-LINK/V2-1仿真下載器(但僅對外提供SWD接口),免除您另外采購仿真器或下載器的麻煩。並且具備Arduino接口,可接入 Arduino 巨大生態系統的各種 Shield 擴展板,讓您能夠輕松快速增加特殊功能。
之所以選擇NUCLEO-F746ZG 是因為 他具有網口, 用C#在STM32上寫第一個Hello world 文章中選擇的開發板不具有網絡功能。
二、創建應用:
如果看過用C#在STM32上寫第一個Hello world 這篇文章, 我們就不必再闡述如何創建項目了, 具體demo 我已經提交到了 https://github.com/IoTSharp/IoTSharp.Edge.nanoFramework , 項目中需要引用到 nanoFramework.M2Mqtt , 我們通過他來連接 IoTSharp的 Mqtt Broker , 首先, 啟動IoTSharp 項目 https://github.com/IoTSharp/IoTSharp , 啟動項目https://github.com/IoTSharp/Cicada , 這里如果有所有問題, 可以到相關項目里面提問, 這里不再闡述, 我們首先在Cicada 中創建一個設備

, 復制粘貼 Token ,
在項目 oTSharp.Edge.nanoFramework 的 Program.cs 中 修改
private const string _token = "581e918118a34c9faf2b9ede8245be33";//修改合理為Tokenprivate const string BrokerAddress = "192.168.0.23";//啟動IoTSharp的IP地址
三、連接並部署項目至ST NUCLEO-F746ZG
由於ST NUCLEO-F746ZG 跟之前文章不同 , 一個Micro USB線 即能跟ST-LINK連接, 又支持串口, 還能識別出來存儲, 因此一根線搞定一切, 也不需要弄烏七八糟的杜邦線之類的, 因此簡單很多。 按照用C#在STM32上寫第一個Hello world 的方法, 我們依然需要下載他的 https://bintray.com/nfbot/nanoframework-images-community-targets/ST_NUCLEO144_F746ZG/_latestVersion 解壓后, 燒寫, 然后VS中Device Explorer 中就可以看到設備, 如下圖:

點擊VS中的啟動, 來啟動調試項目
啟動后, 你可以看到我們的應用已經啟動了, 如下圖所示:

, 通過IoTSharp的客戶端可以看到上傳的遙測數據和客戶端屬性數據:

關於rpc和屬性更新, 我們會在基於此項目基礎上進行進一步完善。
如果有任何相關問題, 大家可以在相關項目提Issuse 或者加入QQ群: 63631741 , 共同學習, 共同進步。
