楼主: xiaoming1021

MC9S08DZ60串口问题(已解决!)

[复制链接]

该用户从未签到

30

主题

122

帖子

2

高级会员

Rank: 4

积分
777
最后登录
2023-9-6
发表于 2015-7-23 11:20:04 | 显示全部楼层
查一下堆栈大小,是不是溢出了
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
 楼主| 发表于 2015-7-23 12:07:32 | 显示全部楼层
figc53 发表于 2015-7-23 11:20
查一下堆栈大小,是不是溢出了

如果发送堆栈溢出怎么解决?
回复 支持 反对

使用道具 举报

该用户从未签到

30

主题

122

帖子

2

高级会员

Rank: 4

积分
777
最后登录
2023-9-6
发表于 2015-7-23 13:42:22 | 显示全部楼层
看你的代码,往PC发送字节55,并没有用到发送缓冲器,发没有使用堆栈;LEN的值是多少,RxBuf是多大的数组?
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
 楼主| 发表于 2015-7-23 13:52:45 | 显示全部楼层
figc53 发表于 2015-7-23 13:42
看你的代码,往PC发送字节55,并没有用到发送缓冲器,发没有使用堆栈;LEN的值是多少,RxBuf是多大的数组? ...

UINT8 Rx_Buffer[12];
我将接收的数据放到这里,然后在发出去。发到大概几百次就会死掉。
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
 楼主| 发表于 2015-7-23 13:55:49 | 显示全部楼层
figc53 发表于 2015-7-23 13:42
看你的代码,往PC发送字节55,并没有用到发送缓冲器,发没有使用堆栈;LEN的值是多少,RxBuf是多大的数组? ...

  if(SCI1_TxMsgIndex < (SCI1_TxMsgLength))
    {
        SCI1S1;
        SCI1D = Tx_Buffer[SCI1_TxMsgIndex];   
        SCI1_TxMsgIndex++;
      
    }
SCI1_TxMsgIndex=12;
发送大概这样
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
 楼主| 发表于 2015-7-23 13:57:13 | 显示全部楼层
figc53 发表于 2015-7-23 13:42
看你的代码,往PC发送字节55,并没有用到发送缓冲器,发没有使用堆栈;LEN的值是多少,RxBuf是多大的数组? ...

MC9S08DZ60在哪里可以更改堆栈的大小
回复 支持 反对

使用道具 举报

该用户从未签到

30

主题

122

帖子

2

高级会员

Rank: 4

积分
777
最后登录
2023-9-6
发表于 2015-7-23 14:11:41 | 显示全部楼层
用了哪个版本的CW
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
 楼主| 发表于 2015-7-23 14:21:36 | 显示全部楼层
版本5.9.0
我尝试PC串口调试助手快速发送就会死的很快,发送间隔长一点就会很长时间才会死。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2015-7-23 15:12:56 | 显示全部楼层
    程序问题,按下面的改试试。把下面的while改为if
    while(SCI1S1_RDRF)   
             RxBuf[RxIndex]=SCI1D;
    下面的改为
    while(1)
    {
        if(SCI1S1_TDRE==0)
        {
            SCI1D=0x55;
        }
        DELAY(100);
    }
    while(SCI1S1_TDRE) {

              SCI1S1_TDRE=0;
             
              DELAY(100);

              SCI1D=0x55;
       
          }/
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    74

    主题

    266

    帖子

    0

    高级会员

    Rank: 4

    积分
    747
    最后登录
    2023-5-24
     楼主| 发表于 2015-7-23 16:00:11 | 显示全部楼层
    安 发表于 2015-7-23 15:12
    程序问题,按下面的改试试。把下面的while改为if
    while(SCI1S1_RDRF)   
             RxBuf[RxIndex]=SCI1D;

    我将MCU的发送数据直接放到接收中断就可以快速的收发。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-3 01:18 , Processed in 0.099336 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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