机智云代码移植_【机智云Gokit3测评】设备接入-步骤二:程序移植
【机智云Gokit3测评】设备接入-步骤二:程序移植
[复制链接]
1.写在前面
2.下载软件包
进入机智云官网的开发者中心后,点击“下载中心”(https://download.gizwits.com/zh-cn/p/92/93),点击“GoKit MCU示例工程”,选择“微信宠物屋 for GoKit 2/3 STM32 V03010101”,点击下载。
进入下载中心.jpg (354.2 KB, 下载次数: 0)
3 天前 上传
3.解压下载的文件包
该程序文件主要时驱动包,包含了STM32的各种驱动库,以及机智云做的外设驱动程序等。
解压后文档信息.jpg (46.56 KB, 下载次数: 0)
3 天前 上传
4.替换配置文件
将下载中心得到的CubeMX配置文件,替换掉自动生成代码中的原配置文件:
替换配置文件.jpg (67.77 KB, 下载次数: 0)
3 天前 上传
5.打开配置文件后重新生产配置文件
打开配置文件,点击重新生成对应配置的STM32代码。
重新生产配置文件.jpg (179.53 KB, 下载次数: 0)
3 天前 上传
6.移植驱动代码
将下载的文件夹名“驱动库代码_CubeMX版”里的内容全部复制到MCU_STM32F103C8x_source/hal文件目录下。
移植驱动文件.jpg (70.41 KB, 下载次数: 0)
3 天前 上传
移植驱动后文件内容.jpg (34.69 KB, 下载次数: 0)
3 天前 上传
7.添加移植的驱动文件
打开工程文件后,将移植的驱动文件全部添加到工程目录下;
添加驱动文件.jpg (61.34 KB, 下载次数: 0)
3 天前 上传
替换文件后内容显示.jpg (44.01 KB, 下载次数: 0)
3 天前 上传
8.添加头文件
在驱动代码的delay.c、hal_infrared.c、hal_motor.c、hal_rgb_led.c、hal_temp_hum.c文件加入”main.h”头文件
#include "main.h"
添加头文件main.jpg (23.3 KB, 下载次数: 0)
3 天前 上传
添加头文件main2.jpg (20.28 KB, 下载次数: 0)
3 天前 上传
添加头文件main3.jpg (16 KB, 下载次数: 0)
3 天前 上传
添加头文件main4.jpg (18.79 KB, 下载次数: 0)
3 天前 上传
添加头文件main5.jpg (9.17 KB, 下载次数: 0)
3 天前 上传
9.在代码中添加相应的函数调用
(1)在 MCU_STM32F103C8x_source\Src\main.c 和 MCU_STM32F103C8x_source\Gizwits\gizwits_product.c 文件中添加驱动库的头文件
#include "delay.h"
#include "hal_motor.h"
#include "hal_rgb_led.h"
#include "hal_temp_hum.h"
#include "hal_infrared.h"
(2)在 MCU_STM32F103C8x_source\Gizwits\gizwits_product.c 文件的 userInit( ) 函数中添加各sensor的初始化
void userInit(void)
{
memset((uint8_t *)¤tDataPoint, 0, sizeof(dataPoint_t));
delay_init(72); // 延时 初始化
rgbLedInit(); // RGB LED 初始化
dht11Init(); // 温湿度初始化
irInit(); // 红外初始化
motorInit(); // 电机初始化
motorStatus(0); // 电机转速初始化
}
(3)在 MCU_STM32F103C8x_source\Gizwits\gizwits_product.c 文件的 userHandle( ) 函数中添加只读型传感器数据点相关的代码
void userHandle(void)
{
uint8_t ret = 0;
static uint32_t thLastTimer = 0;
///< 新添加代码: 红外传感器数据获取
currentDataPoint.valueInfrared = irHandle();
///< 新添加代码: 温湿度传感器数据获取
if((gizGetTimerCount() - thLastTimer) > 2000) //上报间隔2S
{
ret = dht11Read((uint8_t *)¤tDataPoint.valueTemperature,
(uint8_t *)¤tDataPoint.valueHumidity);
if(ret != 0)
{
printf("Failed to read DHT11 [%d] \n", ret);
}
thLastTimer = gizGetTimerCount();
}
}
(4)在 MCU_STM32F103C8x_source\User\main.c 文件的 key2ShortPress( ) 函数与 key2LongPress( ) 函数中添加长/短按key2时的LED点亮代码
void key2ShortPress(void)
{
GIZWITS_LOG("KEY2 PRESS ,Soft AP mode\n");
#if !MODULE_TYPE
gizwitsSetMode(WIFI_SOFTAP_MODE);
#endif
//Soft AP mode, RGB red
ledRgbControl(250, 0, 0);
}
void key2LongPress(void)
{
//AirLink mode
GIZWITS_LOG("KEY2 PRESS LONG ,AirLink mode\n");
#if !MODULE_TYPE
gizwitsSetMode(WIFI_AIRLINK_MODE);
#endif
//AirLink mode, RGB Green
ledRgbControl(0, 250, 0);
}
(5)在代码\Gizwits\gizwits_product.c 中 gizwitsEventProcess() 函数中添加相应代码(代码中的注释//user handle的下一行即可加入自己的应用代码):
该函数主要功能是完成写类型外设的事件处理。
int8_t gizwitsEventProcess(eventInfo_t *info, uint8_t *gizdata, uint32_t len)
{
uint8_t i = 0;
dataPoint_t *dataPointPtr = (dataPoint_t *)gizdata;
moduleStatusInfo_t *wifiData = (moduleStatusInfo_t *)gizdata;
protocolTime_t *ptime = (protocolTime_t *)gizdata;
#if MODULE_TYPE
gprsInfo_t *gprsInfoData = (gprsInfo_t *)gizdata;
#else
moduleInfo_t *ptModuleInfo = (moduleInfo_t *)gizdata;
#endif
if((NULL == info) || (NULL == gizdata))
{
return -1;
}
for(i=0; inum; i++)
{
switch(info->event)
{
case EVENT_LED_OnOff:
currentDataPoint.valueLED_OnOff = dataPointPtr->valueLED_OnOff;
GIZWITS_LOG("Evt: EVENT_LED_OnOff %d \n", currentDataPoint.valueLED_OnOff);
if(0x01 == currentDataPoint.valueLED_OnOff)
{
//user handle
ledRgbControl(254, 0, 0);
}
else
{
//user handle
ledRgbControl(0, 0, 0);
}
break;
case EVENT_LED_Color:
currentDataPoint.valueLED_Color = dataPointPtr->valueLED_Color;
GIZWITS_LOG("Evt: EVENT_LED_Color %d\n", currentDataPoint.valueLED_Color);
switch(currentDataPoint.valueLED_Color)
{
case LED_Color_VALUE0:
//user handle
ledRgbControl(currentDataPoint.valueLED_R, currentDataPoint.valueLED_G,
currentDataPoint.valueLED_B);
break;
case LED_Color_VALUE1:
//user handle
ledRgbControl(254, 254, 0);
break;
case LED_Color_VALUE2:
//user handle
ledRgbControl(254, 0, 70);
break;
case LED_Color_VALUE3:
//user handle
ledRgbControl(238, 30, 30);
break;
default:
break;
}
break;
case EVENT_LED_R:
currentDataPoint.valueLED_R = dataPointPtr->valueLED_R;
GIZWITS_LOG("Evt:EVENT_LED_R %d\n",currentDataPoint.valueLED_R);
//user handle
ledRgbControl(currentDataPoint.valueLED_R, currentDataPoint.valueLED_G,
currentDataPoint.valueLED_B);
break;
case EVENT_LED_G:
currentDataPoint.valueLED_G = dataPointPtr->valueLED_G;
GIZWITS_LOG("Evt:EVENT_LED_G %d\n",currentDataPoint.valueLED_G);
//user handle
ledRgbControl(currentDataPoint.valueLED_R, currentDataPoint.valueLED_G,
currentDataPoint.valueLED_B);
break;
case EVENT_LED_B:
currentDataPoint.valueLED_B = dataPointPtr->valueLED_B;
GIZWITS_LOG("Evt:EVENT_LED_B %d\n",currentDataPoint.valueLED_B);
//user handle
ledRgbControl(currentDataPoint.valueLED_R, currentDataPoint.valueLED_G,
currentDataPoint.valueLED_B);
break;
case EVENT_Motor_Speed:
currentDataPoint.valueMotor_Speed = dataPointPtr->valueMotor_Speed;
GIZWITS_LOG("Evt:EVENT_Motor_Speed %d\n",currentDataPoint.valueMotor_Speed);
//user handle
motorStatus(currentDataPoint.valueMotor_Speed);
break;
case WIFI_SOFTAP:
break;
case WIFI_AIRLINK:
break;
case WIFI_STATION:
break;
case WIFI_CON_ROUTER:
ledRgbControl(0, 0, 0);
break;
case WIFI_DISCON_ROUTER:
break;
case WIFI_CON_M2M:
break;
case WIFI_DISCON_M2M:
break;
case WIFI_RSSI:
GIZWITS_LOG("RSSI %d\n", wifiData->rssi);
break;
case TRANSPARENT_DATA:
GIZWITS_LOG("TRANSPARENT_DATA \n");
//user handle , Fetch data from [data] , size is [len]
break;
case WIFI_NTP:
GIZWITS_LOG("WIFI_NTP : [%d-%d-%d %02d:%02d:%02d][%d] \n",ptime->year,ptime->month,
ptime->day,ptime->hour,ptime->minute,ptime->second,ptime->ntp);
break;
case MODULE_INFO:
GIZWITS_LOG("MODULE INFO ...\n");
#if MODULE_TYPE
GIZWITS_LOG("GPRS MODULE ...\n");
//Format By gprsInfo_t
#else
GIZWITS_LOG("WIF MODULE ...\n");
//Format By moduleInfo_t
GIZWITS_LOG("moduleType : [%d] \n",ptModuleInfo->moduleType);
#endif
break;
default:
break;
}
}
return 0;
}
9.编译文件
编译没有错误。
10.下一章节讲解烧写固件程序。
机智云代码移植_【机智云Gokit3测评】设备接入-步骤二:程序移植相关推荐
- 一文解锁华为云新技能-AIOT开发全流程【设备接入-ESP端侧数据收集[MQTT]-实时数据分析】(步步截图较详细)
一文解锁华为云新技能-AIOT开发全流程[设备接入-ESP端侧数据收集[MQTT]-实时数据分析](步步截图较详细) 在这篇你将会接触到:从物联网工程师从硬件层-通信层到应用层全流程:开发华为云最基本 ...
- python词云代码手机_【云计算】爬取淘宝手机品牌词云分析(python)
本文主要向大家介绍了[云计算]爬取淘宝手机品牌词云分析(python),通过具体的内容向大家展现,希望对大家学习云计算有所帮助. 淘宝手机信息的爬取,请看这边博客(点击这里),然后我们利用其中保存的文 ...
- 华为云桌面客户端_华为云CloudIDE的前世今生
在华为开发者大会HDC.Cloud上,华为云发布了基于鲲鹏计算的开发者服务 - CloudIDE服务,为鲲鹏开发者提供了很好的云端开发体验.(延伸阅读:华为云CloudIDE,云时代的精创利器) 体验 ...
- 阿里云mysql价格_阿里云超级计算mysql价格
Re阿里云的IO很不给力啊 有图有真相的啊. 这个是该机器的网络流量.这么低的流量 情何以堪 这就是 中国的阿里云啊?!! 和linode的vps比较起来,太搓了!! 希望解决处理! -------- ...
- 个人云 私有云 公有云_个人云简介
个人云 私有云 公有云 是否想了解在实现数字化转型中实施DevOps的最佳实践? 下载免费电子书为什么DevOps是数字化转型的重要组成部分 ! 想像一下装满大型金属机器的简朴无窗房间. 所有这些都用 ...
- 阿里云技术白皮书_阿里云最新大作云原生架构白皮书解读
简介:云原生的变革已经势不可挡,他带来的不止是技术革新,同时也是组织架构和商业模式的变革,随着类似OAM这样的云原生标准化应用分发的建立,云原生时代的操作系统将逐渐浮现于世 "云原生&quo ...
- JAVA看云判断天气_看云测天气_气象常识天气知
看云测天气_气象常识天气知 因为古代没有先进的科技预报天气,所以古人在日常生活中通过对云的观察,总结出了很多的谚语,用以预测天气的变化.从云的形状.颜色.高低.薄厚.动向等很多方面都可以预测出天气的变 ...
- 阿里云mysql容量_阿里云RDS的mysql数据库占用空间超过90%的处理
阿里云RDS数据库最大支持2T,目前已经占用了90%,如果进行分库或者迁移比较麻烦,思路是找出占用空间过大的日志或不重要的文件进行删除操作 查询所有数据库占用磁盘空间大小的SQL语句: show bi ...
- 华为云电脑.模式_华为云电脑支持全线,Huawei Share免费更新
样张答案:上面黑鲨下面红魔. 最近,华为推出了华为云电脑APP.即一款登陆就可以利用云主机的Windows系统在手机和平板上运行PC程序的软件.不过,并不支持所有产品使用.昨天,华为宣布5月14日起, ...
最新文章
- 无需成对示例、无监督训练,CycleGAN生成图像简直不要太简单
- 2021年跨境电商市场怎么样?新手商家入驻还有机会吗?
- ie8一下解决圆角,阴影不兼容问题
- dw显示云服务器的数据库,dw如何连接云服务器
- C++多线程编程(3) 异步操作类 std::future std::promise std::async
- 使用IDEA在Maven中创建MyBatis逆向工程以及需要注意的问题(入门)
- linux 文件夹 775,Linux chmod目录权限命令图文详解
- Python乒乓球小游戏源代码
- win8虚拟机_老司机教你如何在虚拟机安装win8系统,双系统也可以这样实现
- html外联php,html如何添加css样式?行内式、内嵌式、外联式的优缺点
- [源码和文档分享]基于QT的英文文献的编辑与检索系统的实现
- 汽车软件合作开发中的分工、知识产权及质量责任
- web项目no such method exception
- hrbust 2366 Print rhombus
- JS中将中文数字转化为阿拉伯数字
- but GITEE.COM does not provide shell access
- 2022年浙江大华编程题
- 数字孪生城市白皮书(2021)
- xz文件的解压和压缩
- JavaScript的输入输出语句
热门文章
- 网页自动点击脚本(可用于自动评教)
- 解读指标 Mali-400MP4 GPU 指标
- R count函数_R语言系列第二期:R变量、脚本、作图等模块介绍
- android x86触摸失准,修复X98 air 3G 在android x86下的重力和触摸反向问题
- 用Python调教微信,实现自动回复 和 微信好友分布,好友性别图,好友标签
- easybuy源码_easybuy 一个具有基本功能的商品购物网站包括前端和后台 计 Jsp/Servlet 272万源代码下载- www.pudn.com...
- 登陆QQ手机版,免费拿精品靓号
- 【实践】——PowerBuilder登录+PB自带数据库
- 28岁程序身价过亿,从字节提前“退休
- qq163音乐网归属问题释疑