在LwIP 协议栈移植 Snap 7
2024-08-22 13:27:45
本文欢迎引用,转载。
引用,转载请标明出处!
调试完毕源码将上传到GitHub
为了嵌入式系统与STEP 7 PLC 通过S7 协议通讯,尝试移植 Snap 7 到STM32F407 cpu 上。
今天基本编译通过,尚未通电调试。
核心技术要点,及方案如下
1。测试系统构建(待续)
2。代码修改
A.修改文件snap_msgsock.cpp 开始部分,为以下内容
#include <stdint.h>
#include "lwip/sockets.h"
#include "snap_msgsock.h"
#include <string.h>
B.修改文件snap_sysutils.cpp为以下内容,重点是对 timeGetTime() 的支持
#include "snap_sysutils.h"
#include "stm32f4xx_hal.h"
#ifdef OS_OSX
int clock_gettime(int clk_id, struct timespec* t)
{
struct timeval now;
int rv = gettimeofday(&now, NULL);
if (rv) return rv;
t->tv_sec = now.tv_sec;
t->tv_nsec = now.tv_usec * ;
return ;
}
#endif //---------------------------------------------------------------------------
longword SysGetTick()
{
#ifdef OS_WINDOWS
return timeGetTime();
#else
#ifdef STM32F407xx
return HAL_GetTick();
#else
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
return (longword) (ts.tv_sec * ) + (ts.tv_nsec / );
#endif
#endif
}
//---------------------------------------------------------------------------
void SysSleep(longword Delay_ms)
{
#ifdef OS_WINDOWS
Sleep(Delay_ms);
#else
#ifdef STM32F407xx
HAL_Delay(Delay_ms);
#else
struct timespec ts;
ts.tv_sec = (time_t)(Delay_ms / );
ts.tv_nsec =(long)((Delay_ms - ts.tv_sec) * );
nanosleep(&ts, (struct timespec *));
#endif
#endif
}
编译选项设置
未完,待续
最新文章
- poj 1251 Jungle Roads (最小生成树)
- Windows 网络通讯开发
- H TC並沒有成為下一個摩托羅拉或諾基亞。
- LOD
- NGINX location 在配置中的优先级
- windows server2012 r2 上 安装 IIS8.5
- oracle client与ODAC的字符集
- Eclipse中Maven项目添加jar包
- PHP模拟发送POST请求之一、HTTP协议头部解析
- 黑客讲述渗透Hacking Team全过程(详细解说)
- Linux下使用inode删除文件
- text-overflow 文字溢出时的设置
- known good die( KGD) /确认好裸芯片,合格芯片
- BackGroundWorker使用总结
- C#调用托管C++类(DLL)
- 【TRICK】解决锚点定位向下浮动Xpx问题
- Java多线程10:join()方法
- apache-jmeter-3.3的简单压力测试使用方法
- 算法——001BitMap(位图)算法
- ubuntu14.04上引入thinkphp5类库遇到的一个问题