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

[复制链接]
1320|5
 楼主| 東南博士 发表于 2017-6-20 09:16 | 显示全部楼层 |阅读模式
关于 新唐单片机 M0 M4 实现的 FREEMODBUS的过程
 楼主| 東南博士 发表于 2017-6-20 09:16 | 显示全部楼层
整体软件截图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 東南博士 发表于 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
maninman1981 发表于 2017-6-25 20:11 | 显示全部楼层
这只是一部分程序,关键是通讯协议的搭配和处理。
 楼主| 東南博士 发表于 2017-6-27 21:35 | 显示全部楼层
是的!

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

最近有段时间 在忙工程
您需要登录后才可以回帖 登录 | 注册

本版积分规则

385

主题

6103

帖子

35

粉丝
快速回复 在线客服 返回列表 返回顶部