正点原子探索版STM32F407,接入机智云之代码移植

电子说 2022-06-20 00:55

公司logo

机智云

132內容 |  7.6k浏览量  |  15粉丝

+关注

 

 

在2017年机智云和正点原子联袂发布正点原子接入机智云教程,提供了一整套基于STM32开发板的接入教程和实例源码,从平台配置到程序配置,为开发人员提供一种便捷的接入云平台方案。

 

所有正点原子STM32开发板(除mini外)均具有ATK-Module接口,只需要把ATK-ESP8266模块直接连接到该接口即可。mini开发板需要通过杜邦线链接。

 

换句话说,所有正点原子的开发板都可以轻松连云了,几小时搞定远程控制。
 

 

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

 

但是由于时间过长,手册内容中的Gizwits文件目录和目前的机智云自动生成的代码目录有一定的差异,因此移植过程有了一些改变。

 

为了方便大家针对新版机智云的代码进行移植,也为了给自己的移植过程做一个记录,特此写下正点原子探索者STM32F497的移植过程。
 


移植步骤

1、创建项目,定于数据点,生成MCU代码包

先登陆机智云自助开发平台dev.gizwits.com
 

创建智能项目

定义数据点

生成MCU代码(选择其他平台)并下载

 

 

推荐使用最新的esp8266机智云GAgent固件

Gagent固件下载地址

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


 

选择生成其他平台的代码是标准库

选择F407平台则生成的是HAL库。


2.进行移植
打开MCU代码包正点原子的移植代码



可以看到如下文件路径:



 

将我们第一步骤下载的“MCU代码包”进行解压缩,随后将Gizwits文件夹和Utils文件夹复制到正点原子的移植代码目录中,提示覆盖点击确定即可。





打开工程,将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)

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

//数据采集void userHandle(void){//判断当前LED1开关量if(LED1==0)currentDataPoint.valueLEDonoff = 1;else        currentDataPoint.valueLEDonoff = 0;}

剪切到gizwits_product.c中的对应位置

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

//下面的void userHandle(void)是我们从main.c中剪切过来的//数据采集void userHandle(void){//判断当前LED1开关量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//实现串口发送函数,将buf发送到模组                USART_SendData(USART3,buf);while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET); //循环发送,直到发送完毕if(i >=2 && buf == 0xFF){//实现串口发送函数,将0x55发送到模组                USART_SendData(USART3,0x55);while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET); //循环发送,直到发送完毕}}return len;}

在gizwits_product.c中的 void mcuRestart(void); 处加入如下代码

  •  
  •  
  •  
  •  
  •  

void mcuRestart(void){__set_FAULTMASK(1);//关闭所有中断NVIC_SystemReset();//复位        }

在gizwits_product.h中加入 void gizTimerMs(void);

  •  
  •  
  •  
  •  
  •  

void userInit(void);void userHandle(void);void mcuRestart(void);//下面的一行是我们后面加入的void gizTimerMs(void);

至此,移植完成

3、编译、调试
编译下载到开发板即可。


按下KEY1,用机智云的手机App进行连接调试。




 

4、演示效果

进入即可控制LED的亮灭。
 


 

 

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

 

声明:本文由入驻企业号的作者撰写或者网上转载,观点仅代表作者本人,不代表电子发烧友网立场。如有侵权或者其他问题,请联系举报。侵权投诉

收藏

最近看过的用户(0) 查看全部

我要咨询