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

[经验分享] 机智云协议移植到CH32V307VCT6

106

主题

107

帖子

7264

积分

论坛元老

Rank: 8Rank: 8

积分
7264
跳转到指定楼层
楼主
 楼主| 发表于 2023-8-25 21:43:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
校园创客福利
本帖最后由 mmuyu 于 2023-8-25 21:45 编辑

    CH32V307VCT6是沁恒推出的32位risc-v单片机,资源非常丰富,拥有64kbram 256kb rom ,80个goio口······。这些资源可以为我们在复杂的应用场景提供非常大的帮助,下面我们看一下怎么移植。

首先,新建一个项目,建立两个文件夹Gizwits和Utils用于存放机智云的数据点文件和组件。

接下来,右键项目-》properties-》c/C++general-》paths and symbol->gun c 包含我们创建的两个文件夹

配置完成后,我们要在main文件引入机智云的头文件 main代码可以复制机智云的。
  1. #include <string.h>
  2. #include "gizwits_product.h"
  3. #include "common.h"

  4. main:
  5. userInit();

  6.         gizwitsInit();

  7.         while(1)
  8.         {
  9.             userHandle();
  10.             gizwitsHandle((dataPoint_t *)¤tDataPoint);
  11.         }
复制代码
要想设备和平台通信,我们需要编写代码初始化串口与wifi模组通信,因为只是简单的异步通信,因此我这里找了一个只有异步通信功能的串口uart5.

查看数据手册可以看到,端口分别连接到了PD2和PC12,了解后我们就可以编写对应的初始化和中断了
初始化uart:

uart中断:在中断里调用机智云的处理函数

完成后,我们到机智云的product文件里完善串口发送数据的代码。只需要调用串口发送的函数即可。


接下来完成定时器产生1ms中断的功能,用于提供给机智云维持业务运行和时间统计,我们只需要产生更新中断,并不需要其他高级功能,这里选用基本的定时器即可,高级的定时器留给后续需要用到的功能。

定时器中断函数:


接下来,我们就可以编译烧录到单片机里了,除了这些代码,我另外初始化了一个gpio用于点亮led检测是否正常运行。

效果:



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

本版积分规则

加入Q群 返回顶部

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

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