|
本帖最后由 千秋波罗 于 2015-12-27 19:30 编辑
还在分析别人的程序?
还在为移植机智云协议苦恼?
还在不知道怎么添加自己的应用?
别急,最干净的STM32机智云对接程序来了!
秒秒钟能看懂!
只需两步就可以把机智云对接程序移走,放入自己的工程!尽情享用吧。
以上是主程序,如果觉得还不够干净就别来了。如果觉得看不懂回去补补基础吧。
=================================================================既然是详解,肯定不会让大家失望!之后我会对程序在本帖子做详细分析。
因为我根本没准备,不能把教程一次性发上来。
所以新手可以跟帖一下,老手把程序抱走就可以了。谢谢。
=================================================================今天讲,如何把我程序移入自己的工程里面。
只需要两步。
第一步,将HARDWARE文件夹里面的Protocol与TIMER文件夹放入自己的工程里面。
第二步,将串口协议移植过去。
协议请打开usart.c文件。
===================
u8 get_one_package; //判断是否接收到一个完整的串口数据包
u8 cmd_flag1, cmd_flag2;
u16 uart_Count=0; //串口缓冲区数据长度
u8 uart_buf[256]; //串口缓冲区
u16 cmd_len =0 ;
====================
先加入全局变量
再修改串口接收协议的中断
=====================
void USART1_IRQHandler(void) //串口1中断服务程序
{
uint8_t vlue;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
vlue = USART_ReceiveData(USART1);
if(get_one_package ==0)
{
if(cmd_flag1 ==0)
{
if(vlue == 0xff)
{
uart_Count = 0;
uart_buf[uart_Count]=vlue;
uart_Count++;
cmd_flag1 = 1;
}
return ;
}
else if(cmd_flag2 ==0)
{
uart_buf[uart_Count]=vlue;
uart_Count++;
if(uart_buf[1] == 0xff)
{
cmd_flag2 = 1;
}
else
{
cmd_flag1 = 0;
}
return ;
}
else
{
uart_buf[uart_Count] = vlue;
if(uart_Count >=4 && uart_buf[uart_Count] == 0x55 && uart_buf[uart_Count-1] == 0xFF){}
else uart_Count++;
if(uart_Count == 0x04)
{
cmd_len = uart_buf[2]*256 + uart_buf[3];
}
if(uart_Count == (cmd_len + 4))
{
get_one_package = 1;
cmd_flag1 = 0;
cmd_flag2 = 0;
}
}
}
}
}
=======================================
好了,移植完了。编译一下,99%应该通过了。
然后编辑主程序。嘿咻嘿咻,快去用软件调试一下吧。
高手可以走了。以下是新手教程了。
新手的话,先暂时不要移植了。跟我先调通了再说。
今天就到这里了。先去用串口工具试一试。
把我提供的程序直接烧进去,这个时候只能用串口工具去调试看一下接口是否正常!!!
暂时还不能用。
stm32机智云对接干净移植.rar
(292 KB, 下载次数: 175)
=================================
连接机智云
首先添加了KEY按键扫描
stm32机智云对接程序2.rar
(291.97 KB, 下载次数: 126)
按键扫描的具体配置请自己去KEY.C KEY.H里面去修改
按键主要做了4件事
看一下KEY()
void key(void)
{
switch(KEY_Scan(0)) //按键扫描
{
case 1: m_pro_commonCmd.head_part.cmd = CMD_RESET_MODULE; //wifi模块重启
m_pro_commonCmd.head_part.sn = ++SN;
m_pro_commonCmd.sum = CheckSum((uint8_t *)&m_pro_commonCmd, sizeof(pro_commonCmd));
SendToUart((uint8_t *)&m_pro_commonCmd, sizeof(pro_commonCmd), 1);
break;
case 2: m_m2w_mcuStatus.status_r.led0=!m_m2w_mcuStatus.status_r.led0; //发送led0 取反到机智云
break;
case 3: m_m2w_setModule.config_info = 0x01; //启动softAP 模式
m_m2w_setModule.head_part.sn = ++SN;
m_m2w_setModule.sum = CheckSum((uint8_t *)&m_m2w_setModule, sizeof(m2w_setModule));
SendToUart((uint8_t *)&m_m2w_setModule, sizeof(m2w_setModule), 1);
break;
case 4: m_m2w_setModule.config_info = 0x02; //启动 Air Link 模式
m_m2w_setModule.head_part.sn = ++SN;
m_m2w_setModule.sum = CheckSum((uint8_t *)&m_m2w_setModule, sizeof(m2w_setModule));
SendToUart((uint8_t *)&m_m2w_setModule, sizeof(m2w_setModule), 1);
break;
}
}
KEY_Scan(0)是一个按键扫描的程序,返回读到的值,我默认返回1,2,3,4
按下1,//wifi模块重启
按下2 //发送led0 取反到机智云
按下3 //启动softAP 模式
按下4 //启动 Air Link 模式
接着我们在机智云的服务平台搭建自己的产品。
然后把产品KEY 替换掉程序里面的
接下来在数据点里创建一个LED
好了,把修改好了程序烧进MCU吧。
按下1,可以看到WIFI模块复位了。然后让wifi模块连接上互联网。这时候可以在开发平台的运行状态里应该可以看到设备已在线
按下2,发送LED取反。
可以在开放平台的运行状态,点开运行记录。然后看一看发生了什么吧。
|
|