正點(diǎn)原子官方提供了與機(jī)智云連接的開發(fā)手冊,但是手冊內(nèi)容中的Gizwits文件目錄和目前的機(jī)智云自動(dòng)生成的代碼目錄有一定的差異,因此移植過程有了一些改變。為了方便大家針對新版機(jī)智云的代碼進(jìn)行移植,也為了給自己的移植過程做一個(gè)記錄,特此寫下正點(diǎn)原子探索者STM32F497的移植過程。
移植步驟
在機(jī)智云物聯(lián)網(wǎng)開發(fā)平臺(tái)新建設(shè)備,數(shù)據(jù)點(diǎn),生成代碼(選擇其他平臺(tái))并下載。注意:機(jī)智云物聯(lián)網(wǎng)開發(fā)平臺(tái)dev.gizwits.com推薦使用最新的esp8266機(jī)智云GAgent固件,其下載地址:/download.gizwits.com/zh-cn/p/92/94選擇生成其他平臺(tái)的代碼是標(biāo)準(zhǔn)庫,選擇F407平臺(tái)則生成的是HAL庫。

2.打開正點(diǎn)原子的移植代碼:

文件路徑:

將我們下載的自動(dòng)生成的代碼中的Gizwits文件夾和Utils文件夾復(fù)制到正點(diǎn)原子的移植代碼目錄中,提示覆蓋點(diǎn)擊確定即可。

打開工程,將Utils文件夾添加到頭文件路徑中

在gizwits_product.c中加入led.h和usart3.h
修改 dataPoint_t currentDataPoint 為 extern dataPoint_t currentDataPoint 找到以下代碼,并加入 將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_DEBUG GIZWITS_LOG("MCU2WiFi[%4d:%4d]: ", gizGetTimerCount(), len); for(i=0; i<len; i++) { GIZWITS_LOG("%02x ", buf); } GIZWITS_LOG("\n"); #endif for(i=0; i<len; i++) { //USART_SendData(UART, buf);//STM32 test demo //實(shí)現(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) { //實(shí)現(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); 處加入如下代碼 在gizwits_product.h中加入 void gizTimerMs(void); void userInit(void); void userHandle(void); void mcuRestart(void); //下面的一行是我們后面加入的 void gizTimerMs(void);
移植完成
編譯下載到開發(fā)板即可。

按下KEY1,用機(jī)智云的手機(jī)App進(jìn)行連接調(diào)試。


進(jìn)入即可控制LED的亮滅。

|