首页 > 其他 > 详细

14-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,单片机程序编写

时间:2019-06-28 18:24:03      阅读:185      评论:0      收藏:0      [点我收藏+]

https://www.cnblogs.com/yangfengwu/p/11102026.html

 

首先规定下协议  ,CRC16就不加了哈,最后我会附上CRC16的计算程序,大家有兴趣自己加上

 

上位机发送:

0xaa 0x55  0x03  占空比(高电平时间高位)  占空比(高电平时间低位)    

 

单片机解析协议,然后修改占空比

技术分享图片

 

 

 技术分享图片

 

 

 先用调试助手发几个数据测试一下 

aa 55 03 03 E8     1000

aa 55 03 01 F4     500

aa 55 03 00 64     100

aa 55 03 00 00     0

 

 技术分享图片  技术分享图片

 

 技术分享图片  技术分享图片

 

 技术分享图片  技术分享图片

 

 技术分享图片  技术分享图片

 

 

 给大家C语言计算CRC的程序

/**
* @brief  计算CRC
* @param  *modbusdata:数据指针
* @param  length:数据长度
* @param  
* @retval 计算的CRC值
* @example 
**/
int crc16_modbus(u8 *modbusdata, int length)
{
    int i, j;
    int crc = 0xffff;//有的使用0
    for (i = 0; i < length; i++)
    {
            crc ^= modbusdata[i];
            for (j = 0; j < 8; j++)
            {
                    if ((crc & 0x01) == 1)
                    {
                            crc = (crc >> 1) ^ 0xa001;
                    }
                    else
                    {
                            crc >>= 1;
                    }
            }
    }
    
    return crc;
}

/**
* @brief  判断数据的CRC校验是否正确
* @param  *modbusdata:数据指针
* @param  length:数据长度
* @param  
* @retval 1 正确  0 错误
* @example 
**/
int crc16_flage(u8 *modbusdata, int length)
{
    int Receive_CRC=0,calculation=0;//接收到的CRC,计算的CRC
    
    Receive_CRC = crc16_modbus(modbusdata, length);
    calculation = modbusdata[length+1];
    calculation <<= 8;
    calculation += modbusdata[length];
    if(calculation != Receive_CRC)
    {
        return 0;
    }
    return 1;
}

 

 

 

 好了下节再做上位机程序

 

14-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,单片机程序编写

原文:https://www.cnblogs.com/yangfengwu/p/11104167.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!