OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3626|回复: 7

ucosiii 移植lwip和modbus通讯 不插网口 485通讯不上

[复制链接]

37

主题

148

帖子

0

精华

高级会员

Rank: 4

积分
967
金钱
967
注册时间
2017-1-4
在线时间
431 小时
发表于 2020-4-22 14:44:27 | 显示全部楼层 |阅读模式
1金钱
用的ucosiii lwip例程,增加了485的modbus通讯功能发现
1 单独在modbus下485能通讯,在ucosiii下 有lwip通讯,和485通讯
时候不插网线的时候,上电测试485不能通讯,插上网线上电时候485就能通讯。这是拔下网线485还能通讯很奇怪的问题

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2020-4-23 01:38:12 | 显示全部楼层
仿真找下问题,看看是不是卡死在某些地方导致这个问题的?
回复

使用道具 举报

37

主题

148

帖子

0

精华

高级会员

Rank: 4

积分
967
金钱
967
注册时间
2017-1-4
在线时间
431 小时
 楼主| 发表于 2020-4-23 09:48:17 | 显示全部楼层
正点原子 发表于 2020-4-23 01:38
仿真找下问题,看看是不是卡死在某些地方导致这个问题的?

//重定义fputc函数
仿真卡在这个函数里,但是这个函数功能上没有用,打印有关的都屏蔽掉了
int fputc(int ch, FILE *f)
{        
        while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
        USART1->DR = (u8) ch;      
        return ch;
}

#endif

还有就是,一开始的时候485中断设置断点 能进入断点。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2020-4-24 01:45:56 | 显示全部楼层
电子过客 发表于 2020-4-23 09:48
//重定义fputc函数
仿真卡在这个函数里,但是这个函数功能上没有用,打印有关的都屏蔽掉了
int fputc( ...

没有初始化串口?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

37

主题

148

帖子

0

精华

高级会员

Rank: 4

积分
967
金钱
967
注册时间
2017-1-4
在线时间
431 小时
 楼主| 发表于 2020-4-24 13:14:56 | 显示全部楼层

初始化了,因为不初始化,整个UCOS系统都跑步起来
回复

使用道具 举报

37

主题

148

帖子

0

精华

高级会员

Rank: 4

积分
967
金钱
967
注册时间
2017-1-4
在线时间
431 小时
 楼主| 发表于 2020-5-12 17:56:04 | 显示全部楼层
本帖最后由 电子过客 于 2020-5-12 18:12 编辑
电子过客 发表于 2020-4-24 13:14
初始化了,因为不初始化,整个UCOS系统都跑步起来

之前也是用UCOSIII做程序,两个串口通讯设备,两个设备都接UCOSIII才能跑起来,但是其中一个串口不接设备,就进入硬件中断错误,不知道情况出错哪里?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2020-5-13 01:12:55 | 显示全部楼层
电子过客 发表于 2020-4-23 09:48
//重定义fputc函数
仿真卡在这个函数里,但是这个函数功能上没有用,打印有关的都屏蔽掉了
int fputc( ...

看寄存器值, 是不是串口配置被异常修改了?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

37

主题

148

帖子

0

精华

高级会员

Rank: 4

积分
967
金钱
967
注册时间
2017-1-4
在线时间
431 小时
 楼主| 发表于 2020-5-20 14:01:26 | 显示全部楼层
大家好我有仿真测试了下
初始化的时候屏蔽

    //uart_init(115200);        //串口波特率设置
  // usmart_dev.init(84);     //初始化USMART
         

还是 仿真卡在这个函数里,但是这个函数功能上没有用,打印有关的都屏蔽掉了
int fputc(int ch, FILE *f)
{        
        while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
        USART1->DR = (u8) ch;      
        return ch;
}

#endif

另外系统就在
    OS_CRITICAL_ENTER();//进入临界区
    //创建开始任务
    OSTaskCreate((OS_TCB     * )&StartTaskTCB,           //任务控制块
                 (CPU_CHAR    * )"start task",               //任务名字
                 (OS_TASK_PTR )start_task,             //任务函数
                 (void        * )0,                             //传递给任务函数的参数
                 (OS_PRIO      )START_TASK_PRIO,     //任务优先级
                 (CPU_STK   * )&START_TASK_STK[0],    //任务堆栈基地址
                 (CPU_STK_SIZE)START_STK_SIZE/10,    //任务堆栈深度限位
                 (CPU_STK_SIZE)START_STK_SIZE,        //任务堆栈大小
                 (OS_MSG_QTY  )0,                    //任务内部消息队列能够接收的最大消息数目,为0时禁止接收消息
                 (OS_TICK      )0,                    //当使能时间片轮转时的时间片长度,为0时为默认长度,
                 (void       * )0,                    //用户补充的存储区
                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, //任务选项
                 (OS_ERR     * )&err);                //存放该函数错误时的返回值
    OS_CRITICAL_EXIT();    //退出临界区     
    OSStart(&err);         //开启UCOS

在退出临界数值开启UCOS 之前, 也就是没有启动起来 就跳入 int fputc(int ch, FILE *f) 函数

回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 05:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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