0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

正點原子探索版STM32F407,接入機智云之代碼移植

機智云 ? 2022-06-20 09:15 ? 次閱讀

在2017年機智云和正點原子聯(lián)袂發(fā)布正點原子接入機智云教程,提供了一整套基于STM32開發(fā)板的接入教程和實例源碼,從平臺配置到程序配置,為開發(fā)人員提供一種便捷的接入云平臺方案。

所有正點原子STM32開發(fā)板(除mini外)均具有ATK-Module接口,只需要把ATK-ESP8266模塊直接連接到該接口即可。mini開發(fā)板需要通過杜邦線鏈接。

換句話說,所有正點原子的開發(fā)板都可以輕松連云了,幾小時搞定遠程控制。

教程下載地址:http://pan.baidu.com/s/1geUdgJ5

a3999644-eff0-11ec-a2f4-dac502259ad0.png

a3ac03d8-eff0-11ec-a2f4-dac502259ad0.png

但是由于時間過長,手冊內(nèi)容中的Gizwits文件目錄和目前的機智云自動生成的代碼目錄有一定的差異,因此移植過程有了一些改變。

為了方便大家針對新版機智云的代碼進行移植,也為了給自己的移植過程做一個記錄,特此寫下正點原子探索者STM32F497的移植過程。


a3baab4a-eff0-11ec-a2f4-dac502259ad0.gif移植步驟

1、創(chuàng)建項目,定于數(shù)據(jù)點,生成MCU代碼包

先登陸機智云自助開發(fā)平臺dev.gizwits.com

創(chuàng)建智能項目

定義數(shù)據(jù)點

生成MCU代碼(選擇其他平臺)并下載

推薦使用最新的esp8266機智云GAgent固件

Gagent固件下載地址

download.gizwits.com/zh-cn/p/92/94


選擇生成其他平臺的代碼是標(biāo)準(zhǔn)庫

選擇F407平臺則生成的是HAL庫。

a3cabeea-eff0-11ec-a2f4-dac502259ad0.png


2.進行移植
打開MCU代碼包正點原子的移植代碼

a3f4942c-eff0-11ec-a2f4-dac502259ad0.png

可以看到如下文件路徑:

a402c146-eff0-11ec-a2f4-dac502259ad0.png

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


a4192e72-eff0-11ec-a2f4-dac502259ad0.png


打開工程,將Utils文件夾添加到頭文件路徑中
a4234a2e-eff0-11ec-a2f4-dac502259ad0.png


在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ā)板即可。
a431ec5a-eff0-11ec-a2f4-dac502259ad0.png

按下KEY1,用機智云的手機App進行連接調(diào)試。
a43e7e98-eff0-11ec-a2f4-dac502259ad0.png

a4528afa-eff0-11ec-a2f4-dac502259ad0.png

4、演示效果

進入即可控制LED的亮滅。

a461553a-eff0-11ec-a2f4-dac502259ad0.png

原文出自:https://mbb.eet-china.com/blog/3934591-420668.html

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關(guān)注

    關(guān)注

    2263

    文章

    10849

    瀏覽量

    353826
收藏 人收藏

    評論

    相關(guān)推薦

    基于機智移植STM32L496G代碼移植

    前言最近我拿到了STM32L496AGMCU,發(fā)現(xiàn)其擴展版可以連接ESP-01S。我想嘗試將開發(fā)板連接到我們的機智上,并根據(jù)機智提供的文
    的頭像 發(fā)表于 09-20 08:05 ?220次閱讀
    基于<b class='flag-5'>機智</b><b class='flag-5'>云</b><b class='flag-5'>移植</b><b class='flag-5'>STM32</b>L496G<b class='flag-5'>代碼</b><b class='flag-5'>移植</b>

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

    本次采用STM32F103C8T6單片機、ESP-01S模塊、紅外避障模塊、蜂鳴器模塊,OLED(0.96iic)、繼電器模塊、超聲波模塊,接入機智平臺,分別演示
    的頭像 發(fā)表于 09-04 08:02 ?321次閱讀
    <b class='flag-5'>STM32</b>最小系統(tǒng)板與ESP01S<b class='flag-5'>接入</b><b class='flag-5'>機智</b><b class='flag-5'>云</b>教程

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

    無線模塊的GAgent固件。例如,我使用了正點原子的esp8266模塊,選擇了對應(yīng)的GAgentforESP8266固件。5.MCU方案代碼移植6.將
    的頭像 發(fā)表于 07-05 08:10 ?265次閱讀
    個人<b class='flag-5'>機智</b><b class='flag-5'>云</b>開發(fā)實踐:經(jīng)驗總結(jié)與技術(shù)分享

    使用STM32F407正點原子的開發(fā)板作為客戶端,電腦作為服務(wù)器端時程序總是死在接收函數(shù)上是為什么?

    生成的工程可以ping通,使用STM32F407正點原子的開發(fā)板作為客戶端,電腦作為服務(wù)器端時程序總是死在接收函數(shù)上,把接收函數(shù)屏蔽后程序正常也能于服務(wù)器連接上。請大神指教,是否是哪里參數(shù)配置有問題導(dǎo)致這樣現(xiàn)象?
    發(fā)表于 04-29 06:54

    STM32F407的程序移植STM32F103的芯片上面,需要修改哪些內(nèi)容?

    STM32F407的程序移植STM32F103的芯片上面,需要修改哪些內(nèi)容?
    發(fā)表于 04-10 07:38

    如何在STM32F407移植lwip?

    如題,使用rt-thread操作系統(tǒng),在STM32F407上如何移植lwip,下載了最新的rt-thread代碼,不知如何入手。 誰能幫幫我嗎,或者有沒有移植手冊發(fā)我看看。
    發(fā)表于 03-05 08:32

    stm32f407移植了sqlite3并且存儲了傳感器數(shù)據(jù),怎么把文件導(dǎo)出來?

    大佬們,我在stm32f407移植了sqlite3,并且存儲了傳感器數(shù)據(jù),現(xiàn)在需要把文件導(dǎo)出來,這個怎么操作呀,望各位大佬指點迷津。。。
    發(fā)表于 03-01 06:02

    STM32F407+PCM5102APWR+SD卡內(nèi)播放wav或mp3音樂如何實現(xiàn)?

    PCM5102APWR與SD卡連接起來。 然后,我們需要編寫適當(dāng)?shù)能浖?b class='flag-5'>代碼來初始化和配置STM32F407與PCM5102APWR和SD卡之間的通信。以下是一個示例代碼,該代
    的頭像 發(fā)表于 01-16 17:11 ?2288次閱讀

    stm32f407 double類型

    STM32F407是意法半導(dǎo)體(STMicroelectronics)推出的一款A(yù)RM Cortex-M4內(nèi)核的微控制器。它是針對智能電動車領(lǐng)域的實時操作、數(shù)字信號處理和高性能應(yīng)用而設(shè)計的。在這
    的頭像 發(fā)表于 01-07 16:45 ?2833次閱讀

    stm32f407 LAN8720A速率調(diào)整

    STM32F407是一款基于ARM Cortex-M4內(nèi)核的高性能微控制器,而LAN8720A是一款高速以太網(wǎng)PHY芯片。它們的組合可以實現(xiàn)在STM32F407上使用以太網(wǎng)功能。 調(diào)整
    的頭像 發(fā)表于 01-05 13:54 ?3190次閱讀

    stm32f407浮點運算速度

    STM32F407 是 STMicroelectronics 公司推出的一款基于 ARM Cortex-M4 內(nèi)核的微控制器。它具有較強的處理能力和豐富的外設(shè)資源,在嵌入式系統(tǒng)中得到廣泛應(yīng)用。該芯片
    的頭像 發(fā)表于 01-04 10:58 ?3121次閱讀

    正點原子stm32f1 nano開發(fā)板簡介

    溫馨提示 :正點原子stm32f103-nano開發(fā)板有舊版本( 主控芯片STM32F103RBT6 )和新版本( 主控芯片STM32F10
    的頭像 發(fā)表于 11-30 15:45 ?2029次閱讀
    <b class='flag-5'>正點</b><b class='flag-5'>原子</b><b class='flag-5'>stm32f</b>1 nano開發(fā)板簡介

    基于STM32F103系統(tǒng)的FreeRTOS程序移植

    在程序中,移植正點原子的基于STM32的FreeRTOS程序,編寫了自己的內(nèi)存管理程序malloc.c,程序主要結(jié)構(gòu)如下
    的頭像 發(fā)表于 11-10 11:03 ?2246次閱讀
    基于<b class='flag-5'>STM32F</b>103系統(tǒng)的FreeRTOS程序<b class='flag-5'>移植</b>

    基于STM32F407的FreeRTOS學(xué)習(xí)筆記(9)

    在嵌入式編程中,定時器是一個非常重要且強大的功能,用來幫我們定時性的調(diào)用中斷服務(wù)函數(shù)來幫助我們處理程序。定時器通常是用硬件來實現(xiàn)的,例如STM32F407就有8個硬件定時器。
    的頭像 發(fā)表于 11-08 11:08 ?843次閱讀
    基于<b class='flag-5'>STM32F407</b>的FreeRTOS學(xué)習(xí)筆記(9)

    分享一種STM32F407的鎖相環(huán)PLL重新配置方法

    老農(nóng)最近搞基于STM32F407的IAP升級固件升級功能,遇到了這樣一個問題:IAP引導(dǎo)程序和APP程序都是基于STM32CUBEMX的程序模板生成,單獨調(diào)試運行APP功能也都正常,但是只要采用IAP方式將APP程序的bin文件燒寫到程序存儲區(qū),再跳轉(zhuǎn)到APP的地址運行就
    的頭像 發(fā)表于 10-30 17:30 ?1899次閱讀
    分享一種<b class='flag-5'>STM32F407</b>的鎖相環(huán)PLL重新配置方法