码迷,mamicode.com
首页 > 其他好文 > 详细

在LwIP 协议栈移植 Snap 7

时间:2017-12-02 19:03:57      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:nanosleep   上传   eval   fda   src   cloc   word   构建   bsp   

本文欢迎引用,转载。

引用,转载请标明出处!

调试完毕源码将上传到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 * 1000;
    return 0;
}
#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 * 1000) + (ts.tv_nsec / 1000000);
       #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 / 1000);
    ts.tv_nsec =(long)((Delay_ms - ts.tv_sec) * 1000000);
    nanosleep(&ts, (struct timespec *)0);
        #endif
    #endif
}

 未完,待续

在LwIP 协议栈移植 Snap 7

标签:nanosleep   上传   eval   fda   src   cloc   word   构建   bsp   

原文地址:http://www.cnblogs.com/kmsmg/p/7954674.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!