OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2385|回复: 0

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

[复制链接]

36

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2020-12-22
在线时间
17 小时
发表于 2022-6-22 20:17:09 | 显示全部楼层 |阅读模式
本帖最后由 康康2020 于 2022-6-22 20:21 编辑

在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

  1. #include
  2. #include
  3. #include "gizwits_product.h"
  4. //下面两个头文件是我们后来加入的
  5. #include "led.h"
  6. #include "usart3.h"
复制代码
修改 dataPoint_t currentDataPoint 为 extern dataPoint_t currentDataPoint

  1. /** Current datapoint */
  2. //dataPoint_t currentDataPoint;
  3. extern dataPoint_t currentDataPoint;
复制代码

找到以下代码,并加入

  1. if(0x01 == currentDataPoint.valueLEDonoff)
  2. {
  3. //user handle
  4. //下面一行是我们后加入的
  5.                         LED1=0;//LED1亮
  6. }
  7. else
  8. {
  9. //user handle
  10. //下面一行是我们后加入的
  11.                         LED1=1;//LED1灭                        
  12. }
复制代码
将main.c中的 void userHandle(void)

  1. //数据采集
  2. void userHandle(void)
  3. {
  4. //判断当前LED1开关量
  5. if(LED1==0)
  6. currentDataPoint.valueLEDonoff = 1;
  7. else
  8.         currentDataPoint.valueLEDonoff = 0;
  9. }
复制代码


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

  1. //下面的void userHandle(void)是我们从main.c中剪切过来的
  2. //数据采集
  3. void userHandle(void)
  4. {
  5. //判断当前LED1开关量
  6. if(LED1==0)
  7. currentDataPoint.valueLEDonoff = 1;
  8. else
  9.         currentDataPoint.valueLEDonoff = 0;
  10. }
复制代码


修改gizwits_product.c中的 int32_t uartWrite(uint8_t *buf, uint32_t len)
  1. int32_t uartWrite(uint8_t *buf, uint32_t len)
  2. {
  3. uint32_t i = 0;
  4. if(NULL == buf)
  5. {
  6. return -1;
  7. }
  8. #ifdef PROTOCOL_DEBUG
  9. GIZWITS_LOG("MCU2WiFi[%4d:%4d]: ", gizGetTimerCount(), len);
  10. for(i=0; i<len; i++)<="" div="" style="overflow-wrap: break-word; margin: 0px; padding: 0px; box-sizing: border-box;">
  11. {
  12. GIZWITS_LOG("%02x ", buf);
  13. }
  14. GIZWITS_LOG("\n");
  15. #endif
  16. for(i=0; i<len; i++)<="" i="" style="overflow-wrap: break-word; margin: 0px; padding: 0px; box-sizing: border-box;">
  17. {
  18. //USART_SendData(UART, buf);//STM32 test demo
  19. //实现串口发送函数,将buf发送到模组
  20.                 USART_SendData(USART3,buf);
  21. while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET); //循环发送,直到发送完毕
  22. if(i >=2 && buf == 0xFF)
  23. {
  24. //实现串口发送函数,将0x55发送到模组
  25.                 USART_SendData(USART3,0x55);
  26. while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET); //循环发送,直到发送完毕
  27. }
  28. }
  29. return len;
  30. }
复制代码


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

  1. void mcuRestart(void)
  2. {
  3. __set_FAULTMASK(1);//关闭所有中断
  4. NVIC_SystemReset();//复位        
  5. }
复制代码


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

  1. void userInit(void);
  2. void userHandle(void);
  3. void mcuRestart(void);
  4. //下面的一行是我们后面加入的
  5. void gizTimerMs(void);
复制代码


至此,移植完成

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


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




4、演示效果

进入即可控制LED的亮灭。


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


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 16:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表