OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
楼主: 八度空间

FreeModbus在STM32上移植

  [复制链接]

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2018-12-29 21:21:32 | 显示全部楼层
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

6

主题

36

帖子

1

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2018-12-5
在线时间
4 小时
发表于 2019-1-3 11:15:03 | 显示全部楼层
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2018-9-11
在线时间
5 小时
发表于 2019-1-23 11:12:33 | 显示全部楼层
移植了MODBUS
可是用MODBUS POLL连接显示一直是timeout error
希望有大佬帮忙看看代码
不知道问题出在了哪!求帮助
谢谢啦

timeout error

timeout error

MODBUS测试.rar

8.66 MB, 下载次数: 462

回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-1-26
在线时间
13 小时
发表于 2019-1-26 16:29:52 | 显示全部楼层
八度大神  新人小白 第一次接触到modbus  按照你的移植步骤移植以后发送0A 04 00 01 00 01 61 71 串口助手如图,也不知道问题出在哪了  好像是串口中断函数中的清中断有问题  也不知道怎么修改 ,还请不吝赐教


void
vMBPortSerialEnable( BOOL xRxEnable, BOOL xTxEnable )
{
    /* If xRXEnable enable serial receive interrupts. If xTxENable enable
     * transmitter empty interrupts.
     */
                if (xRxEnable)  //接收使能
                {
                        USART3->CR1 |=(1<<5); //使能接收中断
                       
                }
                else  //失能
                {
                        USART3->CR1 &=~(1<<5);  //失能接收中断
                }
                 
                if (xTxEnable)  //发送使能
                {
                        USART3->CR1 |=(1<<7);  //使能
                }
                else  //失能
                {
                        USART3->CR1 &=~(1<<7);  //使能
                }
       
}



BOOL
xMBPortSerialInit( UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits, eMBParity eParity )
{
        (void)ucPORT;  //不修改串口号
  (void)ucDataBits;  //不修改数据位长度
  (void)eParity;  //不修改检验格式
       
        u8 over; //过采样率
        float USARTDIV; //小数波特率
        u32 DIV_Mantissa; //小数波特率整数部分
        u32 DIV_Fraction; //小数波特率小数部分
       
        /************IO的配置 PB10 PB11 复用为USART3的功能************/
        //打开USART3的时钟
        RCC->APB1ENR|=(0x1<<18);
        //打开GPIOB时钟
        RCC->AHB1ENR |=(1<<1);
        //模式寄存器选择复用功能
        GPIOB->MODER &=~(0xf<<20);
        GPIOB->MODER |=(0xa<<20);
        //选择具体的复用功能 都复用成USART3
        GPIOB->AFR[1] &=~(0xff<<8);//清零
        GPIOB->AFR[1] |=(0x77<<8);//复用为USART3功能
       
        //打开串口使能
        USART3->CR1 |=(1<<13);
        //奇偶校验的选择(不使用)
        USART3->CR1 &=~(1<<10);
        //断路字符 不发送
        USART3->CR1 &=~(1<<0);
        //发送器使能
        USART3->CR1 |=(1<<3);
        //接收器使能
        USART3->CR1 |=(1<<2);
       
        /*****************小数波特率设置**********************/
        #ifdef USART3_OVER8  //采用16倍采样
                        USART3->CR1 &=~(1<<15);
                        over=0;
        #else   //采用8倍采样
                        USART1->CR1 |=(1<<15);
                        over=1;
       
        #endif
       
        USARTDIV=(float)42000000/(ulBaudRate*8*(2-over));
        DIV_Mantissa=USARTDIV;
        DIV_Fraction=(USARTDIV-DIV_Mantissa)*8*(2-over);
       
        //写入小数波特率寄存器中
        USART3->BRR=(DIV_Mantissa<<4|DIV_Fraction);
       
       
        /******************USART3中断************************/
        //打开接收中断
        USART3->CR1 |=(1<<5);
        //打开发送中断
        USART3->CR1 |=(1<<7);
        //设置优先级
                my_nvic_init(7-2, 0, 0, USART3_IRQn);
    return FALSE;
}


BOOL
xMBPortSerialPutByte( CHAR ucByte )
{
        //等待数据发送完成
        while((USART3->SR &(1<<6))==0){;}
        USART3->DR=ucByte;
    return TRUE;
}
BOOL
xMBPortSerialGetByte( CHAR * pucByte )
{
        //等待数据接受完成 SR  5位 如果改为 为 0 数据没有接收到 一直等待数据接收
        while((USART3->SR &(1<<5))==0){;}
        *pucByte=USART3->DR;
    return TRUE;
}

//USART3中断服务函数
void USART3_IRQHandler(void)
{
        if(USART3->SR&(1<<5))//接收中断
        {
                u8 data;
                prvvUARTRxISR();
                //清中断
                data=USART3->DR;
               
        }
        if(USART3->SR&(1<<7))//发送中断
        {
                prvvUARTTxReadyISR();
                //清中断
                USART3->DR=0x0000;
        }
       
}

/* ----------------------- Start implementation -----------------------------*/
BOOL
xMBPortTimersInit( USHORT usTim1Timerout50us )
{
       
        uint16_t psc = 0;
        psc = (uint16_t)((SystemCoreClock / 20000) - 1);
       
        //1.打开TIM4时钟
        RCC->APB1ENR |=(0x1<<2);
        //2.选择内部时钟
        TIM4->SMCR &=~(0x7<<0);
        //3.选择分频值
        TIM4->SC =psc-1;
        //4.写入自动重装载值
        TIM4->ARR =usTim1Timerout50us;
        //预装载使能
        TIM4->CR1 |=(0x1<<7);
        //5.选择计数方式 递增计数
        TIM4->CR1 &=~(0x1<<4);
        //6.关闭更新中断
        TIM4->DIER &=~(0x1<<0);
        //7.进入NVIC设置
        my_nvic_init(7-2,0,3,TIM4_IRQn);
        //8.关闭计数器使能
        TIM4->CR1 &=~(0x1<<0);
       
  return FALSE;
}


inline void
vMBPortTimersEnable(  )
{
    /* Enable the timer with the timeout passed to xMBPortTimersInit( ) */
        //打开更新中断
        TIM4->DIER |=(0x1<<0);
        TIM4->CNT=0;
        //打开计数器使能
        TIM4->CR1 |=(0x1<<0);
}

inline void
vMBPortTimersDisable(  )
{
    /* Disable any pending timers. */
        //关闭更新中断
        TIM4->DIER &=~(0x1<<0);
        TIM4->CNT=0;
        //关闭计数器使能
        TIM4->CR1 &=~(0x1<<0);
}

/* Create an ISR which is called whenever the timer has expired. This function
* must then call pxMBPortCBTimerExpired( ) to notify the protocol stack that
* the timer has expired.
*/
void prvvTIMERExpiredISR( void )
{
    ( void )pxMBPortCBTimerExpired(  );
}

void TIM4_IRQHandler(void)
{
        if((TIM4->DIER&(0x1<<0))!=0)
        {
                //清中断
               TIM4->SR &=~(1<<0);
                prvvTIMERExpiredISR();
        }


}  
QQ截图20190126162515.png
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-1-26
在线时间
13 小时
发表于 2019-1-26 16:31:07 | 显示全部楼层
飞天神猪 发表于 2019-1-26 16:29
八度大神  新人小白 第一次接触到modbus  按照你的移植步骤移植以后发送0A 04 00 01 00 01 61 71 串口助手 ...

用的是232通信
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-1-26
在线时间
13 小时
发表于 2019-1-26 16:54:01 | 显示全部楼层
飞天神猪 发表于 2019-1-26 16:29
八度大神  新人小白 第一次接触到modbus  按照你的移植步骤移植以后发送0A 04 00 01 00 01 61 71 串口助手 ...

串口初始化和定时器初始化返回值我返回的都是TURE 还是跟原来的一样
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2019-1-27 13:50:47 | 显示全部楼层
飞天神猪 发表于 2019-1-26 16:54
串口初始化和定时器初始化返回值我返回的都是TURE 还是跟原来的一样

单步跟踪一下看看
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-1-26
在线时间
13 小时
发表于 2019-1-28 10:22:46 | 显示全部楼层
初始化完成后先进入定时器中断,然后串口发送数据进入接收中断,接着进入如图的红框1的函数,随后进入发送中断 ,进入如图的函数中的红框2部分,最后进入定时器中断,结束。 问题是出在了红框2函数那一部分吗 ?
QQ截图.png
QQ截图20190126162515.png
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-1-26
在线时间
13 小时
发表于 2019-1-28 10:58:23 | 显示全部楼层
我用你的源码修改了一下    把USART2 修改成了USART3  其他的没动, 结果发送数据后进入串口中断后也进入了上图红框1的部分  后面进入定时中断就没反映了   也没有收到回发的数据, 我用的是407VGT6  按理说应该跟ZET6是兼容的吧   晶振分频那里改过了, 也不知道哪里出了问题  
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2019-1-30 12:59:19 | 显示全部楼层
飞天神猪 发表于 2019-1-28 10:58
我用你的源码修改了一下    把USART2 修改成了USART3  其他的没动, 结果发送数据后进入串口中断后也进入了 ...

初始化会有一次进入定时器中断的,这个没错,你定时器初始化的代码贴出来看看
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-1-26
在线时间
13 小时
发表于 2019-2-12 13:21:27 | 显示全部楼层
八度空间 发表于 2019-1-30 12:59
初始化会有一次进入定时器中断的,这个没错,你定时器初始化的代码贴出来看看

定时器初始化代码是你自己的 我没动过  我就用你的源码改的  就把串口号改了一下 其他的没动
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2019-2-20 20:01:59 | 显示全部楼层
飞天神猪 发表于 2019-2-12 13:21
定时器初始化代码是你自己的 我没动过  我就用你的源码改的  就把串口号改了一下 其他的没动

哦,那就奇怪了,你下载我的能跑啵
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-11-24
在线时间
3 小时
发表于 2019-2-28 20:40:57 | 显示全部楼层
shiqinghai 发表于 2016-6-14 16:35
搞定了,提供的工程里面没加void __aeabi_assert(const char * x1, const char * x2, int x3){}这段代码 ...

大神,能不能告诉我一下,开发板上怎么接线吗?
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2019-3-25
在线时间
6 小时
发表于 2019-3-26 08:53:36 | 显示全部楼层
我按照楼主的方法移植到精英版上,不知道为啥没返回数值,有大佬版帮忙看看吗

实验24 485实验.zip

6.81 MB, 下载次数: 82

回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2019-4-4 22:30:00 | 显示全部楼层
6Vision 发表于 2019-3-26 08:53
我按照楼主的方法移植到精英版上,不知道为啥没返回数值,有大佬版帮忙看看吗

不会吧,我项目中都用了很久了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2019-3-25
在线时间
6 小时
发表于 2019-4-11 21:08:06 | 显示全部楼层
八度空间 发表于 2019-4-4 22:30
不会吧,我项目中都用了很久了

谢谢大佬  已经调试好了 不知道大神可有主机程序 我项目是做一个主机 对多个从机
回复 支持 反对

使用道具 举报

7

主题

88

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2015-1-10
在线时间
69 小时
发表于 2019-4-12 09:25:43 | 显示全部楼层

感谢八度哥,庆幸我每一楼都看了一下。
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2019-4-21 11:39:52 | 显示全部楼层
6Vision 发表于 2019-4-11 21:08
谢谢大佬  已经调试好了 不知道大神可有主机程序 我项目是做一个主机 对多个从机

我用C#做的上位机主机,目前用着还没什么问题
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

8

主题

168

帖子

0

精华

高级会员

Rank: 4

积分
557
金钱
557
注册时间
2015-7-4
在线时间
104 小时
发表于 2019-4-22 16:21:14 | 显示全部楼层
好东西,顶起来
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2019-4-8
在线时间
5 小时
发表于 2019-4-23 11:41:20 | 显示全部楼层
mark!!!! 学习了!!
回复 支持 反对

使用道具 举报

3

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
319
金钱
319
注册时间
2018-5-26
在线时间
106 小时
发表于 2019-6-6 11:23:22 | 显示全部楼层
本帖最后由 SJL128549 于 2019-6-6 11:24 编辑

原子哥,把你的程序移植到F1上,返回值有错误。显示非法装载值,不知道怎么回事
微信图片_20190606112341.png
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2018-7-22
在线时间
13 小时
发表于 2019-6-7 22:26:36 | 显示全部楼层
有人往f103上移植过嘛?单步调试,ucRTUBuf数组能收到串口发来的数据,也能更新出往回发送的数,可是串口助手就是收不到呀,,,?
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2018-7-22
在线时间
13 小时
发表于 2019-6-8 13:26:12 | 显示全部楼层
高德辛 发表于 2019-6-7 22:26
有人往f103上移植过嘛?单步调试,ucRTUBuf数组能收到串口发来的数据,也能更新出往回发送的数,可是串口助 ...

接受引脚配置错误,已解决
回复 支持 反对

使用道具 举报

3

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
319
金钱
319
注册时间
2018-5-26
在线时间
106 小时
发表于 2019-6-11 11:04:36 | 显示全部楼层
高德辛 发表于 2019-6-8 13:26
接受引脚配置错误,已解决

你好,你在F1上移植对了吗?可不可以共享一下,我的一直返回数据错误
回复 支持 反对

使用道具 举报

0

主题

64

帖子

0

精华

高级会员

Rank: 4

积分
714
金钱
714
注册时间
2012-6-27
在线时间
69 小时
发表于 2019-6-13 12:01:56 | 显示全部楼层
学习一下
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-7-24
在线时间
13 小时
发表于 2019-7-27 15:05:39 | 显示全部楼层
学习了
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2019-4-25
在线时间
33 小时
发表于 2019-8-26 15:19:33 | 显示全部楼层
学习中,mark一哈!3KS楼主!
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2019-3-18
在线时间
35 小时
发表于 2019-11-15 17:54:54 | 显示全部楼层
高德辛 发表于 2019-6-7 22:26
有人往f103上移植过嘛?单步调试,ucRTUBuf数组能收到串口发来的数据,也能更新出往回发送的数,可是串口助 ...

你好,能分享一下F1的modbus程序吗。调了几天了串口助手都收不到从机的数据。谢谢
回复 支持 反对

使用道具 举报

4

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2019-5-9
在线时间
121 小时
发表于 2019-12-4 10:02:24 | 显示全部楼层
八度大神,
eMBInit( eMBMode eMode, UCHAR ucSlaveAddress, UCHAR ucPort, ULONG ulBaudRate, eMBParity eParity )
这个函数中的参数ucPort是什么意思阿,是串口几的意思吗?,我看您用的是串口2,但是这个参数写1也是可以正常读写,那这个参数是什么含义的?
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2019-12-8 14:23:28 | 显示全部楼层
吖基哈 发表于 2019-12-4 10:02
八度大神,
eMBInit( eMBMode eMode, UCHAR ucSlaveAddress, UCHAR ucPort, ULONG ulBaudRate, eMBParity  ...

这个就是串口号选择,我的程序在底层接口已经固定了,这个参数没用,随便写都可以
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

0

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
131
金钱
131
注册时间
2019-9-24
在线时间
33 小时
发表于 2019-12-12 09:44:32 | 显示全部楼层
赞               
回复 支持 反对

使用道具 举报

37

主题

148

帖子

0

精华

高级会员

Rank: 4

积分
967
金钱
967
注册时间
2017-1-4
在线时间
431 小时
发表于 2020-4-15 17:08:26 | 显示全部楼层
皇甫仁和 发表于 2016-10-10 20:30
第一,你需要注意你的代码中输入寄存器的起始地址:
#define REG_INPUT_START 0x0001
#define REG_INPU ...

你好,我用您的例子发现只能接收中断,而发送不数据
回复 支持 反对

使用道具 举报

37

主题

148

帖子

0

精华

高级会员

Rank: 4

积分
967
金钱
967
注册时间
2017-1-4
在线时间
431 小时
发表于 2020-4-16 18:15:16 | 显示全部楼层

大神,按照您的方法修改,中断只接收2个字节就不行了,也没有发送什么情况啊
回复 支持 反对

使用道具 举报

5

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2013-9-11
在线时间
39 小时
发表于 2020-4-26 08:40:21 | 显示全部楼层
ding!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-1-5
在线时间
21 小时
发表于 2020-5-14 14:38:07 | 显示全部楼层
大神为啥,我用你的程序,下载到探索者开发板,发送0A 04 00 01 00 01 61 71,为啥一直没有数据返回呢
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-1-5
在线时间
21 小时
发表于 2020-5-14 14:38:53 | 显示全部楼层
我啥也没有改呀,奇怪,对了一下,串口啥的都是对的呀
回复 支持 反对

使用道具 举报

49

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5246
金钱
5246
注册时间
2012-8-25
在线时间
1024 小时
发表于 2020-5-14 15:11:17 | 显示全部楼层
简直太好了
回复 支持 1 反对 0

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-1-5
在线时间
21 小时
发表于 2020-5-14 22:37:45 | 显示全部楼层
亲测,源码确实是可以用,我之前是485接口坏了,接在232上可以用,挺好的,谢谢版主啦!!!
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2020-5-20 15:07:33 | 显示全部楼层
电子过客 发表于 2020-4-16 18:15
大神,按照您的方法修改,中断只接收2个字节就不行了,也没有发送什么情况啊

什么情况
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2020-5-20 15:11:43 | 显示全部楼层
木风原 发表于 2020-5-14 14:38
大神为啥,我用你的程序,下载到探索者开发板,发送0A 04 00 01 00 01 61 71,为啥一直没有数据返回呢

串口助手是否发送了新行?
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2016-6-14
在线时间
21 小时
发表于 2020-6-21 19:44:14 | 显示全部楼层
谢谢八度大神!
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2016-6-14
在线时间
21 小时
发表于 2020-6-21 19:44:51 | 显示全部楼层
有没有在STM32F7上移植freemodbus的 源代码或者例子,非常感谢!
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2020-7-16 08:51:18 | 显示全部楼层
qxd04 发表于 2020-6-21 19:44
有没有在STM32F7上移植freemodbus的 源代码或者例子,非常感谢!

移植的时候,串口和定时器部分搞定就可以了,这两个和平台有关,其他都是软件层的了,可以参考原子哥的串口和定时器实验即可
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2020-8-6
在线时间
4 小时
发表于 2020-8-8 17:42:17 | 显示全部楼层
Modbus还有这咱写法。非常好。要好好学习。
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2020-8-8
在线时间
13 小时
发表于 2020-8-16 16:54:53 | 显示全部楼层
皇甫仁和 发表于 2016-10-8 21:18
,附件是我修改后的文件,根据自己的硬件需要更改你所用的串口,同时我将波特率改为9600,你再试一试看是 ...

文件下载后进行编译sys.c中出现错误还有几处错误,这样下载的开发板能正常modbusrtu通讯吗?

错误截图

错误截图

错误截图2

错误截图2

错误截图3

错误截图3
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2020-8-23 11:30:17 | 显示全部楼层
15064804630 发表于 2020-8-16 16:54
文件下载后进行编译sys.c中出现错误还有几处错误,这样下载的开发板能正常modbusrtu通讯吗?

编译没错误即可
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

5

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2019-10-7
在线时间
36 小时
发表于 2020-12-3 10:26:40 | 显示全部楼层
Thisway 发表于 2018-10-5 13:39
你好,怎么用这个发送自己想要的数据饿,比如说一个温度什么的

请问这个问题现在解决了吗?
回复 支持 反对

使用道具 举报

5

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2019-10-7
在线时间
36 小时
发表于 2020-12-3 10:33:45 | 显示全部楼层
请问八度大神,我按你的方法,成功在探索者开发板上移植了Freemodbus,调试成功了,现在就是不会把它应用在工程中,大神能不能写一个modbus在实际中应用的例子。谢谢
回复 支持 反对

使用道具 举报

5

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2019-10-7
在线时间
36 小时
发表于 2020-12-16 11:24:06 | 显示全部楼层
感谢大佬分享。
回复 支持 反对

使用道具 举报

5

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2019-10-7
在线时间
36 小时
发表于 2020-12-16 15:31:13 | 显示全部楼层
cmj2836140 发表于 2017-6-21 10:20
可以了,参考了这个帖子解决了,不知道是什么奇怪的问题
http://blog.sina.com.cn/s/blog_1310779960102 ...

我也遇到了同样的问题,根据这个帖子的方法成功解决了问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 10:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表