收藏官网首页
查看: 1348|回复: 0

STM32连接机智云,代码移植,NTP实时时间获取(二)

140

主题

418

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12682
跳转到指定楼层
楼主
 楼主| 发表于 2024-11-11 18:22:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具
STM32连接机智云,代码移植,NTP实时时间获取(二)


5.接下来是配置主函数main.c这个文件
(1)首先将机智云,添加的串口,定时器头文件说明一下




(2)在main.c中添加Gizwits_Init函数,对机智云需用到功能进行初始化。()




(3)在mai函数中对用到的函数进行初始化,串口1是用来打印机智云信息的,可以用串口1查看是否与机智连云接成功。




(4)在main.c文件末尾需要添加定时器3的中断函数,并将机智云的1ms计时函数加进去,但是需要先将机智云1ms函数定义,才能用得到,在gizwits_product.h文件中进行定义,如图。




然后在main.c文件中添加定时器3的中断函数



  1. //定时器 3 中断服务程序 1ms中断
  2. void TIM3_IRQHandler(void) //TIM3 中断
  3. {
  4.     if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查 TIM3 更新中断发生与否
  5.     {
  6.         TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除 TIMx 更新中断标志
  7.         gizTimerMs();//系统毫秒定时
  8.     }
  9. }
复制代码


(5)将这两个函数放到主循环中,机智云才能一直获取数据


  1.   userHandle();//用户采集
  2.         gizwitsHandle((dataPoint_t *)¤tDataPoint);//协议处理
复制代码




(6)配对时需要做个按键,按键按下的时候发送配对指令,让wifi模块进入AirLink连接模式。将下面这两句话加入按键判断中就行了。


  1. gizwitsSetMode(WIFI_AIRLINK_MODE);//Air-link模式接入   
复制代码




(7)最后有的小伙伴会用到[color=rgb(78, 161, 219) !important]printf函数,使用这个函数在设置里需要勾选图中选项哦,不然没办法使用,





五、现在通过第五点配置好了,现在开始正式写代码,嘿嘿~~
1.写了那么多简单介绍下使用到的机智云函数

userHandle函数,是用户在机智云官网定义的一些只读的数据点,将里面的注释解开,将自己想要上传的值幅值进去就行了,例如下图,红框中的是你在机智云官网中创建项目时自己定义的变量,需要自己记住,不要在这懵逼了,等号右边是自己软件软件获取的值。




userInit函数是对机智云APP中的值做个初始化,这函数不操作也可以。


gizwitsEventProcess函数是你有添加布尔值的就在这找,里面有些user handle的就是用户编写代码的地方。用if else对布尔值0,1,两个状态的判断,自己根据需求写就行了。




六、配对连接
打开机智云APP,按图片顺序来







到这一步先不要点完成上述操作,先按一下设计的进入配对模式的按键,可以通过串口一看到进入成功的话会发一条进入ARLINK配对信息。在点完成上述操作,然后就是等待配对成功,配对完成后回调到主界面,显示自己的设备。设备变灰色就是断开连接。




七、NTP(网络获取实时时间)的实现
顺带讲下用机智云获取NTP实时时间的操作吧
(1)首先定义一个全局变量并引用OLED的头文件


  1. u8 wifi_sta;
复制代码





(2)在userHandle函数中加入这段代码若是网络连接成功就多次请求NTP网络时间,记得网络时间获取不要那么快哦,


  1. static u16 t=0;
  2.          if(wifi_sta)
  3.          {
  4.             t++;
  5.          if(t==500)
  6.          {
  7.              t=0;
  8.              gizwitsGetNTP();//请求 NTP 网络时间
  9.          }
  10.         }else
  11.          { if(t!=0) t=0; }
复制代码




(3)在gizwits_product.c文件中找到gizwitsEventProcess函数,在switch里找到图中红框标注的位置将下面代码幅值进去,最终效果如红框标注.CASE语句中WIFI_NTP所打印的内容就是网络时间,将他们复制到自己的OLED显示语句中就行了,注意哦,只有成功配对后才会显示是时间。




  1. case WIFI_CON_M2M:
  2.             wifi_sta = 1;   //wifi已连接
  3.             break;
  4.         case WIFI_DISCON_M2M:
  5.             wifi_sta = 0;    //wifi已断开
  6.             break;
  7.         case WIFI_RSSI:
  8.             GIZWITS_LOG("RSSI %d\n", wifiData->rssi);
  9.             break;
  10.         case TRANSPARENT_DATA:
  11.             GIZWITS_LOG("TRANSPARENT_DATA \n");
  12.             //user handle , Fetch data from [data] , size is [len]
  13.             break;
  14.         case WIFI_NTP:
  15.             GIZWITS_LOG("WIFI_NTP : [%d-%d-%d %02d:%02d:%02d][%d] \n",ptime->year,
  16.                                                 ptime->month,ptime->day,ptime->hour,ptime->minute,ptime->second,ptime->ntp);
  17.             OLED_ShowNum(4,1,ptime->year,4);
  18.             OLED_ShowChar(4,5,'-');
  19.             OLED_ShowNum(4,6,ptime->month,1);
  20.             OLED_ShowChar(4,7,'-');
  21.             OLED_ShowNum(4,8,ptime->day,1);
  22.             OLED_ShowChar(4,9,' ');
  23.             OLED_ShowNum(4,10,ptime->hour,2);
  24.             OLED_ShowChar(4,12,'.');
  25.             OLED_ShowNum(4,13,ptime->minute,2);
  26.             break;
复制代码






九。网盘资料链接
链接: https://pan.baidu.com/s/1RN8eZGTC8-49JhAo3_uWUQ?pwd=pzxw 提取码: pzxw 复制这段内容后打开百度网盘手机App,操作更方便哦



18.png (161.3 KB, 下载次数: 12)

18.png

8.png (328.49 KB, 下载次数: 9)

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

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

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