打印

Labview与STM32、新唐通讯系列之MODBUS<4>

[复制链接]
852|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
東南博士|  楼主 | 2017-6-20 09:16 | 只看该作者
整体软件截图

1.png (356.65 KB )

1.png

使用特权

评论回复
板凳
東南博士|  楼主 | 2017-6-20 09:16 | 只看该作者
#include "main.h"

/*---------------------------------------------------------------------------------------------------------*/
/* MAIN function                                                                                           */
/*---------------------------------------------------------------------------------------------------------*/

int main(void)
{
    SYS_Init();

    TIME1_init();

    Adc_init();

    SYS_CLK=CLK_GetPCLKFreq()/100;

    TIM2_CLK = TIMER_GetModuleClock(TIMER2)/100;

    Rest_reg=SYS_GetResetSrc();
       
    eMBInit(MB_RTU, 1, 0, 115200, MB_PAR_NONE );
    eMBEnable();

    while(1)
    {
        //获取模拟量数据
        Adc_get_date();
                       
        //modbus相关
        eMBPoll();
                       
        usSRegHoldBuf[0]=ADC_Date_1;//
    }
}

使用特权

评论回复
地板
東南博士|  楼主 | 2017-6-20 09:34 | 只看该作者
    SYS_Init();
    系统初始化

    TIME1_init();
    定时器初始化

    Adc_init();
    模拟量初始化,这里用到了一个模拟量

    SYS_CLK=CLK_GetPCLKFreq()/100;
    获取一下运行速率,这个为了方便调试MODBUS用到的定时器。与3.5us的通讯协议 有关系。

    TIM2_CLK = TIMER_GetModuleClock(TIMER2)/100;
    获取一下定时器的速率。

    Rest_reg=SYS_GetResetSrc();
    获取上次停机的原因。

    eMBInit(MB_RTU, 1, 0, 115200, MB_PAR_NONE );
    初始化MODBUS,主要是初始化串口与定时器

    eMBEnable();
    使能MODBUS

使用特权

评论回复
5
maninman1981| | 2017-6-25 20:11 | 只看该作者
这只是一部分程序,关键是通讯协议的搭配和处理。

使用特权

评论回复
6
東南博士|  楼主 | 2017-6-27 21:35 | 只看该作者
是的!

后面会把这个完整的程序传上来的!

最近有段时间 在忙工程

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

367

主题

6048

帖子

34

粉丝