资源简介
这是一个用stm32实现玉成控制家用太阳能或者是工业太阳能的远程控制器,使用了AD转换、看门狗、flash的读写,TCP/IP协议等。
代码片段和文件信息
#include “include.h“
#define pgm_read_byte(ptr) ((char)*(ptr))
static unsigned short wwwport = 80;
static unsigned char macaddr[6];
static unsigned char ipaddr[4];
static unsigned int info_hdr_len = 0;
static unsigned int info_data_len = 0;
static unsigned char seqnum = 0xa; // my initial tcp sequence number
// The Ip checksum is calculated over the ip header only starting
// with the header length field and a total length of 20 bytes
// unitl ip.dst
// You must set the IP checksum field to zero before you start
// the calculation.
// len for ip is 20.
//
// For UDP/TCP we do not make up the required pseudo header. Instead we
// use the ip.src and ip.dst fields of the real packet:
// The udp checksum calculation starts with the ip.src field
// Ip.src=4bytesIp.dst=4 bytesUdp header=8bytes + data length=16+len
// In other words the len here is 8 + length over which you actually
// want to calculate the checksum.
// You must set the checksum field to zero before you start
// the calculation.
// len for udp is: 8 + 8 + data length
// len for tcp is: 4+4 + 20 + option len + data length
//
// For more information on how this algorithm works see:
// http://www.netfor2.com/checksum.html
// http://www.msc.uky.edu/ken/cs471/notes/chap3.htm
// The RFC has also a C code example: http://www.faqs.org/rfcs/rfc1071.html
unsigned int checksum(unsigned char* buf unsigned int len unsigned char type)
{
// type 0=ip
// 1=udp
// 2=tcp
unsigned long sum = 0;
//if(type==0){
// // do not add anything
//}
if (type == 1)
{
sum += IP_PROTO_UDP_V; // protocol udp
// the length here is the length of udp (data+header len)
// =length given to this function - (IP.scr+IP.dst length)
sum += len - 8; // = real tcp len
}
if (type == 2)
{
sum += IP_PROTO_TCP_V;
// the length here is the length of tcp (data+header len)
// =length given to this function - (IP.scr+IP.dst length)
sum += len - 8; // = real tcp len
}
// build the sum of 16bit words
while (len > 1)
{
sum += 0xFFFF & (*buf << 8 | *(buf + 1));
buf += 2;
len -= 2;
}
// if there is a byte left then add it (padded with zero)
if (len)
{
sum += (0xFF & *buf) << 8;
}
// now calculate the sum over the bytes in the sum
// until the result is only 16bit long
while (sum >> 16)
{
sum = (sum & 0xFFFF) + (sum >> 16);
}
// build 1‘s complement:
return((unsigned int) sum ^ 0xFFFF);
}
// you must call this function once before you use any of the other functions:
void init_ip_arp_udp_tcp(unsigned char* mymac unsigned char* myip unsigned short wwwp)
{
unsigned char i = 0;
wwwport = wwwp;
while (i < 4)
{
ipaddr[i] = myip[i];
i++;
}
i = 0;
while (i < 6)
{
macaddr[i] = mymac[i];
i++;
}
}
void set_tcp_port(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-04-10 19:49 智能热水工程控制系统(校验版)\
文件 9648 2012-04-05 22:09 智能热水工程控制系统(校验版)\ENC28J60.C
文件 9354 2012-04-05 22:09 智能热水工程控制系统(校验版)\ENC28J60.H
目录 0 2012-04-10 19:46 智能热水工程控制系统(校验版)\FATFS\
文件 8252 2012-04-05 22:09 智能热水工程控制系统(校验版)\FATFS\00readme.txt
文件 25104 2012-04-05 22:09 智能热水工程控制系统(校验版)\FATFS\SPI_SD_driver.c
文件 2408 2012-04-05 22:09 智能热水工程控制系统(校验版)\FATFS\SPI_SD_driver.h
文件 6235 2012-04-05 22:09 智能热水工程控制系统(校验版)\FATFS\diskio.c
文件 1864 2012-04-05 22:09 智能热水工程控制系统(校验版)\FATFS\diskio.h
文件 67089 2012-04-05 22:09 智能热水工程控制系统(校验版)\FATFS\ff.c
文件 11811 2012-04-05 22:09 智能热水工程控制系统(校验版)\FATFS\ff.h
文件 911 2012-04-05 22:09 智能热水工程控制系统(校验版)\FATFS\integer.h
文件 58520 2012-04-05 22:09 智能热水工程控制系统(校验版)\FATFS\tff.c
文件 10614 2012-04-05 22:09 智能热水工程控制系统(校验版)\FATFS\tff.h
文件 659780 2012-04-05 22:09 智能热水工程控制系统(校验版)\FS_CM3.lib
文件 12950 2012-04-05 22:09 智能热水工程控制系统(校验版)\File_Config.h
文件 319488 2012-04-05 22:09 智能热水工程控制系统(校验版)\Flex.ocx
文件 677 2012-04-05 22:09 智能热水工程控制系统(校验版)\JD.pic
文件 497 2012-04-10 19:48 智能热水工程控制系统(校验版)\Jli
文件 327741 2012-04-10 19:49 智能热水工程控制系统(校验版)\Jli
文件 285 2012-04-05 22:09 智能热水工程控制系统(校验版)\Jli
目录 0 2012-04-10 19:46 智能热水工程控制系统(校验版)\List\
文件 256903 2012-04-10 19:48 智能热水工程控制系统(校验版)\List\DLP.map
文件 91188 2012-04-05 22:09 智能热水工程控制系统(校验版)\List\STM3210E-EVAL.map
文件 26137 2012-04-10 19:48 智能热水工程控制系统(校验版)\List\cortexm3_macro.lst
文件 36908 2012-04-10 19:48 智能热水工程控制系统(校验版)\List\stm32f10x_vector.lst
文件 1081616 2012-04-05 22:09 智能热水工程控制系统(校验版)\MSCOMCTL.OCX
文件 162816 2012-04-05 22:09 智能热水工程控制系统(校验版)\MSCOMM32.OCX
文件 1388544 2012-04-05 22:09 智能热水工程控制系统(校验版)\MSVBVM60.DLL
文件 108336 2012-04-05 22:09 智能热水工程控制系统(校验版)\MSWINSCK.OCX
文件 49152 2012-04-05 22:09 智能热水工程控制系统(校验版)\NCset.exe
............此处省略223个文件信息
- 上一篇:金蝶K3服务器安装与配置方法详细图解
- 下一篇:八路彩灯循环显示控制电路课程设计
相关资源
- stm32f103c8系统板 原理图 pcb
- STM32开发板上实现实时的时钟显示
- 墨水屏 stm32f103 库 修改版带注释
- 基于STM32F103的PT100测温程序
- 颜色传感器 stm32代码
- 基于stm32f407输入捕获实验
- stm32f407+ov7725
- stm32f103c8t6最小系统板驱动MPU6050模块
- stm32 测量频率1
- MPU9250+STM32F103
- 基于STM32F407(1HZ~3MHZ)频率测量2%误差
- stm32f103C8T6 MCP3204程序代码
- stm32 MPU6050 OLED显示,绝对完整
- stm32f103 CAN-RS232/RS485
- TCS3200通过串口查看颜色识别结果带接
- 红外遥控控制智能小车前后左右移动
- stm32f103竞赛板的一个流水灯程序,是
- STM32F103dsp库
- 基于STM32F103系列ov7670获取图像控制量
- STM32F207的U盘_USB_IAP升级程序 Bootloade
- STM32倒立摆代码
- 基于STM32的智能寻迹小车,利用32的库
- 基于STM32F107的232通讯例程
- STM32F103C8T6 IAP-串口在线升级
- STM32F103 步进电机驱动程序
- 基于STM32F103C8T6的NRF24L01无线通讯模块
- SPI_adis16470 主机版本 飞控算法的姿态
- LD3320程序+原理图.rar
- miniboard_modbus_demo.7z
- STM32的DSP库
评论
共有 条评论