本文欢迎引用,转载。

引用,转载请标明出处!

调试完毕源码将上传到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
}

编译选项设置

未完,待续

最新文章

  1. poj 1251 Jungle Roads (最小生成树)
  2. Windows 网络通讯开发
  3. H TC並沒有成為下一個摩托羅拉或諾基亞。
  4. LOD
  5. NGINX location 在配置中的优先级
  6. windows server2012 r2 上 安装 IIS8.5
  7. oracle client与ODAC的字符集
  8. Eclipse中Maven项目添加jar包
  9. PHP模拟发送POST请求之一、HTTP协议头部解析
  10. 黑客讲述渗透Hacking Team全过程(详细解说)
  11. Linux下使用inode删除文件
  12. text-overflow 文字溢出时的设置
  13. known good die( KGD) /确认好裸芯片,合格芯片
  14. BackGroundWorker使用总结
  15. C#调用托管C++类(DLL)
  16. 【TRICK】解决锚点定位向下浮动Xpx问题
  17. Java多线程10:join()方法
  18. apache-jmeter-3.3的简单压力测试使用方法
  19. 算法——001BitMap(位图)算法
  20. ubuntu14.04上引入thinkphp5类库遇到的一个问题

热门文章

  1. IDEA搭建SpringMVC+Mybatis+Mysql+Maven框架
  2. mysql批量更新数据,即:循环select记录然后更新某一字段
  3. Node.js之异步流控制
  4. (转)举例讲解JAVA中的堆和栈
  5. RabbitMQ 笔记-Exchanges
  6. 数据库中WITH CHECK OPTION的用法
  7. JS框架设计读书笔记之-选择器引擎02
  8. 使用OpenCV训练Haar like+Adaboost分类器的常见问题
  9. HTML5 input事件检测输入框变化[转载]
  10. indexed database IndexedDB