在2017年機(jī)智云和正點(diǎn)原子聯(lián)袂發(fā)布正點(diǎn)原子接入機(jī)智云教程,提供了一整套基于STM32開(kāi)發(fā)板的接入教程和實(shí)例源碼,從平臺(tái)配置到程序配置,為開(kāi)發(fā)人員提供一種便捷的接入云平臺(tái)方案。
所有正點(diǎn)原子STM32開(kāi)發(fā)板(除mini外)均具有ATK-Module接口,只需要把ATK-ESP8266模塊直接連接到該接口即可。mini開(kāi)發(fā)板需要通過(guò)杜邦線鏈接。
換句話說(shuō),所有正點(diǎn)原子的開(kāi)發(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è)記錄,特此寫(xiě)下正點(diǎn)原子探索者STM32F407的移植過(guò)程。
移植步驟
1、創(chuàng)建項(xiàng)目,定于數(shù)據(jù)點(diǎn),生成MCU代碼包
先登陸機(jī)智云自助開(kāi)發(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)行移植
打開(kāi)MCU代碼包正點(diǎn)原子的移植代碼

可以看到如下文件路徑:

將我們第一步驟下載的“MCU代碼包”進(jìn)行解壓縮,隨后將Gizwits文件夾和Utils文件夾復(fù)制到正點(diǎn)原子的移植代碼目錄中,提示覆蓋點(diǎn)擊確定即可。

打開(kāi)工程,將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開(kāi)關(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開(kāi)關(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
"" div="" style="overflow-wrap: break-word; margin: 0px; padding: 0px; box-sizing: border-box;">{
GIZWITS_LOG("%02x ", buf);
}
GIZWITS_LOG(" ");
#endif
for(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)試
編譯下載到開(kāi)發(fā)板即可。

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


4、演示效果
進(jìn)入即可控制LED的亮滅。

原文標(biāo)題:正點(diǎn)原子探索版STM32F407,接入機(jī)智云之代碼移植
文章出處:【微信公眾號(hào):機(jī)智云開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅
-
移植
+關(guān)注
關(guān)注
1文章
406瀏覽量
29060 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5999瀏覽量
110023 -
STM32F407
+關(guān)注
關(guān)注
15文章
188瀏覽量
31169 -
機(jī)智云
+關(guān)注
關(guān)注
3文章
629瀏覽量
27459 -
正點(diǎn)原子
+關(guān)注
關(guān)注
9文章
31瀏覽量
10720
原文標(biāo)題:正點(diǎn)原子探索版STM32F407,接入機(jī)智云之代碼移植
文章出處:【微信號(hào):IoTMaker,微信公眾號(hào):機(jī)智云開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
正點(diǎn)原子F407開(kāi)發(fā)板BSP RTstudio配置LVGL demo界面不能觸摸怎么解決?
【今晚7點(diǎn)半】正點(diǎn)原子 x STM32:智能加速邊緣AI應(yīng)用開(kāi)發(fā)!今晚正點(diǎn)原子B站直播間等你
rtt5.0.0下lvgl在正點(diǎn)原子stm32f407探索者開(kāi)發(fā)板V3上mdk編譯報(bào)錯(cuò)怎么解決?
【正點(diǎn)原子STM32MP257開(kāi)發(fā)板試用】系統(tǒng)更新
【正點(diǎn)原子STM32MP257開(kāi)發(fā)板試用】+ STM32MP257開(kāi)發(fā)板開(kāi)箱評(píng)測(cè)
【新品體驗(yàn)】正點(diǎn)原子STM32MP257開(kāi)發(fā)板免費(fèi)試用

【新品體驗(yàn)】正點(diǎn)原子STM32MP257開(kāi)發(fā)板免費(fèi)試用
如何在APM32F407開(kāi)發(fā)板上應(yīng)用uC/OS-III實(shí)時(shí)操作系統(tǒng)

【AI開(kāi)發(fā)板】正點(diǎn)原子K230D BOX開(kāi)發(fā)板來(lái)了!一款性能強(qiáng)悍且小巧便攜的AI開(kāi)發(fā)板!
【正點(diǎn)原子STM32H7R3開(kāi)發(fā)套件試用體驗(yàn)】4G聯(lián)網(wǎng)工業(yè)設(shè)備控制網(wǎng)關(guān)
【正點(diǎn)原子STM32H7R3開(kāi)發(fā)套件試用體驗(yàn)】開(kāi)發(fā)套件開(kāi)箱報(bào)告
STM32F407 MCU使用SD NAND?不斷電初始化失效解決方案

評(píng)論