在2017年機(jī)智云和正點(diǎn)原子聯(lián)袂發(fā)布正點(diǎn)原子接入機(jī)智云教程,提供了一整套基于STM32開發(fā)板的接入教程和實(shí)例源碼,從平臺(tái)配置到程序配置,為開發(fā)人員提供一種便捷的接入云平臺(tái)方案。
所有正點(diǎn)原子STM32開發(fā)板(除mini外)均具有ATK-Module接口,只需要把ATK-ESP8266模塊直接連接到該接口即可。mini開發(fā)板需要通過(guò)杜邦線鏈接。
換句話說(shuō),所有正點(diǎn)原子的開發(fā)板都可以輕松連云了,幾小時(shí)搞定遠(yuǎn)程控制。
教程下載地址:http://pan.baidu.com/s/1geUdgJ5
但是由于時(shí)間過(guò)長(zhǎng),手冊(cè)內(nèi)容中的Gizwits文件目錄和目前的機(jī)智云自動(dòng)生成的代碼目錄有一定的差異,因此移植過(guò)程有了一些改變。
為了方便大家針對(duì)新版機(jī)智云的代碼進(jìn)行移植,也為了給自己的移植過(guò)程做一個(gè)記錄,特此寫下正點(diǎn)原子探索者STM32F497的移植過(guò)程。
移植步驟
1、創(chuàng)建項(xiàng)目,定于數(shù)據(jù)點(diǎn),生成MCU代碼包
先登陸機(jī)智云自助開發(fā)平臺(tái)dev.gizwits.com
創(chuàng)建智能項(xiàng)目
定義數(shù)據(jù)點(diǎn)
生成MCU代碼(選擇其他平臺(tái))并下載
推薦使用最新的esp8266機(jī)智云GAgent固件
Gagent固件下載地址
download.gizwits.com/zh-cn/p/92/94
選擇生成其他平臺(tái)的代碼是標(biāo)準(zhǔn)庫(kù)
選擇F407平臺(tái)則生成的是HAL庫(kù)。
2.進(jìn)行移植
打開MCU代碼包正點(diǎn)原子的移植代碼
可以看到如下文件路徑:
將我們第一步驟下載的“MCU代碼包”進(jìn)行解壓縮,隨后將Gizwits文件夾和Utils文件夾復(fù)制到正點(diǎn)原子的移植代碼目錄中,提示覆蓋點(diǎn)擊確定即可。
打開工程,將Utils文件夾添加到頭文件路徑中
在gizwits_product.c中加入led.h和usart3.h
#include#include#include "gizwits_product.h"//下面兩個(gè)頭文件是我們后來(lái)加入的#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中的對(duì)應(yīng)位置
//下面的void userHandle(void)是我們從main.c中剪切過(guò)來(lái)的//數(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//實(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);處加入如下代碼
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,用機(jī)智云的手機(jī)App進(jìn)行連接調(diào)試。
4、演示效果
進(jìn)入即可控制LED的亮滅。
原文出自:https://mbb.eet-china.com/blog/3934591-420668.html
-
STM32
+關(guān)注
關(guān)注
2290文章
11018瀏覽量
362695
發(fā)布評(píng)論請(qǐng)先 登錄
基于STM32 HAL庫(kù)與標(biāo)準(zhǔn)庫(kù)的esp8266接入機(jī)智云方案(二)

基于STM32 HAL庫(kù)與標(biāo)準(zhǔn)庫(kù)的ESP8266接入機(jī)智云方案(一)

STM32與機(jī)智云連接實(shí)現(xiàn)步驟與技巧(下篇):機(jī)智云代碼移植與優(yōu)化

STM32與機(jī)智云連接實(shí)現(xiàn)步驟與技巧(上篇)

stm32f407這個(gè)STM32_RCC_PERIPHCLK_SDMMC是哪里定義的?
STM32F407和ADS8684進(jìn)行SPI通信,寄存器怎么配置?
【正點(diǎn)原子STM32H7R3開發(fā)套件試用體驗(yàn)】4G聯(lián)網(wǎng)工業(yè)設(shè)備控制網(wǎng)關(guān)
STM32F407 MCU使用SD NAND?不斷電初始化失效解決方案

STM32連接機(jī)智云,代碼移植,NTP實(shí)時(shí)時(shí)間獲取(二)

STM32連接機(jī)智云,代碼移植,NTP實(shí)時(shí)時(shí)間獲取(一)

正點(diǎn)原子的stm32開發(fā)板能用stlink嗎
基于機(jī)智云移植STM32L496G代碼移植

STM32最小系統(tǒng)板與ESP01S接入機(jī)智云教程

個(gè)人機(jī)智云開發(fā)實(shí)踐:經(jīng)驗(yàn)總結(jié)與技術(shù)分享

評(píng)論