移植以机智云智能灯为例
我之前在学习STM32机智云平台的时候参考的是正点原子的教程,可他的移植库是旧版的方法了,现在自动生成的代码已经有些不同,所以移植方法也有些不一样。
这里我就不进行前面的一系列创建了,前面的就参照正点原子机智云的开发用户手册来就行,我这里直接从自动生成代码开始讲。
1.硬件平台这选择其他平台,然后生成代码包
2.打开里面有五个文件,我们把前三个文件复制到自己的工程里(在这里替换main.c),我选择的是正点原子定时器中断的实验,用的是正点原子的探索者
3.因为是通过串口进行数据传输,还要用到按键,所以在这直接找了现成的KEY文件和USART文件放在HARDWARE文件夹下
4.打开工程,把之前的都添加进来,然后添加头文件
5.配置gizwits_product.c文件,具体看代码,看行数就能快速找到
增加头文件声明
#include "led.h"
配置gizwitsEventProcess(eventInfo_t *info, uint8_t *gizdata, uint32_t len)
配置mcuRestart(void)
配置uartWrite(uint8_t *buf, uint32_t len)
6.配置HARDWARE文件夹下的文件,我就把要加的地方弄出来,其他的直接看我最后发的源代码吧
7.最后就是main.c文件
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "timer.h"
#include "key.h"
#include "usart3.h"
#include "gizwits_product.h"
//Gizwits协议初始化
void Gizwits_Init(void)
{
TIM3_Int_Init(10-1,8400-1); //1MS系统定时
usart3_init(9600);//WIFI初始化
memset((uint8_t*)¤tDataPoint, 0, sizeof(dataPoint_t));//设备状态结构体初始化
gizwitsInit();//缓冲区初始化
}
/**
* @brief main
* In this function, the user - associated initialization and the main logical loop are completed
* @param none
* @return none
*/
int main(void)
{
int key;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(168); //初始化延时函数
uart_init(115200); //初始化USART
LED_Init(); //初始化LED端口
KEY_Init(); //初始化按键
Gizwits_Init(); //协议初始化
printf("--------机智云IOT-协议移植LED测试实验----------\r\n");
printf("KEY1:AirLink连接模式\t KEY_UP:复位\r\n\r\n");
while(1)
{
gizwitsHandle((dataPoint_t *)¤tDataPoint);//协议处理
key = KEY_Scan(0);
if(key==KEY1_PRES)//KEY1按键
{
printf("WIFI进入AirLink连接模式\r\n");
gizwitsSetMode(WIFI_AIRLINK_MODE);//Air-link模式接入
}
if(key==WKUP_PRES)//KEY_UP按键
{
printf("WIFI复位,请重新配置连接\r\n");
gizwitsSetMode(WIFI_RESET_MODE);//WIFI复位
}
}
}
这样就全部移植玩了编译以后有三个警告没有错误,那三个警告我们不需要管。
博主刚开始写博客,表述不清请见谅。
程序源码:链接:https://pan.baidu.com/s/1nskp8FvtBqxKB8XfcUQQeg 密码:i5ob