在2017年機智云和正點原子聯(lián)袂發(fā)布正點原子接入機智云教程,提供了一整套基于STM32開發(fā)板的接入教程和實例源碼,從平臺配置到程序配置,為開發(fā)人員提供一種便捷的接入云平臺方案。
所有正點原子STM32開發(fā)板(除mini外)均具有ATK-Module接口,只需要把ATK-ESP8266模塊直接連接到該接口即可。mini開發(fā)板需要通過杜邦線鏈接。
換句話說,所有正點原子的開發(fā)板都可以輕松連云了,幾小時搞定遠程控制。
教程下載地址:http://pan.baidu.com/s/1geUdgJ5
但是由于時間過長,手冊內(nèi)容中的Gizwits文件目錄和目前的機智云自動生成的代碼目錄有一定的差異,因此移植過程有了一些改變。
為了方便大家針對新版機智云的代碼進行移植,也為了給自己的移植過程做一個記錄,特此寫下正點原子探索者STM32F497的移植過程。
移植步驟
1、創(chuàng)建項目,定于數(shù)據(jù)點,生成MCU代碼包
先登陸機智云自助開發(fā)平臺dev.gizwits.com
創(chuàng)建智能項目
定義數(shù)據(jù)點
生成MCU代碼(選擇其他平臺)并下載
Gagent固件下載地址
download.gizwits.com/zh-cn/p/92/94
選擇生成其他平臺的代碼是標(biāo)準(zhǔn)庫
選擇F407平臺則生成的是HAL庫。
2.進行移植
打開MCU代碼包正點原子的移植代碼
可以看到如下文件路徑:
將我們第一步驟下載的“MCU代碼包”進行解壓縮,隨后將Gizwits文件夾和Utils文件夾復(fù)制到正點原子的移植代碼目錄中,提示覆蓋點擊確定即可。
打開工程,將Utils文件夾添加到頭文件路徑中
在gizwits_product.c中加入led.h和usart3.h
#include#include#include "gizwits_product.h"//下面兩個頭文件是我們后來加入的#include "led.h"#include "usart3.h"
修改dataPoint_t currentDataPoint為extern dataPoint_t currentDataPoint
/** Current datapoint *///dataPoint_t currentDataPoint;extern dataPoint_t currentDataPoint;
找到以下代碼,并加入
if(0x01 == currentDataPoint.valueLEDonoff){//user handle//下面一行是我們后加入的 LED1=0;//LED1亮}else{//user handle//下面一行是我們后加入的 LED1=1;//LED1滅 }
將main.c中的void userHandle(void)
//數(shù)據(jù)采集void userHandle(void){//判斷當(dāng)前LED1開關(guān)量if(LED1==0)currentDataPoint.valueLEDonoff = 1;else currentDataPoint.valueLEDonoff = 0;}
剪切到gizwits_product.c中的對應(yīng)位置
//下面的void userHandle(void)是我們從main.c中剪切過來的//數(shù)據(jù)采集void userHandle(void){//判斷當(dāng)前LED1開關(guān)量if(LED1==0)currentDataPoint.valueLEDonoff = 1;else currentDataPoint.valueLEDonoff = 0;}
修改gizwits_product.c中的int32_t uartWrite(uint8_t *buf, uint32_t len)
int32_t uartWrite(uint8_t *buf, uint32_t len){uint32_t i = 0;if(NULL == buf){return -1;}#ifdef PROTOCOL_DEBUGGIZWITS_LOG("MCU2WiFi[%4d:%4d]: ", gizGetTimerCount(), len);for(i=0; i"" div="" style="overflow-wrap: break-word; margin: 0px; padding: 0px; box-sizing: border-box;">{GIZWITS_LOG("%02x ", buf);}GIZWITS_LOG("\n");#endiffor(i=0; i"" i="" style="overflow-wrap: break-word; margin: 0px; padding: 0px; box-sizing: border-box;">{//USART_SendData(UART, buf);//STM32 test demo//實現(xiàn)串口發(fā)送函數(shù),將buf發(fā)送到模組 USART_SendData(USART3,buf);while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET); //循環(huán)發(fā)送,直到發(fā)送完畢if(i >=2 && buf == 0xFF){//實現(xiàn)串口發(fā)送函數(shù),將0x55發(fā)送到模組 USART_SendData(USART3,0x55);while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET); //循環(huán)發(fā)送,直到發(fā)送完畢}}return len;}
在gizwits_product.c中的void mcuRestart(void);處加入如下代碼
void mcuRestart(void){__set_FAULTMASK(1);//關(guān)閉所有中斷NVIC_SystemReset();//復(fù)位 }
在gizwits_product.h中加入void gizTimerMs(void);
void userInit(void);void userHandle(void);void mcuRestart(void);//下面的一行是我們后面加入的void gizTimerMs(void);
至此,移植完成
3、編譯、調(diào)試
編譯下載到開發(fā)板即可。
按下KEY1,用機智云的手機App進行連接調(diào)試。
4、演示效果
進入即可控制LED的亮滅。
原文出自:https://mbb.eet-china.com/blog/3934591-420668.html
-
STM32
+關(guān)注
關(guān)注
2270文章
10900瀏覽量
356045
發(fā)布評論請先 登錄
相關(guān)推薦
評論